DOCS NAV · STATUS CODES & ERRORS ▾
STATUS CODES & ERRORS
Every status the proxy can return, what it means, and the recovery step.
PHILOSOPHY
The proxy is honest about why a call failed. We use HTTP status codes for proxy-level decisions (auth, billing, rate limits, upstream availability) and pass through everything else from the publisher's MCP unchanged.
REFERENCE
Every code you can see, grouped by class. Click any card to jump to its example body.
2XX · SUCCESS
4XX · CLIENT
Retry-After. See rate limits.5XX · SERVER
ERROR BODY
Proxy errors return a JSON body alongside the HTTP status — matching JSON-RPC 2.0 error shape so MCP clients can surface it cleanly:
{
"jsonrpc": "2.0",
"id": "req_82",
"error": {
"code": -32402,
"message": "Insufficient credit",
"data": {
"reason": "out_of_credit",
"balance_micro": 240,
"price_micro": 800,
"topup_url": "https://mcpmeter.com/billing/topup"
}
}
}
The data object's shape varies by error. Common fields:
reason— machine-readable code (out_of_credit,cap_reached,rate_limited,upstream_error, …).request_id— mirrors theX-Mcpmeter-Request-Idheader.retry_after— seconds, on429.balance_micro,price_micro— on402.
AUTOMATIC REFUNDS
If the upstream returns 5xx or times out, the debit is automatically reversed by the proxy in the same request. You will not be charged for failed publisher calls.
You'll see two ledger rows in your activity log: a usage debit and a refund credit, both for the same µ¢ amount. The publisher does not earn payout for failed upstream calls.
REPORTING AN ISSUE
Quote X-Mcpmeter-Request-Id when emailing [email protected]. We can pull the entire call's metadata from that ID alone — no need to attach logs.