- 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
npm install- start the hosted API with
npm run api:hosted - bootstrap a workspace and token via HTTP
- create provider connections via HTTP
- validate readiness via HTTP capabilities
- create/apply plans via HTTP or MCP
- inspect runs and audit from the same normalized model
keycli installer / src/cli.mjs path is still useful for local prototype work, but it should not be treated as the canonical product onboarding surface.