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.

SurfaceLimitApplies to
Reads60 / minuteEvery gads_list_* / gads_get_* / gads_run_gaql_query call.
Writes10 / minuteEvery 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.