Rate limits
Per-user limits on the MCP surface — generous for reads, tight for money-moving writes.
Rate limits are keyed by the authenticated user, not the token, so minting more tokens doesn't raise your ceiling.
| Surface | Limit | Applies to |
|---|---|---|
| Reads | 60 / minute | Every gads_list_* / gads_get_* / gads_run_gaql_query call. |
| Writes | 10 / minute | Every gads_propose_* and approval call — the money-moving surface. |
When you exceed a limit the tool returns an error with a retry interval:
{ "ok": false, "error": "Rate limit exceeded for 'gads_propose_budget_change'. Retry in 6s." }Back off for the stated interval and retry. The write limit is intentionally tight — writes move real spend, so batching many at once is a smell, not a goal.
Auto-apply has its own separate ceiling: at most 20 auto-applies per account per 24 hours. Past that, bounded changes still queue for approval rather than applying.