The host exposes ~113 route plugins, almost all under /api/v1/. This page is a hand-curated catalog grouped by area — not an exhaustive endpoint-by-endpoint dump. An auto-generated OpenAPI spec covering every endpoint is on the roadmap.
List paired application sources, their status, granted scopes, and Host permission flags; credentials are never returned
POST
/api/v1/app-sources/pair
Exchange a pasted App Source Protocol pairing bundle; indexing, entity extraction, and visual hydration start disabled
PATCH
/api/v1/app-sources/:id
Update semantic-indexing, entity-extraction, or visual-hydration permission flags
POST
/api/v1/app-sources/:id/rotate
Rotate the scoped source credential, revoking the old credential only after replacement succeeds
POST
/api/v1/app-sources/:id/revoke
Revoke the remote source credential and stop local work
DELETE
/api/v1/app-sources/:id
Disconnect locally while retaining credential and resource provenance for audit
GET|PUT|DELETE
/api/v1/sync-rules/:name
Per-integration sync config
POST
/api/v1/sync-rules/:name/preview
Dry-run a rule against existing data
POST
/api/v1/sync-rules/:name/apply-retroactive
Apply retention caps to existing artifacts (HMAC-gated, idempotent)
GET|PUT|DELETE
/api/v1/oauth-apps
OAuth client credentials (encrypted at rest, never .env)
GET
/api/v1/auth/hosted/providers
Hosted provider availability for the linked workspace and its entitlement
POST
/api/v1/auth/google/hosted/start
Start hosted Google consent; optional { account_id } binds re-authentication to the selected existing account
POST
/api/v1/auth/google/hosted/poll
Advance the hosted connection and claim its delivery; optional ?connection_id= selects the start result
GET
/api/v1/auth/google/hosted/status
Read the durable connection verdict without claiming a delivery; optional ?connection_id=
OAuth + connect flows live under /api/v1/auth/<provider> (Google, GitHub device flow, Strava, Spotify, Tidal, Beeper, Linear, Readwise, Reddit, Last.fm, Peloton, Whoop). Each provider exposes start/callback/status/disconnect routes as applicable; callbacks recover the workspace from the OAuth state parameter. See Connectors.
POST /api/v1/agent/message is the single canonical chat contract for every client (iOS, macOS, CLI). It accepts prompt or question plus optional session_id / active_folio_id / model / stream, and returns gateway frames as SSE (or a non-streaming JSON body).
Chat is multi-engine, resolved per workspace from chat_runtime:
openclaw — the premium default, routed through the OpenClaw Gateway.
host_native — the OSS chat floor: an in-process tool loop against the workspace’s configured model, no gateway required, grounded by a retrieval whitelist; it can also load the host’s MCP write tools on demand when you ask it to write (opt down with CARABASE_CHAT_READ_ONLY).
codex_cli / claude_code — vendor-CLI bridges (read-write by default) that drive your local codex login / claude login and reach the mesh over the host’s own MCP surface.
With chat_runtime: auto, the host picks OpenClaw when a gateway is configured, otherwise falls back to host-native — so a self-host chats out of the box with no gateway.
Method
Path
Notes
POST
/api/v1/agent/message
Canonical chat contract (SSE or JSON)
GET
/api/v1/chat/options
Runtime-aware model/reasoning controls honored by the current engine
The host serves Carabase’s retrieval tools over MCP to OpenClaw and to tailnet clients (Claude Desktop, Cursor, Codex).
Method
Path
Notes
POST
/mcp
Streamable HTTP JSON-RPC; initialize mints a session
GET
/mcp
Optional server-push SSE stream
DELETE
/mcp
Terminate a session
GET
/mcp/sse
Legacy SSE transport
POST
/mcp/messages
Legacy SSE transport message channel
GET|POST|DELETE
/api/v1/mcp-access/clients
Mint / list / revoke per-client tokens
Access is fail-open under tailnet trust until you mint a token, after which every /mcp/* request must present a bearer. See MCP tools for the tool catalog.