Errors use an HTTP status and a string error code.Error response#
{
"error": {
"code": "INVALID_PARAMETER",
"message": "Invalid endDate",
"requestId": "44444444-4444-4444-8444-444444444444",
"details": [{ "field": "endDate", "reason": "out_of_range" }]
}
}
| HTTP / code | Action |
|---|
| 400 INVALID_PARAMETER | Check parameters, dates, groupings or cursor |
| 401 INVALID_API_KEY | Check the key's environment, validity, expiry and revocation status |
| 403 MODULE_NOT_ENABLED / CAPABILITY_REQUIRED | Check subscription entitlement, subscription validity, module availability and key authorization |
| 404 NOT_FOUND | Resource is missing or outside the authorized scope |
| 409 PROJECT_NOT_READY | The project's data context is not ready |
| 429 RATE_LIMITED | Respect Retry-After; reduce frequency/concurrency |
| 429 QUOTA_EXCEEDED | Daily request or evidence allowance exhausted; follow resetAt |
| 429 ENTITY_ACCESS_DAILY_LIMIT_EXCEEDED | Shared project daily entity-access allowance exhausted; follow resetAt |
| 503 DEPENDENCY_UNAVAILABLE / 504 QUERY_TIMEOUT | Retry later or narrow the query |
| 500 INTERNAL_ERROR | Retain requestId for support |
Error details and resetAt are optional. Rate-limit responses include Retry-After. MCP rejects JSON-RPC batch arrays with HTTP 400 / -32600 before calling the backend. MCP entry limits return HTTP 429 / RATE_LIMITED directly, before a tool result exists. Modified at 2026-11-04 09:43:26