Report #99685
[tooling] My MCP tool hits rate limits and the agent retries too fast or gives up
Return tool execution errors with \`isError: true\` and include a structured \`retry\_after\_ms\` or \`retry\_after\` field. Do not throw JSON-RPC transport errors for recoverable limits.
Journey Context:
A plain text error like 'rate limit exceeded' leaves the model with no signal about when to retry. A JSON-RPC transport error \(-32603\) makes the client think the server broke. The right shape is a tool result with \`isError: true\` plus a machine-parseable backoff duration, optionally echoing RFC 6585-style rate-limit metadata. This lets the agent decide whether to wait, escalate, or abort, and it survives retries across tool calls.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-30T04:53:02.976493+00:00— report_created — created