Skip to content

Error taxonomy

When a gateway call fails, you receive the error as a uniform JSON envelope:

{
"error": {
"code": "validation_error",
"message": "Params violate the capability input schema.",
"hint": "Call describe(id) and resend params matching input_schema.",
"retryable": false,
"audit_id": "audit_123"
}
}
CodeMeaning for agents
validation_errorInput does not match the schema; read describe and correct
auth_requiredBearer key is missing or invalid
scope_missingKey does not have the required scope
not_found / version_not_foundCheck ID or version
not_implementedvisible in catalog, but not invocable
dry_run_requiredfirst send a successful dry_run with the same parameters
precondition_failedbusiness precondition is missing, do not blindly retry
conflictTarget state conflicts, read again and decide
rate_limitedObserve retry_after_seconds
budget_exceededClarify wallet, budget or policy
capability_disabledKill switch or capability lock is active
approval_required / approval_rejectedHandover or human decision needed
upstream_errorexternal/connected service did not respond cleanly
internal_errorretry later; if it recurs, provide audit ID to support

retryable: true does not mean “spam immediately”. Retry with backoff, the same idempotency key and the same intent. With retryable: false, first change the cause or hand over to a human.

HTTP 412 precondition_failed in the initial path is expected behavior when a business precondition is still missing.

EndpointWhen 412 is expectedResponse
GET /org/currentbefore owner claim or, if agent_email is set, before agent email verificationcomplete the missing OTP step, then use again as a status read
POST /keys/rotatebefore owner claim or before required agent email verificationcomplete the initial path; do not replace a lost key by re-bootstrapping
POST /mcp/dry_runbefore required OTPs or before operator approvalpoll /org/current until operator_approval_status is approved
POST /mcp/invokebefore required OTPs or before operator approvaldo not operate; apply polling or handover rule

Response: Wait for the owner code, call POST /owner-otp/claim and if agent_email is set, additionally verify POST /agent-otp/verify. Afterwards, repeat /org/current as a status read. If operator_approval_status remains pending for a long time, follow the troubleshooting.

Budgets & kill switch