Documentation

Errors

JSON-RPC (MCP)

CodeMeaning
-32700Parse error (malformed JSON)
-32600Invalid request (wrong envelope shape, or a JSON array body — batching is not supported)
-32601Method not found
-32602Invalid params (including a tool's own argument validation failing)
-32603Internal error
-32001Missing, malformed, unknown or revoked token
-32002Per-minute or per-day limit consumed
-32003The organization does not hold the Bellaso agent entitlement

Transport errors vs. tool errors

A transport error and a tool error are different things. A failed tool call — including a guardrail refusal — comes back as a normal tools/call result with "isError": true at HTTP 200. Only protocol-level problems (bad JSON, unknown method, auth, rate limit, entitlement) use the error envelope.

HTTP (REST)

StatuserrorMeaning
400validation_error / invalid_jsonBody was not a JSON object, or arguments failed the tool's schema. path names the failing argument.
401unauthorizedMissing, malformed, unknown or revoked token — all four are reported identically.
402subscription_requiredThe organization's agent entitlement is not active. Opaque by design: no tier or lapse detail.
403tool_deniedThe tool refused the call — an unentitled module, or an out-of-policy argument. Not a failure; a guardrail.
404not_foundNo such tool, or this token may not call it. Deliberately indistinguishable.
405method_not_allowedWrong HTTP method for the path; the Allow header names the right one.
413payload_too_largeBody exceeds 64 KiB.
429rate_limitedLimit consumed. Retry-After carries the seconds to wait.
500tool_error / internal_errorThe tool failed. tool_error carries the tool's own message; internal_error means the detail is in the audit log, not the response.
503service_unavailableToken lookup itself failed. A transient infrastructure fault is never reported as a bad token.

Every REST error body is the same flat shape: { error, message, path?, request_id }.

Last modified on