Skip to content

get_workspace_context

Read the VibeSell workspace

Read · mcpIdempotent

The first call of a conversation. It says which step of the journey the workspace is on and everything already on record: the offer, the target and its filters, the playbook, the sizing, the sending domains, the sequences, the campaign, the lead credits and the latest decisions.

Description the model readsSent as is in tools/list.
Read where the user's VibeSell workspace stands: its journey step, the offer they sell, the ideal customer profile (ICP) and its lead filters, the playbook, the sending capacity, the chosen sending domains, the email sequences, the campaign, the lead credits and the latest decisions. Call it first, to know what is already on record.

The user says

Where am I with VibeSell?

tools/call · Arguments the assistant sends
{
"name": "get_workspace_context",
"arguments": {}
}

This tool takes no arguments. {}

Input schema
{
"type": "object",
"properties": {}
}

Result kindworkspace

kind"workspace"
stagestring

Where the workspace stands, in words.

phasestring

The workspace phase code.

stepobject

The journey step, as the VibeSell app numbers it.

  • index integer — 1-based, the step the VibeSell app shows.
  • total integer
  • label string
subscriptionActiveboolean
briefobject | null

What the user sells, as saved in VibeSell. Null until written.

  • whatIsSold string
  • problemSolved string
  • proof string
  • constraints string
targetobject | null

The ideal customer profile saved in VibeSell. Null until written.

  • segment string
  • companyProfile string
  • champion string
  • trigger string
  • disqualifiers string
  • filters object[] — The lead filters saved for this target.
playbookobject | null

The go-to-market playbook. Null until written.

  • angles string[]
  • cadence string
  • targetMeetingsPerMonth integer
sizingobject | null

The sending capacity computed for the campaign. Null until computed.

  • emailsPerDay integer
  • mailboxes integer
  • domains integer
  • emailsPerMailboxPerDay integer
  • confirmed boolean — True once the user said yes to THIS sizing.
  • outdated boolean — True when a later change made this sizing no longer apply.
  • fleetInPlace boolean — True when the domains and mailboxes already set up carry this sizing.
sendingDomainsobject[]

The sending domains the user chose, bought or not yet.

  • name string
  • mailboxes integer — The mailboxes asked for on it.
  • preWarmed boolean — True for a domain taken from the warmed shelf.
  • status "bought" | "being_bought" | "chosen" — bought: it is theirs and stays so. being_bought: the order holds it, not bought yet. chosen: kept, nothing ordered for it yet.
mailboxesobject

The mailboxes set up for this workspace, removed ones left out.

  • total integer
  • ready integer — Mailboxes ready to send, or sending in the campaign.
  • byState object[] — The mailboxes counted under the words the VibeSell app shows.
sequencesobject[]
  • name string
  • approved boolean
  • steps object[]
campaignobject | null

The live campaign, or the last one when none is live. Null before any.

  • name string
  • state string
  • stateLabel string
  • live boolean — False once it completed or was stopped.
  • stats object | null — The last counters read from the provider. Null until a first reading.
leadsImportedinteger
leadCreditsobject
  • remaining integer
  • limit integer
  • periodEnd string
decisionsobject[]

The latest decisions on record, most recent first.

  • kind string
  • summary string
  • at string
recommendedPlanstring | null
appUrlstring

Where the user continues in VibeSell.

