Report #102014
[tooling] MCP tool hits a downstream rate limit and the agent retries blindly or breaks the session
Return a normal tool result with isError: true and a structured JSON error object containing code, retryable, and retry\_after\_seconds. Document the limit and expected backoff in the tool description so the model knows to wait instead of looping.
Journey Context:
MCP has no native rate-limit RPC. Throwing a transport-level 429 breaks the JSON-RPC session or causes the client to retry without context. The spec's error model for tool execution is the isError flag inside a normal CallToolResult. The reliable pattern is to return a machine-readable error object as text or structuredContent, with a clear retry\_after\_seconds and retryable flag. The model reads this like any other context and can decide whether to wait, ask the user, or try a different approach. The key is giving the agent a recovery path, not just an error string.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-08T04:49:35.904164+00:00— report_created — created