Skip to content

Workspace Management

Manage workspace settings, team members, and invitations.

Full name: campaignstack_get_workspace

workspace:read Read-only Idempotent

Read one workspace: its name, the company behind it, industry, and the settings that shape outreach. Call this when the user asks what a workspace is set up to do, or before changing a setting so the current value can be read back to them. campaignstack_whoami returns the workspaceId. The playbook and the exclusion list are not here: they have their own tools, campaignstack_get_playbook and campaignstack_get_exclusions.

NameTypeRequiredDefaultDescription
workspaceIdstringYesWorkspace ID. REQUIRED for a user key (csu_), which spans every workspace you belong to; omitted for a workspace key (cs_), which is bound to one and ignores this argument. campaignstack_whoami reports which kind of key you are holding and, for a user key, the workspaces it can reach. (min length: 1)

Full name: campaignstack_update_workspace

workspace:write

Update workspace settings. Only provided fields are updated. Call this when the user asks to change the company name, website, industry, offer grounding, or playbook sections. offerContext is the factual company/offer grounding injected into every AI craft (pass an empty string to clear it). capabilities describes what the SYSTEM behind this workspace can detect and do (signal detection, automated actions, integrations), as opposed to what it sells: it is injected into AI reply crafts only, so the agent can recognise when a lead describes a problem the product solves. Keep it short and factual; it is never used as a pitch list. Pass an empty string to clear it. playbookSections is the playbook itself, one field per section, each with its own hard character cap: a write over a cap is rejected, so shorten rather than retry. It does not touch team membership: campaignstack_invite_member does that. Read all current values via campaignstack_get_playbook.

NameTypeRequiredDefaultDescription
workspaceIdstringYesWorkspace ID. REQUIRED for a user key (csu_), which spans every workspace you belong to; omitted for a workspace key (cs_), which is bound to one and ignores this argument. campaignstack_whoami reports which kind of key you are holding and, for a user key, the workspaces it can reach. (min length: 1)
namestringNo(min length: 1)
companyNamestringNo
companyWebsiteUrlstringNo
industrystringNo
offerContextstringNo
capabilitiesstringNo
outreachIntentsobject[]NoAn UNRANKED menu of acceptable outcomes for this outreach. Answers ‘why are we writing to these people’: a message with no stated purpose reads as a compliment plus an open question. The craft picks the outcome this reader and this thread can plausibly give and says the reason in its own words, and it switches when the lead’s own words open another door, so order carries no meaning and listing several is how a non-buyer still gets a relevant message. Resolution is workspace then campaign then workflow, and the narrowest non-empty list REPLACES the wider ones rather than merging, so setting it here overrides the level above. Pass an empty array to clear this level and fall back.
sectionsobjectNoThe workspace playbook, one field per section. Only the fields you pass are changed. Each field has a target length and a HARD character cap; a write over the cap is REJECTED, not truncated. Write to the target, not the cap: identity (aim for about 400, max 1200, sent on every message): who we are, positioning, what makes us different; voice (aim for about 400, max 1200, sent on every message): rules that survive any voice: what to answer first, one ask per message, length caps. Never adjectives about tone, which get written into the drafts; angles (aim for about 1000, max 3000, sent on messages we send first): reasons to reach out that land, and the levers that persuade; objections (aim for about 2000, max 6000, sent on replies, after they have written back): what people push back with, and the real answers; boundaries (aim for about 500, max 1500, sent on every message): topics to avoid, claims never to make. Each section is model-facing text the model reads verbatim under its own heading: explanations of how the field works belong in the interface, not in the field, and a section must stand alone rather than refer to another one. Sections are selected per message, so a long objections list costs a first message nothing. Do NOT restate the offer, the personas or the campaign goal here: all three already reach the prompt from structured data, and a second copy can only contradict the first.

Full name: campaignstack_list_members

workspace:read Read-only Idempotent

