Skip to content

Workspace actions

Workspace actions

The workspace plane is the customer's own Cbox account, above every environment it owns: projects, environments (and their custom domains), the team, workspace keys and the keys of each environment. It is served on the platform root and resolves no environment.

Every row below is one action, reached through four doors that run the same code, with the same authorization, validation, approvals and Audit log entry: the console, the REST API, the MCP server and the cbox CLI. See Actions for how that works and Planes and hosts for where each plane is served.

REST https://<root-host>/api/v1/workspace/… with Authorization: Bearer cbid_ws_… (a workspace key, whose role must also allow the action), or a team member's token from the root
MCP /mcp on the platform root, signed in as a member of the workspace's team, or with a workspace key
CLI cbox login at the root, then the command below
OpenAPI /api/v1/workspace/openapi.yaml on the host above — public, no key needed (source); every operation carries x-action, x-scope and x-danger

Danger is how much harm the action can do in the wrong hands: read only reads; write changes something another write can undo; destructive removes or revokes; critical mints credentials, takes over access or changes how people sign in. MCP clients are told a destructive or critical tool is destructive, the CLI asks before running one, and an approval policy keys on it.

Contents

Area Actions
Environments environments.create, environments.domain.remove, environments.domain.request, environments.domain.verify, environments.list
Keys keys.environment.create, keys.environment.revoke, keys.workspace.create, keys.workspace.list, keys.workspace.revoke
Projects projects.create, projects.list, projects.reactivate, projects.rename, projects.suspend, projects.verification.resend
Team team.environment_access, team.invitations.list, team.invitations.resend, team.invitations.revoke, team.invite, team.list, team.remove, team.role, team.transfer_ownership
Workspace workspace.get, workspace.settings.update

Environments

environments.create

Create an environment under one of the workspace's projects; with initial_key, also mint its first management key, returned once as initial_key.token.

REST POST /api/v1/workspace/environments → 201
Scope environments:write — and a role that may manage-environments.
Danger critical
MCP tool environments_create
CLI cbox id environments create
Secret data.initial_key.token — shown once, never kept for an idempotent replay
Input Type Required Description
name string yes At most 120 characters.
type string no Default production. One of production, sandbox.
project_id string no The project (billing anchor) to create it under. Defaults to the workspace's first project. At most 64 characters.
initial_key object no Mint the environment's first management key in the same call. Its value is returned once, as initial_key.token.
initial_key.name string yes At most 120 characters.
initial_key.scopes list of string yes The environment-key scopes it carries, for example apis:write. At least 1 items. At most 64 items.
initial_key.expires_at string (date-time), nullable no When it stops working. Left out, it does not expire.

environments.domain.remove

Stop serving one of the workspace's environments on its custom domain. Anything using that domain stops reaching it.

REST DELETE /api/v1/workspace/environments/{environment_id}/domain → 204
Scope environments:write — and a role that may manage-environments.
Danger destructive
MCP tool environments_domain_remove
CLI cbox id environments domain remove <environment_id>
Input Type Required Description
environment_id string (path) yes

environments.domain.request

Start serving one of the workspace's environments on a custom domain: returns the DNS TXT record that proves you control it.

REST POST /api/v1/workspace/environments/{environment_id}/domain → 200
Scope environments:write — and a role that may manage-environments.
Danger write
MCP tool environments_domain_request
CLI cbox id environments domain request <environment_id>
Input Type Required Description
environment_id string (path) yes
domain string yes The domain, for example login.example.com. At most 253 characters.

environments.domain.verify

Look for the pending domain's DNS TXT record and, once it is visible, serve the environment on that domain.

REST POST /api/v1/workspace/environments/{environment_id}/domain/verify → 200
Scope environments:write — and a role that may manage-environments.
Danger write
MCP tool environments_domain_verify
CLI cbox id environments domain verify <environment_id>
Input Type Required Description
environment_id string (path) yes

environments.list

List every environment the workspace owns, across its projects, with each one's issuer.

REST GET /api/v1/workspace/environments → 200
Scope workspace:read — (any role).
Danger read
MCP tool environments_list
CLI cbox id environments list
Input Type Required Description
limit integer no Items per page, 1–100. Default 50.
page integer no The page to read, from 1. A list says next_page when there is one.

