Skip to main content
When a tool call fails, the Aeris MCP server returns a stable, structured envelope so your client can branch on the error rather than parse free text. Every code below has its own page with the exact response shape, retry rules, and the fields you can rely on in details.

Response envelope

Every failure — 4xx or 5xx — carries this shape on the response body:
{
  "ok": false,
  "request_id": "uuid-v4",
  "tool": "read_overview",
  "error": "Human-friendly message.",
  "error_envelope": {
    "code": "ENTITLEMENT_LOCKED",
    "message": "Human-friendly, one sentence.",
    "docs_url": "https://tryaeris.ai/docs/mcp/errors/entitlement-locked",
    "retryable": false,
    "retry_after_ms": null,
    "details": { }
  }
}
The top-level error string is kept for backwards compatibility. New clients should read error_envelope.

Codes

CodeHTTPRetryableMeaning
AUTH_REQUIRED401noMissing or invalid bearer.
AUTH_EXPIRED401noBearer expired mid-session.
ENTITLEMENT_LOCKED403noPlan does not include this tool.
SCOPE_INSUFFICIENT403noOAuth grant is missing a required scope.
VIEWER_READ_ONLY403noAdmin view-as session — writes disabled.
INVALID_INPUT422noInput failed schema or business validation.
IDEMPOTENCY_REQUIRED422noMutating tool called without idempotency_key.
IDEMPOTENCY_CONFLICT409noSame key, different payload.
NOT_FOUND404noUnknown resource, tool, or empty range.
CONFLICT409noTarget already in the requested state.
RATE_LIMITED429yesPer-user or per-org QPS hit.
CONNECTION_EXPIRED424noPartner OAuth needs reconnect.
INSUFFICIENT_CREDIT402noWallet empty for a paid action.
UPSTREAM_UNAVAILABLE502yesPartner API 5xx / DNS / TLS fault.
TIMEOUT504yesTool exceeded its timeoutMs.
INTERNAL500yesUnclassified server error.
Codes are stable UPPER_SNAKE strings. New codes may be added; existing codes will not be renamed inside a major MCP protocol version.