What it means
Aeris enforces per-user and per-organisation QPS ceilings so a runaway agent loop cannot drain your budget or degrade other tenants. When the ceiling is hit the request is rejected with a mandatory retry_after_ms hint the client MUST honour.
This is the only 4xx that is safely retryable — no state changed.
How to fix
- Sleep for at least
retry_after_ms before retrying the exact same call.
- If your workflow batches actions, batch them further so each request does more work.
- If you see this consistently on read tools, cache results client-side and de-duplicate identical requests within a short window.
The MCP Worker mirrors this into a JSON-RPC error with the same retry_after_ms. Do not busy-loop — ignoring the hint will only extend the throttle window.
Response envelope
{
"ok": false,
"error_envelope": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded.",
"docs_url": "https://tryaeris.ai/docs/mcp/errors/rate-limited",
"retryable": true,
"retry_after_ms": 2500,
"details": {}
}
}
UPSTREAM_UNAVAILABLE — the other retryable, but caused by a partner outage.
TIMEOUT — the tool ran but did not finish inside its budget.