Keys

keys.environment.create

Mint a management key for one of the workspace's environments, with the scopes it needs. The value is returned once, as token.

REST POST /api/v1/workspace/environments/{environment_id}/keys → 201
Scope keys:write — and a role that may manage-environments.
Danger critical
MCP tool keys_environment_create
CLI cbox id keys environment create <environment_id>
Secret data.token — shown once, never kept for an idempotent replay
Input Type Required Description
environment_id string (path) yes
name string yes At most 120 characters.
scopes list of string yes The environment-key scopes it carries, for example apis:write. At least 1 items. At most 64 items.
expires_at string (date-time), nullable no When it stops working. Left out, it does not expire.

keys.environment.revoke

Revoke one of an environment's management keys; whatever uses it stops immediately.

REST DELETE /api/v1/workspace/environments/{environment_id}/keys/{id} → 204
Scope keys:write — and a role that may manage-environments.
Danger destructive
MCP tool keys_environment_revoke
CLI cbox id keys environment revoke <environment_id> <id>
Input Type Required Description
environment_id string (path) yes
id string (path) yes

keys.workspace.create

Mint a workspace key with a role and optional scopes, never wider than the caller. The value is returned once, as token.

REST POST /api/v1/workspace/keys → 201
Scope keys:write — and a role that may manage-environments and manage-members.
Danger critical
MCP tool keys_workspace_create
CLI cbox id keys workspace create
Secret data.token — shown once, never kept for an idempotent replay
Input Type Required Description
name string yes At most 120 characters.
role string yes One of admin, developer, member, viewer.
scopes list of string, nullable no Narrow the key below its role. Left out, the role alone bounds it — or, minted by a key with scopes, that key's scopes. At least 1 items.
expires_at string (date-time), nullable no When it stops working. Left out, it does not expire — or, minted by a key that does, expires with it.

keys.workspace.list

List the workspace's keys, newest first, revoked ones included — names, roles, scopes and expiry, never their values.

REST GET /api/v1/workspace/keys → 200
Scope workspace:read — and a role that may manage-members.
Danger read
MCP tool keys_workspace_list
CLI cbox id keys workspace list
Input Type Required Description
limit integer no Items per page, 1–100. Default 50.
page integer no The page to read, from 1. A list says next_page when there is one.

keys.workspace.revoke

Revoke a workspace key, and every key it minted on either plane (workspace keys and environment management keys, all the way down); whatever uses them stops immediately.

REST DELETE /api/v1/workspace/keys/{id} → 204
Scope keys:write — and a role that may manage-environments and manage-members.
Danger destructive
MCP tool keys_workspace_revoke
CLI cbox id keys workspace revoke <id>
Input Type Required Description
id string (path) yes

Projects

projects.create

Create a project: another independently-billed IdP product, with its own environment allowance.

REST POST /api/v1/workspace/projects → 201
Scope projects:write — and a role that may manage-environments.
Danger write
MCP tool projects_create
CLI cbox id projects create
Input Type Required Description
name string yes At most 120 characters.
environment_limit integer no This project's plan environment allowance (default 2). At least 1. At most 100.

projects.list

List the workspace's projects (IdP products), each with its environment allowance and how much of it is used.

REST GET /api/v1/workspace/projects → 200
Scope workspace:read — (any role).
Danger read
MCP tool projects_list
CLI cbox id projects list

Takes no input.

projects.reactivate

Reactivate a suspended project, so environments can be added to it again.

REST POST /api/v1/workspace/projects/{id}/reactivate → 200
Scope projects:write — and a role that may manage-environments.
Danger write
MCP tool projects_reactivate
CLI cbox id projects reactivate <id>
Input Type Required Description
id string (path) yes

projects.rename

Rename a project.

REST PATCH /api/v1/workspace/projects/{id} → 200
Scope projects:write — and a role that may manage-environments.
Danger write
MCP tool projects_rename
CLI cbox id projects rename <id>
Input Type Required Description
id string (path) yes
name string yes At most 120 characters.

projects.suspend

Suspend a project: its environments stay live, but no new ones can be added until it is reactivated.

REST POST /api/v1/workspace/projects/{id}/suspend → 200
Scope projects:write — and a role that may manage-environments.
Danger write
MCP tool projects_suspend
CLI cbox id projects suspend <id>
Input Type Required Description
id string (path) yes

