The platform plane is the deployment itself, for the people who run the install: workspaces, environments, organizations inside any environment, and the operator roster. No key of any kind reaches it — only a platform operator, in the console or through a token they delegated, carrying the operator:* scope an action asks for.
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/platform/… with a token the platform root issued a platform operator. No key is accepted |
| MCP |
/mcp on the platform root, signed in as a platform operator |
| CLI |
cbox login at the root as an operator, then the command below |
| OpenAPI |
/api/v1/platform/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
Environments
Create an environment on the deployment, with its own signing key. A domain is verified separately, by DNS.
|
|
| REST |
POST /api/v1/platform/environments → 201 |
| Scope |
operator:environments:write — on an access token delegated by an active platform operator. No management key is accepted. |
| Danger |
critical |
| MCP tool |
platform_environments_create |
| CLI |
cbox id platform environments create |
| Input |
Type |
Required |
Description |
name |
string |
yes |
At most 190 characters. |
domain |
string, nullable |
no |
The domain it will serve on, once verified by DNS. Checked to be free; not written yet. At most 190 characters. |
Bootstrap an environment with its first organization and an owner administrator, so people can sign in to it.
|
|
| REST |
POST /api/v1/platform/environments/{environment_id}/provision → 201 |
| Scope |
operator:environments:write — on an access token delegated by an active platform operator. No management key is accepted. |
| Danger |
critical |
| MCP tool |
platform_environments_provision |
| CLI |
cbox id platform environments provision <environment_id> |
| Input |
Type |
Required |
Description |
environment_id |
string (path) |
yes |
|
organization_name |
string |
yes |
At most 190 characters. |
admin_name |
string |
yes |
At most 190 characters. |
admin_email |
string (email) |
yes |
At most 190 characters. |
admin_password |
string |
yes |
Write-only. Must meet the environment's own password policy. At most 200 characters. |
Operators
Add a platform operator: a person with authority over the whole deployment.
|
|
| REST |
POST /api/v1/platform/operators → 201 |
| Scope |
operator:operators:write — on an access token delegated by an active platform operator. No management key is accepted. |
| Danger |
critical |
| MCP tool |
platform_operators_create |
| CLI |
cbox id platform operators create |
| Input |
Type |
Required |
Description |
name |
string |
yes |
At most 190 characters. |
email |
string (email) |
yes |
At most 190 characters. |
password |
string |
yes |
Write-only. At least 12 characters, and not one known from a breach. At least 12 characters. At most 200 characters. |
Suspend a platform operator, or reactivate one. Never yourself, and never the last active operator.
|
|
| REST |
PUT /api/v1/platform/operators/{operator_id}/status → 200 |
| Scope |
operator:operators:write — on an access token delegated by an active platform operator. No management key is accepted. |
| Danger |
critical |
| MCP tool |
platform_operators_set_status |
| CLI |
cbox id platform operators set_status <operator_id> |
| Input |
Type |
Required |
Description |
operator_id |
string (path) |
yes |
|
status |
string |
yes |
One of active, suspended. |
Organizations
Create an organization inside an environment, optionally under a parent organization of the same environment.
|
|
| REST |
POST /api/v1/platform/environments/{environment_id}/organizations → 201 |
| Scope |
operator:organizations:write — on an access token delegated by an active platform operator. No management key is accepted. |
| Danger |
critical |
| MCP tool |
platform_organizations_create |
| CLI |
cbox id platform organizations create <environment_id> |
| Input |
Type |
Required |
Description |
environment_id |
string (path) |
yes |
|
name |
string |
yes |
At most 190 characters. |
type |
string |
yes |
One of customer, reseller. |
parent_id |
string, nullable |
no |
An organization of the same environment to create it under. |
Move an organization under another organization of the same environment, or to the top of its hierarchy.
|
|
| REST |
PUT /api/v1/platform/environments/{environment_id}/organizations/{organization_id}/parent → 200 |
| Scope |
operator:organizations:write — on an access token delegated by an active platform operator. No management key is accepted. |
| Danger |
critical |
| MCP tool |
platform_organizations_move |
| CLI |
cbox id platform organizations move <environment_id> <organization_id> |
| Input |
Type |
Required |
Description |
environment_id |
string (path) |
yes |
|
organization_id |
string (path) |
yes |
|
parent_id |
string, nullable |
no |
The new parent, of the same environment; null for the top of the hierarchy. |
Suspend an organization inside an environment (its members can no longer sign in to it) or reactivate it.
|
|
| REST |
PUT /api/v1/platform/environments/{environment_id}/organizations/{organization_id}/status → 200 |
| Scope |
operator:organizations:write — on an access token delegated by an active platform operator. No management key is accepted. |
| Danger |
critical |
| MCP tool |
platform_organizations_set_status |
| CLI |
cbox id platform organizations set_status <environment_id> <organization_id> |
| Input |
Type |
Required |
Description |
environment_id |
string (path) |
yes |
|
organization_id |
string (path) |
yes |
|
status |
string |
yes |
One of active, suspended. |
Workspaces
Create a workspace with its owner, first project and first environment; the owner is emailed a link to set their password.
|
|
| REST |
POST /api/v1/platform/workspaces → 201 |
| Scope |
operator:workspaces:write — on an access token delegated by an active platform operator. No management key is accepted. |
| Danger |
critical |
| MCP tool |
platform_workspaces_create |
| CLI |
cbox id platform workspaces create |
| Input |
Type |
Required |
Description |
name |
string |
yes |
The workspace's name — usually the company it belongs to. At least 2 characters. At most 120 characters. |
owner_email |
string (email) |
yes |
The owner. An address that already has an account keeps it; the workspace is added to it. At most 255 characters. |
owner_name |
string |
yes |
At least 2 characters. At most 120 characters. |
environment_limit |
integer |
yes |
The first project's environment allowance: 1, 2, 3, 5, 10 or 25. At least 1. At most 25. |
Suspend a workspace (its people can no longer sign in, its environments stop serving) or reactivate it.
|
|
| REST |
PUT /api/v1/platform/workspaces/{workspace_id}/status → 200 |
| Scope |
operator:workspaces:write — on an access token delegated by an active platform operator. No management key is accepted. |
| Danger |
critical |
| MCP tool |
platform_workspaces_set_status |
| CLI |
cbox id platform workspaces set_status <workspace_id> |
| Input |
Type |
Required |
Description |
workspace_id |
string (path) |
yes |
|
status |
string |
yes |
One of active, suspended. |