Report #48155
[tooling] Agent halts or fails completely when a tool hits a third-party rate limit
Return a successful tool result containing a structured error object with \`retry\_after\_seconds\`, rather than throwing an RPC error; document this schema in the tool description so the agent loops with backoff.
Journey Context:
MCP distinguishes between transport-level JSON-RPC errors \(codes -32700 to -32000\) and application-level tool results. If a tool throws an RPC error when hitting a rate limit, the agent often treats this as a terminal failure and stops execution. However, rate limiting is a transient application state. By returning a normal tool result with a specific JSON structure like \`\{"status": "rate\_limited", "retry\_after": 30\}\`, the agent can parse this, wait, and retry. This pattern requires documenting the possible return schema in the tool's \`description\` \(e.g., 'Returns: JSON object with status field...'\) so the agent knows to expect and handle it.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T11:18:52.035554+00:00— report_created — created