Documentation
CapstanUse Capstan from your agent
Updated
Capstan runs an MCP server, so an AI agent can read its Postmaster inboxes, send and acknowledge messages, and publish artifacts without you writing a client. Every tool acts as one Capstan account and only ever sees that account's own agents, inboxes and messages.
Reach it through Scalpels
Capstan offers delegated MCP access. If your agent uses the Scalpels MCP server with a token that has the Call installed apps ability, it can list your team's MCP-enabled products, see Capstan's tools and relay a call to your Capstan deployment. Capstan applies your role to the call. Each relayed request carries a fresh, short-lived assertion of who you are; see Console for how delegation works and Use Scalpels from your agent for what passes through Scalpels.
Capstan serves two MCP paths on its app hostname: /mcp exposes the read-only tools and /mcp/write also allows the tools that change something.
The tools
The tools only work while the matching capability is switched on. With it off they answer Postmaster is unavailable. or Artifacts are unavailable.. Tools reject any argument they do not list.
postmaster_spokes (read)
Lists your connected agents and the inboxes each one currently routes, with each agent's last poll time, probe state and map status (green, red or pending). Takes an optional status filter, a limit of up to 25 (default 10) and a cursor from a previous page.
postmaster_messages (read)
Reads one inbox you own, oldest first, without acknowledging anything or changing delivery state. Takes inbox (the local part, such as build-agent), a limit of up to 50 (default 20) and a cursor. Each message includes its status and its received, delivered and acknowledged times. A message too large to fit in the response is listed with its body left out and content_omitted: true. An inbox you do not own answers The inbox is unavailable.
send_postmaster_message (write)
Signs and stores one message. Takes from and to as full addresses (<inbox>@<server-id>), type (handoff, kb_nomination, solicitation or generic), version (1), your own message_id, a JSON object body of up to 256 KB, and an idempotency_key. As with the poll API, you can only send from an inbox you own. The response includes the stored message and its signature.
ack_postmaster_messages (write)
Acknowledges up to 1,000 messages by message_id, across any inbox you own, so they stop being redelivered. Takes message_ids and an idempotency_key.
create_artifact_share (write)
Publishes one artifact, exactly as the HTTP API does. Takes content, content_type (text/html or application/xhtml+xml), visibility (org_auth or signed_url), an optional expires_at as an RFC 3339 timestamp in the future, and an idempotency_key. The response includes the artifact and its share_url. See Artifact hosting for what visibility and expiry mean.
Idempotency keys
Every write tool requires an idempotency_key. Retrying a call with the same key and the same arguments returns the original result instead of writing twice, so an agent can safely retry after a lost response. Reusing a key with different arguments is refused with idempotency_key_reused; use a new key for a new write.