createmcps.com

MCP-ERR-005

No undefined code is emitted in the reserved -32020…-32099 range

“Implementations MUST NOT emit any code from this sub-range that is not defined by this specification and MUST use defined codes only with their specified meanings.” — spec anchor

How to fix this

Inside `-32020`…`-32099` use only `-32020`, `-32021` and `-32022`, and only with their specified meanings. That range is reserved for the specification.

Example: failing and passing

The server invents code -32050 for rate limiting, inside the -32020…-32099 range the specification reserves for itself.
Violates MCP-ERR-005 · JSON
{
  "jsonrpc": "2.0",
  "id": 3,
  "error": {
    "code": -32050,
    "message": "Rate limit exceeded"
  }
}
The server uses an application-defined code outside the JSON-RPC reserved range -32768…-32000.
Complies with MCP-ERR-005 · JSON
{
  "jsonrpc": "2.0",
  "id": 3,
  "error": {
    "code": 1001,
    "message": "Rate limit exceeded"
  }
}

How the validator checks this

Probe P2.1, against a streamable-http server on the modern protocol. What it reports:

pass
Every code in the reserved -32020…-32099 range was one the specification defines
fail
Emitted … in the reserved -32020…-32099 range, which the specification does not define. Only -32020, -32021 and -32022 are defined there.

Quoted from the probe that runs this check, so it cannot drift from what the validator actually reports.

This rule is checked deterministically: a fail here is a certain violation, not an inference.

Checked in the same request as MCP-HDR-008, MCP-HDR-009, MCP-RES-003, MCP-RES-006, MCP-RES-007, MCP-ERR-003, MCP-ERR-004, MCP-ERR-008, MCP-CAC-001, MCP-CAC-002, MCP-CAC-003, MCP-CAC-004, MCP-CAC-005, MCP-SCH-001, MCP-SCH-002, MCP-SCH-003, MCP-SCH-004, MCP-SCH-005, MCP-SCH-006, MCP-SCH-007, MCP-SEC-004, MCP-SEC-005, MCP-SEC-006, MCP-DEP-005.

Check your own server against MCP-ERR-005

Probe P2.1 checks MCP-ERR-005 in the same request as 24 other rules, so one run shows your server's result for this rule next to the rest. Validate a server or read how the validator works.

Background on this topic: MCP error codes explained.

Other Error codes rules

  • MCP-ERR-001Unsupported version returns -32022 with data.supported[]
  • MCP-ERR-002Unknown method returns HTTP 404 and JSON-RPC -32601
  • MCP-ERR-003Resource-not-found uses -32602, not the retired -32002
  • MCP-ERR-004The retired -32042 code is never emitted
  • MCP-ERR-006Missing required _meta field returns HTTP 400 + JSON-RPC -32602
  • MCP-ERR-007Missing client capability returns -32021 with data.requiredCapabilities
  • MCP-ERR-008New implementation-defined codes avoid the legacy -32000…-32019 range