API and MCP
The product direction is simple:- HTTP API is the canonical control-plane surface
- MCP is a thin adapter over the same service logic
Canonical hosted HTTP API
Public endpoints
GET /healthPOST /v1/bootstrapGET /v1/capabilitiesPOST /v1/workspaces/:workspaceId/github/webhooks/comments
Authenticated endpoints
GET /v1/meGET /v1/principalsPOST /v1/tokensPOST /v1/connectionsGET /v1/connectionsGET /v1/connections/:idPOST /v1/connections/:id/testPOST /v1/plansGET /v1/plansGET /v1/plans/:idPOST /v1/plans/:id/approvePOST /v1/plans/:id/applyGET /v1/runsGET /v1/runs/:idGET /v1/auditGET /v1/state
Hosted API scripts
Storage modes
- no
DATABASE_URL→ in-memory mode, good for local demos DATABASE_URLset → Postgres-backed mode
Current MCP surface
Run the hosted MCP server with:whoamicapabilities_listplan_createplan_getplan_listplan_approveplan_applyrun_statusrun_listaudit_list
Important current MCP truth
The MCP server is a local stdio adapter over the hosted service logic. It uses environment-driven identity defaults such as:KEYCLI_WORKSPACE_IDKEYCLI_PRINCIPAL_NAMEKEYCLI_PRINCIPAL_KINDKEYCLI_PRINCIPAL_ROLE
When to use which surface
Use HTTP when you want
- the clearest mental model
- explicit auth and token flow
- provider connection setup
- webhooks
- the most canonical product path
Use MCP when you want
- agent-tooling compatibility
- a smaller tool vocabulary over the same service logic
- plan/apply/audit access inside an MCP-capable runtime
Suggested integration order
- bootstrap a workspace via HTTP
- create tokens and provider connections via HTTP
- validate readiness via HTTP capabilities
- create/apply plans via HTTP or MCP depending on client shape
- inspect runs and audit from the same normalized model