What 1.2 million agent tool calls taught us about timeouts, retries, and the true cost of a vague error message
Ninety days of production MCP traffic in numbers: retry storms, timeout cliffs, and why one ambiguous error string cost more than any outage did.
- Agents retry fast: the median gap after a failure was 1.9 seconds, and 41% of retries carried identical arguments.
- Past roughly three seconds of p95 latency, retry traffic grows faster than useful traffic.
- Structured errors naming the offending field cut retry volume 71% on the worst tool; error messages are instructions.
Over ninety days we watched 1.2 million tool calls cross our hosted MCP servers, and three patterns dominated everything else. Agents retry fast: the median gap between a failed call and its retry was 1.9 seconds, and 41% of retries carried byte-identical arguments. Timeouts cliff rather than degrade: past roughly three seconds of p95 latency, retry traffic grew faster than useful traffic on every server we measured. And error messages are instructions, whether you meant them to be or not — agents treated every string we returned as guidance about what to do next.
The expensive lesson was the third one. A single vague message — "invalid request," with no field, no code, no hint — accounted for 34% of all failed-call retries in the window, because every agent that saw it guessed a different fix. Replacing it with structured errors in the style of RFC 9457, naming the offending field and the allowed range, cut retry volume on that tool by 71% within a week. Nothing else we shipped all quarter moved a number that far.
FAQ
How quickly do agents retry failed calls?
The median gap between a failure and its retry was 1.9 seconds, and 41% of retries carried byte-identical arguments.
What causes agent retry storms?
Latency past roughly three seconds of p95, where retry traffic grows faster than useful traffic, and vague error messages: one string with no field or code accounted for 34% of all failed-call retries.
What reduced retries the most?
Structured errors in the style of RFC 9457 naming the offending field and the allowed range. That single change cut retry volume on the worst tool by 71% within a week.
Ship notes, monthly
One email with what shipped and what we learned. Unsubscribe anytime.