Output schema
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "workspace"
},
"stage": {
"type": "string",
"description": "Where the workspace stands, in words."
},
"phase": {
"type": "string",
"description": "The workspace phase code."
},
"step": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "1-based, the step the VibeSell app shows."
},
"total": {
"type": "integer"
},
"label": {
"type": "string"
}
},
"required": ["index", "total", "label"],
"additionalProperties": false,
"description": "The journey step, as the VibeSell app numbers it."
},
"subscriptionActive": {
"type": "boolean"
},
"brief": {
"anyOf": [
{
"type": "object",
"properties": {
"whatIsSold": {
"type": "string"
},
"problemSolved": {
"type": "string"
},
"proof": {
"type": "string"
},
"constraints": {
"type": "string"
}
},
"required": ["whatIsSold", "problemSolved", "proof", "constraints"],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "What the user sells, as saved in VibeSell. Null until written."
},
"target": {
"anyOf": [
{
"type": "object",
"properties": {
"segment": {
"type": "string"
},
"companyProfile": {
"type": "string"
},
"champion": {
"type": "string"
},
"trigger": {
"type": "string"
},
"disqualifiers": {
"type": "string"
},
"filters": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "What the filter is about, e.g. 'Company based in'."
},
"values": {
"type": "array",
"items": {
"type": "string"
},
"description": "The values, in words."
}
},
"required": ["label", "values"],
"additionalProperties": false
},
"description": "The lead filters saved for this target."
}
},
"required": [
"segment",
"companyProfile",
"champion",
"trigger",
"disqualifiers",
"filters"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "The ideal customer profile saved in VibeSell. Null until written."
},
"playbook": {
"anyOf": [
{
"type": "object",
"properties": {
"angles": {
"type": "array",
"items": {
"type": "string"
}
},
"cadence": {
"type": "string"
},
"targetMeetingsPerMonth": {
"type": "integer"
}
},
"required": ["angles", "cadence", "targetMeetingsPerMonth"],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "The go-to-market playbook. Null until written."
},
"sizing": {
"anyOf": [
{
"type": "object",
"properties": {
"emailsPerDay": {
"type": "integer"
},
"mailboxes": {
"type": "integer"
},
"domains": {
"type": "integer"
},
"emailsPerMailboxPerDay": {
"type": "integer"
},
"confirmed": {
"type": "boolean",
"description": "True once the user said yes to THIS sizing."
},
"outdated": {
"type": "boolean",
"description": "True when a later change made this sizing no longer apply."
},
"fleetInPlace": {
"type": "boolean",
"description": "True when the domains and mailboxes already set up carry this sizing."
}
},
"required": [
"emailsPerDay",
"mailboxes",
"domains",
"emailsPerMailboxPerDay",
"confirmed",
"outdated",
"fleetInPlace"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "The sending capacity computed for the campaign. Null until computed."
},
"sendingDomains": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"mailboxes": {
"type": "integer",
"description": "The mailboxes asked for on it."
},
"preWarmed": {
"type": "boolean",
"description": "True for a domain taken from the warmed shelf."
},
"status": {
"type": "string",
"enum": ["bought", "being_bought", "chosen"],
"description": "bought: it is theirs and stays so. being_bought: the order holds it, not bought yet. chosen: kept, nothing ordered for it yet."
}
},
"required": ["name", "mailboxes", "preWarmed", "status"],
"additionalProperties": false
},
"description": "The sending domains the user chose, bought or not yet."
},
"mailboxes": {
"type": "object",
"properties": {
"total": {
"type": "integer"
},
"ready": {
"type": "integer",
"description": "Mailboxes ready to send, or sending in the campaign."
},
"byState": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"count": {
"type": "integer"
}
},
"required": ["label", "count"],
"additionalProperties": false
},
"description": "The mailboxes counted under the words the VibeSell app shows."
}
},
"required": ["total", "ready", "byState"],
"additionalProperties": false,
"description": "The mailboxes set up for this workspace, removed ones left out."
},
"sequences": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"approved": {
"type": "boolean"
},
"steps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"day": {
"type": "integer",
"description": "Days after the first email that this one leaves."
},
"subject": {
"type": "string"
},
"body": {
"type": "string"
}
},
"required": ["day", "subject", "body"],
"additionalProperties": false
}
}
},
"required": ["name", "approved", "steps"],
"additionalProperties": false
}
},
"campaign": {
"anyOf": [
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"state": {
"type": "string"
},
"stateLabel": {
"type": "string"
},
"live": {
"type": "boolean",
"description": "False once it completed or was stopped."
},
"stats": {
"anyOf": [
{
"type": "object",
"properties": {
"sent": {
"type": "integer"
},
"replies": {
"type": "integer"
},
"opens": {
"type": "integer"
},
"bounces": {
"type": "integer"
},
"measuredAt": {
"type": "string",
"description": "When the provider's counters were last read."
}
},
"required": ["sent", "replies", "opens", "bounces", "measuredAt"],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "The last counters read from the provider. Null until a first reading."
}
},
"required": ["name", "state", "stateLabel", "live", "stats"],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "The live campaign, or the last one when none is live. Null before any."
},
"leadsImported": {
"type": "integer"
},
"leadCredits": {
"type": "object",
"properties": {
"remaining": {
"type": "integer"
},
"limit": {
"type": "integer"
},
"periodEnd": {
"type": "string"
}
},
"required": ["remaining", "limit", "periodEnd"],
"additionalProperties": false
},
"decisions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"summary": {
"type": "string"
},
"at": {
"type": "string"
}
},
"required": ["kind", "summary", "at"],
"additionalProperties": false
},
"description": "The latest decisions on record, most recent first."
},
"recommendedPlan": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"appUrl": {
"type": "string",
"description": "Where the user continues in VibeSell."
}
},
"required": [
"kind",
"stage",
"phase",
"step",
"subscriptionActive",
"brief",
"target",
"playbook",
"sizing",
"sendingDomains",
"mailboxes",
"sequences",
"campaign",
"leadsImported",
"leadCredits",
"decisions",
"recommendedPlan",
"appUrl"
],
"additionalProperties": false
}
  • Free and read-only: nothing is charged and nothing changes.
  • The live campaign line carries the campaign id that stop_campaign and resume_campaign take.