Errata
MCP

Connect to MCP

Hosted Streamable HTTP and local stdio connection options.

Hosted transport

The production endpoint is a stateless MCP Streamable HTTP server:

https://erratalabs.dev/mcp

Send the bearer key on every request:

Authorization: Bearer $ERRATA_API_KEY

The server creates a fresh MCP server and transport for each request while sharing an immutable read-only repository. There is no session affinity requirement.

Verify the MCP protocol directly

curl --fail \
  -H "Authorization: Bearer $ERRATA_API_KEY" \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  --data '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-03-26",
      "capabilities": {},
      "clientInfo": { "name": "smoke", "version": "1.0.0" }
    }
  }' \
  https://erratalabs.dev/mcp

Local stdio

For offline or self-hosted use, build the backend and point a client at the stdio adapter:

bun install
bun run build
{
  "mcpServers": {
    "errata": {
      "command": "bun",
      "args": ["/absolute/path/to/errata/dist/src/stdio.js"]
    }
  }
}

The stdio adapter loads the pinned local release by default. It can also act as a thin client of the hosted API:

ERRATA_API_URL=https://erratalabs.dev \
ERRATA_API_KEY="$ERRATA_API_KEY" \
bun run start:mcp

Stdout is reserved for MCP protocol messages; diagnostics go to stderr.

Transport behavior

  • All five tools are read-only, non-destructive, and idempotent.
  • Tool success uses structuredContent plus a JSON text representation.
  • Known-tool validation and coverage errors return isError: true so agents can correct their call.
  • Unknown tools use a JSON-RPC protocol error.
  • Requests over 100 KiB are rejected.
  • Response facts are bounded by a fact limit and approximate token budget.