The endpoint
- Address
https://baltor.ai/mcp- Protocol
- Model Context Protocol (MCP)
- Transport
- Streamable HTTP
- Sessions
- Stateless: each request stands on its own
- Each request
- Carries its own key, as a bearer header
One authenticated endpoint serves every harness: Claude Code, Codex, OpenCode, Pi, the Baltor Harness and 17 more MCP tools.
Versions, on purpose
The service serves MCP versions 2025-11-25 and 2026-07-28. A request that names another version is answered with the versions the service serves, so your client chooses one. Your client picks the version, every time.
The key header
Each request carries your Baltor key in the Authorization header, read from BALTOR_SERVICE_TOKEN in your environment. The configuration holds the variable name; your key stays in your environment.
OAuth connections
Harnesses that support OAuth connect at the same address. You approve each connection in your browser, on a Baltor page that names the app and its return destination, and its access stays within the scopes you allow.
- Flow
- Authorization code with PKCE (S256)
- Refresh
- Supported
- Consent
- Asked for every connection
- Resource
https://baltor.ai/mcp
| Scope | What it allows |
|---|---|
provisioning:metadata | Metadata and search |
provisioning:read | Bodies and downloads |
usage:read | Your usage record |
billing:manage | Billing sessions |
Ask the service first
The capabilities record is the source of truth for everything on this page. Ask it before you plan a large job; it answers to anyone, key-free.
It names the protocol versions, the transport, the search modes, the download limits and the runtime, which read cloudflare-workers-d1-r2 on October 25, 2026.
Limits
Read from https://baltor.ai/api/v1/capabilities on October 25, 2026.
| Limit | Value | Field in the record |
|---|---|---|
| References per search | 50 | search_results |
| Operations at once, per account | 4 | concurrent_operations_for_each_account |
| Operations at once, whole service | 8 | concurrent_operations |
| Request size | 64 KiB | request_bytes |
| Response size | 16 MiB | response_bytes |
| Body returned inline | 16 KiB | inline_body_bytes |
| One download | 1 MiB | download_bytes |
| Refused sign-in attempts, per address | 30 in 60 seconds | failures_allowed, window_seconds |
| OAuth requests, per service process | 240 a minute | requests_per_minute_per_process |
| OAuth token requests, per process | 120 a minute | token_requests_per_minute_per_process |
| OAuth registrations, per process | 10 a minute | registrations_per_minute_per_process |
REST routes
Capabilities and health answer to anyone; every other route takes a Baltor key.
| Route | What it does | Access |
|---|---|---|
GET /api/v1/capabilities | What the service serves | Open |
GET /api/v1/health | Health readings | Open |
GET /api/v1/session | Your current session | Baltor key |
POST /api/v1/retrieval | Search the library | Baltor key |
POST /api/v1/provisioning | An item's manifest and files | Baltor key |
POST /api/v1/download | Download a body | Baltor key |
GET /api/v1/usage | Your usage record | Baltor key |
Remove a connection
Revoke the key on Keys and connections. Revocation takes effect on the key's next request, and files already downloaded stay on your computer.
Need a hand? Status, the connection checklist and the operator's email address are on one page.
Get support