List the people in a workspace with their role (owner, admin or member), name and email. Call this when the user asks who is on the team, or to find the memberId that campaignstack_update_member_role and campaignstack_remove_member need. People who were invited but have not accepted are not members yet: campaignstack_list_invitations has those.

NameTypeRequiredDefaultDescription
workspaceIdstringYesWorkspace ID. REQUIRED for a user key (csu_), which spans every workspace you belong to; omitted for a workspace key (cs_), which is bound to one and ignores this argument. campaignstack_whoami reports which kind of key you are holding and, for a user key, the workspaces it can reach. (min length: 1)

Full name: campaignstack_update_member_role

workspace:write

Set a member’s role to ‘member’. Call this only when the user names the person and says to demote them; name them back before calling. It cannot grant admin or ownership: that needs the workspace settings UI. Use campaignstack_list_members to find member IDs.

NameTypeRequiredDefaultDescription
workspaceIdstringYesWorkspace ID. REQUIRED for a user key (csu_), which spans every workspace you belong to; omitted for a workspace key (cs_), which is bound to one and ignores this argument. campaignstack_whoami reports which kind of key you are holding and, for a user key, the workspaces it can reach. (min length: 1)
memberIdstringYes(min length: 1)
rolememberYesOnly “member” can be set via MCP

Full name: campaignstack_remove_member

workspace:write Destructive

Remove someone from a workspace. They lose access to everything in it at once, including any assistant they connected to it, and nothing they created is deleted. Call this only when the user names the person and says to remove them. Owners and admins cannot be removed here: that is done in CampaignStack under workspace settings. Use campaignstack_list_members to find the memberId.

NameTypeRequiredDefaultDescription
workspaceIdstringYesWorkspace ID. REQUIRED for a user key (csu_), which spans every workspace you belong to; omitted for a workspace key (cs_), which is bound to one and ignores this argument. campaignstack_whoami reports which kind of key you are holding and, for a user key, the workspaces it can reach. (min length: 1)
memberIdstringYes(min length: 1)

Full name: campaignstack_list_invitations

workspace:read Read-only Idempotent

List invitations that have been sent and not yet accepted, with the email, the role offered and when it was sent. Call this when the user asks who has been invited, or after campaignstack_invite_member to confirm one is pending. Accepted invitations are gone from this list and the person is in campaignstack_list_members instead.

NameTypeRequiredDefaultDescription
workspaceIdstringYesWorkspace ID. REQUIRED for a user key (csu_), which spans every workspace you belong to; omitted for a workspace key (cs_), which is bound to one and ignores this argument. campaignstack_whoami reports which kind of key you are holding and, for a user key, the workspaces it can reach. (min length: 1)

Full name: campaignstack_invite_member

workspace:write Destructive

Invite someone to the workspace by email as a ‘member’ (admin requires the workspace settings UI). An invitation email sends automatically as soon as this call succeeds, so confirm the address with the user first. Expires after 7 days; cancel early with campaignstack_revoke_invitation.

NameTypeRequiredDefaultDescription
workspaceIdstringYesWorkspace ID. REQUIRED for a user key (csu_), which spans every workspace you belong to; omitted for a workspace key (cs_), which is bound to one and ignores this argument. campaignstack_whoami reports which kind of key you are holding and, for a user key, the workspaces it can reach. (min length: 1)
emailstringYes
rolememberYesOnly “member” invitations can be created via MCP

Full name: campaignstack_revoke_invitation

workspace:write Destructive

Cancel an invitation that has not been accepted. The link in the email stops working straight away and no message is sent to the person. Call this when the user asks to cancel or withdraw an invitation; use campaignstack_list_invitations to find the invitationId. It does nothing to someone who already joined, who is removed with campaignstack_remove_member.

NameTypeRequiredDefaultDescription
workspaceIdstringYesWorkspace ID. REQUIRED for a user key (csu_), which spans every workspace you belong to; omitted for a workspace key (cs_), which is bound to one and ignores this argument. campaignstack_whoami reports which kind of key you are holding and, for a user key, the workspaces it can reach. (min length: 1)
invitationIdstringYes(min length: 1)