Errors and limits
What Restoman answers when it can't: errors from its API, OAuth, the MCP and the agents, and their limits.
Every answer carries X-Request-Id, and every error is JSON. That id is what to send support if something goes wrong.
The API
An API error is { "type", "code", "requestId" }: type says its kind (unauthorized, forbidden, not_found, validation, rate_limited, unavailable…) and code, when there is one, the exact reason. A 429 carries Retry-After and retryAfter in seconds.
OAuth
The authorization server answers OAuth errors (RFC 6749): { "error", "error_description" }, such as invalid_grant or invalid_request. Its per-address limit answers 429 with { "code": "RATE_LIMITED", "message", "retryAfter" } and Retry-After.
The Restoman MCP
| Answer | What it means |
|---|---|
401 with WWW-Authenticate |
No token, or an expired or revoked one: go back to OAuth |
403 with insufficient_scope |
The token lacks that tool's scope: the person connects again |
A result with isError and a code |
The person's role or the business's state doesn't allow it (MISSING_PERMISSION, LOCATION_NOT_ASSIGNED, CEILING_…) |
429 with Retry-After |
Over 120 calls a minute or 2,000 an hour, per person and agent |
JSON-RPC -32602 |
Arguments that aren't the tool's |
Report a tool's error as it is and send the person to the dashboard: never look for a way around it.
The public MCPs and agents
- A
POSTover 16 KB answers413, and anOriginfrom another site,403. - JSON-RPC:
-32700is JSON that can't be read,-32600a message that isn't JSON-RPC 2.0,-32601a method that doesn't exist, and-32602wrong arguments. - A slug or a guide that doesn't exist answers a result with
isError, not a protocol error. - The A2A agents answer A2A's codes:
-32001for a task (they keep none),-32003for push notifications,-32004for streaming,-32005for files,-32007for the extended card, and-32009for a version they don't speak.