MCP-RES-001
Every result includes resultType
“The result MUST include a resultType field to indicate the type of the result.” — spec anchor
How to fix this
Include a `resultType` field on every result you return.
Example: failing and passing
Violates MCP-RES-001 · JSON
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"supportedVersions": ["2026-07-28"],
"capabilities": {"tools": {}},
"ttlMs": 3600000,
"cacheScope": "public"
}
}Complies with MCP-RES-001 · JSON
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"resultType": "complete",
"supportedVersions": ["2026-07-28"],
"capabilities": {"tools": {}},
"ttlMs": 3600000,
"cacheScope": "public"
}
}How the validator checks this
Probe P1.1, against a streamable-http server on the modern protocol. What it reports:
- pass
- resultType present: "…"
- fail
- Response body is not safely parseable JSON (…)
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-DSC-001, MCP-DSC-002, MCP-DSC-003, MCP-DSC-004, MCP-DSC-005, MCP-STL-003, MCP-RES-002, MCP-RES-005.
Check your own server against MCP-RES-001
Probe P1.1 checks MCP-RES-001 in the same request as 8 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: the 2026-07-28 migration guide.
Other Result and message shape rules
- MCP-RES-002resultType is a value defined by core or an advertised extension
- MCP-RES-003Server sends no independent JSON-RPC requests on a response stream
- MCP-RES-004Accepted notification POST returns 202 with no body
- MCP-RES-005Response is application/json or text/event-stream; SSE terminates with the final response
- MCP-RES-006SSE responses set X-Accel-Buffering: no
- MCP-RES-007tools/list returns a deterministic order