What is limited
The server API is not rate limited. It requires a secret key, which is a
credential you control, so the throttle would bound only you.
The MCP endpoints are limited, and that matters most on the workspace-level
endpoint, which is unauthenticated — the only credential is a workspace id in a
URL that people paste into assistants.
The ceilings
Requests per minute, per route.
Trial workspaces, and any plan Peeve does not recognise, get the Starter tier —
tier resolution fails closed, so a ceiling is never raised by accident.
Buckets are per route, and the window is a fixed 60 seconds.
For MCP specifically:
- The workspace endpoint buckets per workspace and per hashed source IP. There is no key bucket, because there is no key.
- The per-user endpoint buckets per workspace and per contact — the identity the grant is bound to. The token itself never goes in a bucket, because it is a secret.
Handling a 429
Every rate-limited response carries aretry-after header, in seconds. Honour
it.
429 with JSON-RPC code -32002 — not a
200 with an error member — precisely so clients back off properly.
If a client is polling
tools/list on a timer, stop. The MCP server reports
listChanged: false, so the list does not push updates and re-listing on a
loop is the usual cause of a 429.