Skip to main content
Everything that can stop a tool call short: the ceilings it runs into, and the errors it returns when it does.

Throughput and result limits

A throttled request returns 429 Too Many Requests with Retry-After: 1 alongside the X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers. The body is {"Error": "Too many requests, MCP is limited to 10 requests per second per network"}. The window is one second, not one minute — retry after roughly a second rather than backing off for a full minute. See Rate Limiting for the header semantics.

Parameter length limits

All string parameters are validated server-side before any backend call. A request that exceeds a limit is rejected immediately with an INVALID_ARGUMENT error — no partial processing occurs.
sub1–sub10, adv1–adv10, and source_id are affiliate-controlled tracking values written directly to database columns. Their limits match the underlying column constraint.
These limits apply across every tool where the parameter appears.

Errors

When a tool call fails, the MCP Server returns a result with isError: true. The text field of that result is a JSON object with two required fields and two optional ones:
When a parameter limit is exceeded, the message names the offending parameter and the allowed maximum, and usually the actual length received — and the server returns before any backend call is made:

Error codes

HTTP-level errors

Authentication and rate limiting are answered by the HTTP layer before any tool runs, with a plain JSON body instead of the envelope above.

Two fields that are not errors

Two top-level keys can appear on a successful response and are easy to mistake for a problem: Neither sets isError. See Response safety.

Handling errors in a script

Check isError before processing content. The code lets you handle each class of error differently without string-matching the message:
AI agents read the message field automatically and will describe the problem in natural language without any extra handling on your part. Error code parsing is only necessary when you are processing MCP tool results programmatically in a script.