Developers & Agents Generated from source Updated 2026-08-01 View as Markdown

Errors and limits

HTTP status codes

Status When What to do
200 The message was handled. A tool that itself failed still returns 200 with isError: true in the result. Read the result.
202 The message was a notification (no id), so there is no response body. Nothing.
400 Malformed JSON, a batch array, an unknown method, bad tool arguments, an unsupported protocol version, or routing headers that disagree with the body. Fix the request. The JSON-RPC error code says which.
401 No credential, or one that is unknown, revoked or expired. Response carries WWW-Authenticate: Bearer. Mint a new token.
403 The token is valid but lacks the required scope, or the request carried a browser Origin header. Use a token with read scope; do not call this endpoint from a browser.
405 The request was not a POST. MCP is POST-only. The GET event stream was removed in protocol revision 2026-07-28.
429 Rate limit exceeded. Response carries Retry-After in seconds. Back off for the stated interval.
500 Server-side failure. The message is deliberately generic. Retry; if it persists it is not something the caller can fix.
503 The data store could not be reached. Retry with backoff.

JSON-RPC error codes

Code Meaning
-32700 Parse error — the body was not valid JSON.
-32600 Invalid request — not a JSON-RPC message, a batch, or an unsupported protocol version.
-32601 Method not found.
-32602 Invalid params — missing params.name, or a tool that is not exposed.
-32603 Internal error.
-32020 Header mismatch — Mcp-Method or Mcp-Name disagreed with the body, or was absent when the declared protocol version requires it.

Rate limits

The MCP endpoint allows 120 requests per 60 seconds, counted per user rather than per token. Each JSON-RPC message is one HTTP request, so a multi-step agent run consumes calls quickly; the limit is set to accommodate that while still bounding a runaway loop.

Limits are held in memory per serverless instance, so the practical ceiling can be slightly higher across a cold start. Do not rely on that.

Result size

A single tool result is capped at 100,000 characters, roughly 25k tokens. Beyond that the payload is truncated and an explicit [TRUNCATED: ...] marker is appended, so a clipped series can never read as a complete one. If you hit it, narrow the date window or name fewer metrics.

Protocol versions

Send your revision in the MCP-Protocol-Version header. Supported, newest first:

  • 2026-07-28
  • 2025-11-25
  • 2025-06-18
  • 2025-03-26

An unrecognised version is refused with a 400 that carries the full supported list in error.data.supported, so a client can pick one instead of guessing. Omitting the header entirely is read as 2025-03-26, the last revision that predates the header.

From 2026-07-28 onward, every request must also carry Mcp-Method, and Mcp-Name when the message addresses something (tools/call). The server checks them against the body and rejects disagreement, so an intermediary cannot route on one operation while the server performs another.

Scopes

Tokens carry explicit scopes: read, write. They are not cumulative — a write token does not imply read. Every MCP method today requires read, including initialize and ping.