Codencer exposes a tenant-scoped remote MCP surface from the cloud control plane in composed runtime mode.
This page is about cloud tenancy mode.
If you are operating the self-host relay directly without cloud tenancy, use relay /mcp instead and treat Relay MCP Tools as the source of truth for that boundary.
Use the cloud MCP endpoint:
POST /api/cloud/v1/mcpGET /api/cloud/v1/mcpDELETE /api/cloud/v1/mcp
Compatibility path:
POST /api/cloud/v1/mcp/call
The cloud MCP server currently supports:
initializenotifications/initializedtools/listtools/call
codencer.list_instancescodencer.get_instancecodencer.start_runcodencer.get_runcodencer.list_run_gatescodencer.submit_taskcodencer.get_stepcodencer.wait_stepcodencer.get_step_resultcodencer.list_step_artifactscodencer.get_step_logscodencer.get_artifact_contentcodencer.get_step_validationscodencer.approve_gatecodencer.reject_gatecodencer.abort_runcodencer.retry_step
codencer.list_instancesandcodencer.get_instancerequireruntime_instances:read.- Mutating tools require explicit
instance_id. - Tool calls respect the same tenant scope and runtime scopes as the cloud HTTP API.
- Tool calls do not bypass claimed-runtime ownership or org/workspace/project visibility.
- Routed
step,artifact, andgatelookups stay inside the caller's authorized tenant-visible runtime set. approve_gate,reject_gate, andretry_steprequire explicitinstance_id.submit_taskaccepts the real CodencerTaskSpecshape.wait_stepis bounded and takes explicit timeout input.list_run_gatesis the canonical gate-discovery tool for a known run and instance.- run listing remains HTTP-only in this phase; there is no
codencer.list_runstool. get_step_logsreturns collected step logs as explicit text or base64-safe content metadata.get_artifact_contentreads byartifact_idand returns text or base64-safe content metadata.abort_runreturns a successful tool result only when the daemon confirms the active step reachedcancelled.- There is no raw shell tool.
- There is no arbitrary filesystem browsing tool.
/api/cloud/v1/mcpsupports session-bound Streamable HTTPGET,POST, andDELETE- the cloud daemon returns
MCP-Protocol-Version - the cloud daemon can return
MCP-Session-Idoninitialize GET /api/cloud/v1/mcpkeeps an SSE stream open for the negotiated session and emits keepalive commentsPOST /api/cloud/v1/mcp/callremains as a compatibility alias for simple POST callers;/api/cloud/v1/mcpis still the canonical session path- the compatibility alias accepts both full JSON-RPC
tools/callrequests and the shorthand top-levelname/argumentsform - the Codencer tool model remains intentionally request/response-oriented even though the transport now supports a real SSE session
- cloud MCP sessions are token-bound; a session cannot be reused by a different token, and revoked tokens are rejected across the cloud MCP surface
- verified in repo tests for initialize, tools/list, tools/call, stream bootstrap, session delete, browser-origin handling, compatibility aliasing, token-bound sessions, and revoked-token denial
- verified in composed cloud smoke for initialize, list, call, and official Go SDK access
- not overclaimed as universal client compatibility beyond the integrations directly exercised here
codencer.get_step_logs and codencer.get_artifact_content return structured metadata rather than raw path access.
The payload includes:
content_typeencodingtextfor textual contentbase64for non-text content
This matches the relay MCP shape so remote MCP clients do not need a different content model for cloud.