Default limits
Limits apply at the host edge. Once you’re rate-limited, additional calls return
429 Too Many Requests until the window rolls over. Rejected requests stop before they reach a tool, so they don’t appear in the project’s execution history.
What gets rate-limited
The Data Tool minute cap applies when a call reaches an execute or preflight endpoint:- Model-initiated calls from MCP hosts (Claude, ChatGPT, and any custom host), except production preflight-cache hits.
- Calls from the Assistant SDK in your iOS, Android, or React app, with the same exception when routed through production MCP.
- Test-panel runs in Metabind Studio (yes, even your own testing).
- Programmatic calls via the REST API.
- Production MCP executions that reuse a cached preflight bundle — these still count toward the applicable MCP request limit.
tools/listcalls — these count toward the MCP request limits instead (per client, or per address and per project for anonymous public traffic).- Interactive Tool renders — the tool-execution rate limiter is scoped to the Data Tool sandbox.
- Metabind Studio editor operations.
- Execution history and analytics queries.
Per-project public rate-limit configuration
For a public-visibility project, override the default via the API:requestsPerHour values outside [1, 600] and burst values outside [1, 60]. Higher values require a support conversation — the published max is enforced in code, not policy.
For private projects, the anonymous limits are irrelevant — every request is authenticated.
Authenticated traffic
Authenticated MCP requests are limited per client to 5,000 per hour, with a burst of 500. Authenticated traffic is also bounded by:- The Data Tool minute cap (300/min per tool and caller) when execution reaches an execute or preflight endpoint; production MCP preflight-cache hits bypass this cap.
- Underlying infrastructure protections (timeouts, sandbox concurrency, AWS-side throttling).
Rate-limit responses
When a call is rejected, the response is HTTP429 with a Retry-After header. The MCP endpoint returns a JSON-RPC error:
data.scope names the limit that refused the request: client (the session), address, or project.
The Data Tool execute endpoint returns:
isError: true.
Retry-After (and data.retryAfter) is the wait time in seconds until the bucket has capacity again. Hosts and clients should respect it — retrying immediately just spins on the rejection.
What the model sees on rate limit
Over MCP, a rate-limited call comes back as a structured error with a retry delay. What happens next is up to the host and its model: some retry after the delay, and some tell the user the tool is unavailable. In a custom host, implement retry with backoff yourself, and respectRetry-After.
Long-running operations
When an execution is counted, a Data Tool that runs near the 60-second sandbox limit consumes one call’s budget. It does not keep counting against the minute cap second by second — but it does take an execution slot until it returns. For long-running flows, split the work so a slow call doesn’t turn into repeated retries that burn the rate budget. See Sandboxed execution.Client-side throttling
Even with server-side limits, throttle on the client for hosts you control:- Assistant SDK. The SDK surfaces a
429as an error rather than queuing the call, so retry afterRetry-Afterin your app if you need to. - Custom MCP clients. Use a token bucket of 300/minute per tool and caller to bound executions even when production preflight-cache hits bypass the server’s Data Tool counter. Also respect the separate MCP request limits.
- Batch when possible. A Data Tool that takes a list of IDs uses one execution; one call per ID uses N.
Monitoring
Rate-limit rejections aren’t recorded in the project’s execution history, so watch for them where the calls are made: count429 responses, and read data.scope to see which limit refused them. Key signals:
- A spike of
429s against one project. Either traffic outgrew the Data Tool cap, or a misbehaving caller is hammering one tool. - Public-anonymous
429s. A public project is hot; either the default is too tight for the use case, or someone’s running a script.scope: "address"points to one network address;scope: "project"means all anonymous callers together hit the ceiling. - Sustained
429s. Plan capacity with support; the Data Tool cap is the limit you’ll need to discuss raising.
Related
Custom MCP hosts
Rate-limit headers and errors from a client’s side.
Project visibility
Public projects, the kill-switch, and anonymous access.
Sandboxed execution
Concurrency and time limits inside the sandbox.
Schema validation
Server-side gates on tool calls.