projects.verification.resend

Re-send the signup confirmation the workspace's first environment is waiting on, to the owner's address on file.

REST POST /api/v1/workspace/projects/verification/resend → 200
Scope projects:write — and a role that may manage-environments.
Danger write
MCP tool projects_verification_resend
CLI cbox id projects verification resend

Takes no input.

Team

team.environment_access

Set which of the workspace's environments a team member reaches: all of them, or the listed ones.

REST PUT /api/v1/workspace/members/{id}/access → 200
Scope team:write — and a role that may manage-members.
Danger write
MCP tool team_environment_access
CLI cbox id team environment_access <id>
Input Type Required Description
id string (path) yes
all_environments boolean yes True: every environment, including ones created later.
environment_ids list of string no With all_environments false: the environments they reach.

team.invitations.list

List the team's pending invitations, newest first.

REST GET /api/v1/workspace/invitations → 200
Scope team:read — and a role that may read-members.
Danger read
MCP tool team_invitations_list
CLI cbox id team invitations list

Takes no input.

team.invitations.resend

Re-send a pending team invitation with a fresh link; the earlier link stops working and the invitation gets a new id.

REST POST /api/v1/workspace/invitations/{id}/resend → 200
Scope team:write — and a role that may manage-members.
Danger write
MCP tool team_invitations_resend
CLI cbox id team invitations resend <id>
Input Type Required Description
id string (path) yes

team.invitations.revoke

Withdraw a pending team invitation; its link stops working.

REST DELETE /api/v1/workspace/invitations/{id} → 204
Scope team:write — and a role that may manage-members.
Danger destructive
MCP tool team_invitations_revoke
CLI cbox id team invitations revoke <id>
Input Type Required Description
id string (path) yes

team.invite

Invite somebody onto the workspace's team with a role; they get a mail with a link to set a password.

REST POST /api/v1/workspace/members → 201
Scope team:write — and a role that may manage-members.
Danger write
MCP tool team_invite
CLI cbox id team invite
Input Type Required Description
email string (email) yes At most 190 characters.
name string, nullable no At most 120 characters.
role string yes One of admin, developer, member, viewer.

team.list

List the workspace's team: each member's name, address, role and whether they reach every environment.

REST GET /api/v1/workspace/members → 200
Scope team:read — and a role that may read-members.
Danger read
MCP tool team_list
CLI cbox id team list
Input Type Required Description
limit integer no Items per page, 1–100. Default 50.
page integer no The page to read, from 1. A list says next_page when there is one.

team.remove

Remove a member from the workspace's team. The owner is never removed; transfer ownership first.

REST DELETE /api/v1/workspace/members/{id} → 204
Scope team:write — and a role that may manage-members.
Danger destructive
MCP tool team_remove
CLI cbox id team remove <id>
Input Type Required Description
id string (path) yes

team.role

Change a team member's role (admin, developer, member or viewer). The owner's role changes only by transferring ownership.

REST PATCH /api/v1/workspace/members/{id}/role → 200
Scope team:write — and a role that may manage-members.
Danger write
MCP tool team_role
CLI cbox id team role <id>
Input Type Required Description
id string (path) yes
role string yes One of admin, developer, member, viewer.

team.transfer_ownership

Make another member the workspace's owner; the current owner stays on as an admin. Only the owner, signed in, may do this.

REST POST /api/v1/workspace/members/{id}/transfer-ownership → 204
Scope team:write — and a role that may manage-members.
Danger critical
MCP tool team_transfer_ownership
CLI cbox id team transfer_ownership <id>
Input Type Required Description
id string (path) yes

Workspace

workspace.get

Get the workspace: its name and status, and each project's plan for a role that may read billing.

REST GET /api/v1/workspace → 200
Scope workspace:read — (any role).
Danger read
MCP tool workspace_get
CLI cbox id workspace get

Takes no input.

workspace.settings.update

Rename the workspace.

REST PATCH /api/v1/workspace → 200
Scope settings:write — and a role that may manage-members.
Danger write
MCP tool workspace_settings_update
CLI cbox id workspace settings update
Input Type Required Description
name string yes At most 120 characters.