Rate limits
A request counts against the same budget whether it arrives over REST or MCP. "API client" below means the OAuth client, not a client record.
| Limit | Per | Covers |
|---|---|---|
| 120 requests per rolling minute | API client | Reads outside the computation domain |
| 60 requests per rolling minute | API client | The computation domain: the catalog, target-contract reads, batch and rollover execution, and saved-state scenarios |
| 240 requests per rolling minute | Principal, MCP only | Every MCP request after the bearer token is verified, including initialize, tool and resource listing, and notifications |
| 30 attempts per rolling minute | API client (verified), across source IPs; per practitioner and workspace for delegated grants | Token minting |
| 90 requests per rolling minute | Source IP | Pre-authentication work on REST and the OAuth endpoints, plus rejected MCP authentication attempts |
| 500 requests per five minutes | Source IP | All traffic |
Delegated-user tokens (delegated access) draw on the read and computation budgets per practitioner and workspace rather than per application, so two hosts authorized by the same user share that user's allowance.
The source-IP budgets are raised for the published address ranges of interactive AI hosts, where many users share a few addresses: 1,000 per minute for pre-authentication work and 5,000 per five minutes for all traffic. On REST and the OAuth endpoints an independent budget of 240 per minute per presented bearer token also applies, wherever the token is sent from; both must pass.
Exhausting a budget is a 429. Token-minting exhaustion carries the OAuth error temporarily_unavailable; the MCP transport budget carries {"error": "rate_limit_exceeded"}; read or computation exhaustion inside an MCP tool call is a tool error with retry guidance rather than an HTTP status.