Skip to main content

workspace

workspace.create

Create Workspace

Effects: write

Create a new team workspace owned by the calling user. Returns its id and slug — pass either to workspace.switch to start working inside it. slug is derived from name when omitted. NOT idempotent: calling twice with the same name yields two workspaces (the second gets a -1 slug suffix), so check workspace.list first if the workspace may already exist. A user may own at most 10 team workspaces.

Arguments

ArgumentTypeRequiredDescription
descriptionstringnoOptional workspace description.
namestringyesWorkspace display name, e.g. 'TUI BLUE'.
slugstringnoURL-friendly slug: lowercase letters, digits and single dashes between them (e.g. 'tui-blue'), max 100 chars. Omit to derive one from name (lowercased, spaces to dashes, uniqueness suffix added when taken). An explicit slug is NOT auto-uniquified — a collision is an error.

workspace.current

Current Workspace

Effects: read

Return the workspace this MCP API key is currently routed to, with the caller's role inside it. Use this to confirm context before/after workspace.switch.

Arguments

No arguments.

workspace.desktops

Connected Desktops

Effects: read

List the Claude Code sessions currently connected to this workspace over a channel. Each one can be handed a task by name. Use this before assigning work to a claude_channels agent when more than one session may be open, so the task goes to the machine you mean.

Arguments

No arguments.

workspace.invite

Invite To Workspace

Effects: write

Invite a person to the active workspace (or one named by workspace_id) by email address. Requires owner or admin role. The backend emails them a join link and the invite expires in 7 days; the same link is returned as invite_url so you can pass it on yourself. Inviting an address that already has an account works too — they see the invitation in the app once logged in. Use workspace.invites to see what is still pending.

Arguments

ArgumentTypeRequiredDescription
emailstringyesEmail address to invite.
rolestringnoRole to grant on acceptance. OMIT to invite as a regular member. 'admin' additionally lets them manage members and workspace settings. (one of member, admin)
workspace_idintegernoNumeric workspace id to invite into. Omit to target the currently-routed workspace (workspace.current).

workspace.invite_revoke

Revoke Workspace Invite

Effects: delete

Revoke a pending invitation to the active workspace (or one named by workspace_id) so its link stops working. Requires owner or admin role. Get the invite id from workspace.invites. An invite that is already accepted, expired or revoked answers not_found.

Arguments

ArgumentTypeRequiredDescription
invite_idintegeryesId of the pending invite, from workspace.invites.
workspace_idintegernoNumeric workspace the invite belongs to. Omit to target the currently-routed workspace (workspace.current).

workspace.invites

List Workspace Invites

Effects: read

List the invitations to the active workspace (or one named by workspace_id) that are still pending — who was invited, as what role, and when the invite expires. Requires owner or admin role. Join links are not returned; revoke with workspace.invite_revoke or re-send with workspace.invite.

Arguments

ArgumentTypeRequiredDescription
workspace_idintegernoNumeric workspace id to read. Omit to target the currently-routed workspace (workspace.current).

workspace.list

List Workspaces

Effects: read

List every workspace the caller is a member of, with is_current marking the workspace this MCP key is currently routed to. Pair with workspace.switch to change the active workspace without reconnecting.

Arguments

No arguments.

workspace.member_remove

Remove Workspace Member

Effects: delete

Remove a person from the active workspace (or one named by workspace_id), and revoke the channel shares they had granted into it. Requires owner or admin role. Name them by email, username or numeric user id — workspace.members lists them. The workspace owner cannot be removed.

Arguments

ArgumentTypeRequiredDescription
memberstringyesWho to remove: a member's email, username, or numeric user id. Call workspace.members to see who is in the workspace.
workspace_idintegernoNumeric workspace id. Omit to target the currently-routed workspace (workspace.current).

workspace.member_update

Update Workspace Member

Effects: write

Change a member's role in the active workspace (or one named by workspace_id). Requires owner or admin role. Name the person by email, username or numeric user id — workspace.members lists them. Promoting to 'admin' also grants member management; ownership is moved separately and cannot be set here.

Arguments

ArgumentTypeRequiredDescription
memberstringyesWho to change: a member's email, username, or numeric user id. Call workspace.members to see who is in the workspace.
rolestringyesNew role for this member. (one of member, admin)
workspace_idintegernoNumeric workspace id. Omit to target the currently-routed workspace (workspace.current).

workspace.members

Workspace Members

Effects: read

List the members of the current workspace with their roles, so you know who can be assigned a task. Set include_agents to also list the workspace's AI agents, which can hold tasks too.

Arguments

ArgumentTypeRequiredDescription
include_agentsbooleannoAlso list this workspace's AI agents (default: true). Agents can be task assignees just like people.

workspace.switch

Switch Workspace

Effects: write

Switch the workspace THIS MCP session works in. Pass exactly one of workspace_id or slug (find them via workspace.list). Takes effect on the very next tool call — no MCP reconnect, no new API key. The switch is scoped to the current MCP session (the response says scope: session): other sessions using the same API key are not affected, and the key's own workspace stays the default for new sessions. A client that sends no MCP session id CANNOT switch — the call is refused rather than re-pointing the API key, because that would move every session that starts on the key from then on. Use a key belonging to the target workspace instead. Sequential checkpoint: do not parallelize tool calls across a switch — calls already in flight when the switch commits will run against the previous workspace. Keys created with workspace_locked=true refuse to switch in either scope (they are pinned to their workspace); use a key belonging to the target workspace instead.

Arguments

ArgumentTypeRequiredDescription
slugstringnoWorkspace slug to switch to. Resolved within the caller's memberships, so cross-tenant slug collisions are not possible. Mutually exclusive with workspace_id.
workspace_idintegernoNumeric workspace id to switch to. Mutually exclusive with slug.

workspace.update

Update Workspace

Effects: write

Edit the active workspace (or one named by workspace_id): its name, description, logo_url, and/or settings. Requires ADMIN role in that workspace. settings is MERGED, not replaced — send only the keys you want to change (e.g. {"translation_glossary": "..."} or {"translation_tts_provider": "cartesia"}); other keys are left intact. Omit workspace_id to target the workspace this MCP key is currently routed to (see workspace.current).

Arguments

ArgumentTypeRequiredDescription
descriptionstringnoNew workspace description. Omit to leave unchanged.
logo_urlstringnoNew workspace logo URL. Omit to leave unchanged.
namestringnoNew workspace name. Omit to leave unchanged.
settingsobjectnoPartial settings object, MERGED into the existing workspace.settings JSONB (PATCH semantics). Only the keys you send change. Common keys: translation_glossary, translation_mt_provider, translation_tts_provider, translation_tts_voice, translation_languages, translation_default_lang.
workspace_idintegernoNumeric workspace id to update. Omit to target the currently-routed workspace (workspace.current).