Skip to content

HTTP API

The agent exposes a JSON API plus a WebSocket event stream. The TUI and GUI are clients of this API; there is no /chat HTML — Chat is part of the consoles. MCP is a separate Streamable HTTP surface at /mcp, not a second /api control plane.

All /api/*, /ws/*, and /mcp requests pass through the operator gate when auth is enabled. See Auth.

MethodPathPurpose
GET/api/statusProject health summary.
GET/api/dashboardHealth, capacity, active work, delivered tasks.
GET/api/toolingHost tooling checklist (GitHub, Grafana/gcx, Kubernetes).
GET/api/agentsList agent/worker rows.
GET/api/token-usageInput/output/cache token counts and cache hit rate per agent.
MethodPathPurpose
GET/api/configRead config keys.
PATCH/api/configUpdate config keys.
GET/api/accessAllowed GitHub users, fallback org, and gate state.
PUT/api/accessReplace allowed users and/or the fallback org.
GET/api/credentialsList credentials (metadata only).
GET/api/credentials/catalogKnown credential kinds.
PUT/api/credentialsCreate or update a credential.
DELETE/api/credentials/{id}Delete a credential.
GET/POST/api/health-checksList or create health checks.
PATCH/DELETE/api/health-checks/{id}Update or delete a health check.
GET/POST/api/skillsList or create skills.
PATCH/DELETE/api/skills/{id}Update or delete a skill.
MethodPathPurpose
GET/api/workflowsSummary counts by kind and status.
GET/api/workflows/{kind}Runs for a kind (?limit=&offset=).
GET/api/workflows/{kind}/runs/{id}Run detail + step log.
POST/api/workflows/{kind}/runs/{id}/terminateTerminate a run.
POST/api/workflows/{kind}/runs/{id}/retryRequeue a failed/terminated run at its failed step.
POST/api/workflows/{kind}/runs/{id}/completeMark a running run done without its remaining steps.
POST/api/workflows/optimize/triggerTrigger the optimize workflow.
POST/api/tasks/syncForce a GitHub issue sync.
MethodPathPurpose
GET/POST/api/backlogList or create parked items.
PATCH/DELETE/api/backlog/{id}Update or delete a parked item.
POST/api/backlog/{id}/promoteFile an issue from a parked item.
POST/api/backlog/{id}/attachmentsUpload an attachment.
GET/DELETE/api/backlog/{id}/attachments/{attachment_id}Download or remove.
GET/api/board/archiveArchived card keys.
PUT/DELETE/api/board/archive/{key}Archive or restore a card.
MethodPathPurpose
POST/api/operator/messageFile work from an operator message.
GET/POST/api/operator/chatChat history / send.
POST/api/operator/chat/streamStreamed reply (SSE).
POST/api/operator/chat/stopStop an in-flight reply.
POST/api/operator/chat/clearClear the active session.
GET/api/operator/chat/sessionsList chat sessions.
POST/api/operator/chat/newStart a new session. Optional JSON { title, issue }.
POST/api/operator/chat/decisionPublish a Decision comment (issue, body, optional session_id).
GET/DELETE/api/operator/chat/session/{session}Read or delete a session.
GET/api/classificationsRecent Clef/Clairic answers (?subject_kind=&limit=).
GET/api/classifications/{kind}/{id}One subject’s latest classification.
GET/api/github/previewIssue/PR preview (?issue= and/or ?pr=).
MethodPathPurpose
GET/api/memory/sessionsList sessions (?issue=&pr=&path=&q=&limit=).
GET/api/memory/sessions/{id}Session detail + event range.
GET/api/memory/sessions/{id}/blobStream the session blob.
GET/api/memory/retrieveSemantic search over session memory.
MethodPathPurpose
GET/api/auditPaginated audit log.
WS/ws/streamReal-time event stream.

/ws/stream emits typed frames (workflow_run_created, workflow_run_changed, task_update, agent_update, config_changed, audit_event, ping/pong, …). The consoles refetch the visible surface when a relevant frame arrives.

MethodPathPurpose
POST/mcpStreamable HTTP JSON-RPC (JSON or SSE).
GET/mcpLegacy server-to-client SSE (sessionful protocol versions).
DELETE/mcpEnd a legacy MCP session.

Same operator gate as /api/*. When MCP is off (the default), these return 404 JSON { "error": "mcp disabled" }. Enable from Config → Settings (mcp_enabled) or STEELFRAME_MCP=1. A missing Mcp-Session-Id is success (stateless 2026-07-28). Host/Origin allowlists are snapshotted at process start; a later external_url change needs a restart. See MCP.