Skip to main content
The Computer Use Server speaks standard MCP (Model Context Protocol) over Streamable HTTP. Any MCP-compatible client can connect. Registered in the MCP Registry as io.github.yambr/open-computer-use.

Endpoint

Managed Yambr: https://api.yambr.com/mcp/computer_use — auth with your Yambr API key as Authorization: Bearer sk-yambr-.... Get keys at app.yambr.com. Yambr exposes MCP only; your LLM traffic goes to your own provider — see Access model. Self-hosted: http://localhost:8081/mcp

Authentication

Set the MCP_API_KEY environment variable on the server and pass as a Bearer token:
Authorization: Bearer <MCP_API_KEY>
Leave MCP_API_KEY empty for local dev (no auth).

Required headers

X-Chat-Id is mandatory. Without it (and with SINGLE_USER_MODE=false), the server returns an error. Every request must include a unique session identifier.
HeaderPurposeRequired
X-Chat-IdSession identifier — one sandbox container per idYes
AuthorizationBearer <MCP_API_KEY>If MCP_API_KEY is set
X-User-EmailUser email (per-user skills, PAT lookup, logging)No
X-User-NameDisplay name (URL-encoded)No
X-MCP-ServersComma-separated MCP server names for the Claude Code sub-agentNo
Mcp-Session-IdSession id from initialize response; include on subsequent callsAfter initialize

Session isolation modes

Controlled by SINGLE_USER_MODE:
ModeX-Chat-IdBehavior
unsetYesIsolated container per chat id
unsetNoShared default container + warning appended to every tool response
trueanyAlways one default container; header ignored
falseYesStrict: isolated container per chat id
falseNoRejected with error
See MCP methods for request examples.

Available tools

ToolDescription
bash_toolExecute bash commands in the sandbox with streaming output
viewView files and directories with line numbers
create_fileCreate files (auto-creates parent directories)
str_replaceEdit files via find-and-replace with uniqueness validation
sub_agentDelegate to an autonomous Claude Code agent
Full signatures: tools/list · tools/call.

Native MCP primitives beyond tools

Three more native primitives, all scoped by X-Chat-Id:
PrimitiveWhat you getHow
InitializeResult.instructionsThe per-chat system prompt as a string, delivered in the handshakeDynamic — re-rendered each stateless request from X-Chat-Id / X-User-Email headers
resources/list + resources/readUploaded files as file://uploads/{chat_id}/{encoded-rel-path}Auto-registered on container create + on every POST /api/uploads
In addition, /home/assistant/README.md inside the sandbox carries the same prompt text — any model that runs view can recover its environment even if the client stripped every MCP handshake field. Full map: system prompt reference.
The server intentionally does not expose the system prompt via prompts/get. MCP prompts/* is user-controlled (slash commands) and PromptMessage.role is restricted to user | assistant — duplicating InitializeResult.instructions there would be off-spec.

Dynamic configuration endpoints

Non-MCP HTTP endpoints that MCP clients should use instead of hardcoding:
EndpointReturns
GET /system-prompt?chat_id=...&user_email=...Full per-session system prompt (plain text)
GET /skill-list?user_email=...Skills list for sub-agent prompts
GET /mcp-infoAvailable tools, required headers, endpoint URL (JSON)

Browser endpoint (CDP)

GET /browser/{chat_id}/status
GET /browser/{chat_id}/json
WS  /browser/{chat_id}/devtools/page/{page_id}
See Live browser.

Terminal endpoint

GET  /terminal/{chat_id}/status
POST /terminal/{chat_id}/start-ttyd
WS   /terminal/{chat_id}/ws
See Terminal tab.

File endpoint

GET /files/{chat_id}/{path}
GET /preview/{chat_id}/{path}
GET /files/{chat_id}/archive        # zip of everything in this chat
See File preview and cu.yambr.com.

Per-method details

initialize

Open a session and get Mcp-Session-Id.

tools/list

Enumerate available tools.

tools/call

Invoke a tool.

resources/list

Browse uploaded files.