| 400 | ENFORCE_BODY_UNREADABLE | The request body couldn’t be read |
| 400 | ENFORCE_MALFORMED_REQUEST | Not a single JSON-RPC 2.0 object, or a malformed tools/call |
| 400 | ENFORCE_BATCH_UNSUPPORTED | A JSON-RPC batch (array); never partially evaluated |
| 403 | ENFORCE_MESSAGE_NOT_ALLOWED | A JSON-RPC method that is neither tools/call nor in public_methods |
| 403 | ENFORCE_ACTION_UNMAPPED | No exact canonical action is mapped for this tool in the signed bundle |
| 403 | ENFORCE_DECISION_DENY | /decide refused the action |
| 405 | ENFORCE_METHOD_NOT_ALLOWED | An HTTP method the MCP transport doesn’t accept on a protected path |
| 413 | ENFORCE_BODY_TOO_LARGE | Body over max_body_bytes |
| 503 | ENFORCE_NO_VALID_BUNDLE | No verified signed bundle is active yet |
| 503 | ENFORCE_DECIDE_UNAVAILABLE | /decide timed out, errored or was unreachable, or the client is not configured to call it |
| 503 | ENFORCE_TRUSTED_CONTEXT_UNREPRESENTABLE | An allow could not be passed to your handler as headers; the request was not forwarded |