MCP-RES-007
tools/list returns a deterministic order
“Servers SHOULD return tools from tools/list in a deterministic order to enable client-side caching and improve LLM prompt cache hit rates.” — spec anchor
How to fix this
Return tools from `tools/list` in a deterministic order. A stable order is what lets clients cache the list and improves LLM prompt cache hit rates.
How the validator checks this
Probe P2.1, against a streamable-http server on the modern protocol. What it reports:
- info
- tools/list returned … tools. Order stability across requests is checked by the repeat-request probe; a single response cannot establish it.
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-ERR-003, MCP-ERR-004, MCP-ERR-005, 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 this rule
The validator makes real protocol requests and reports this rule as pass, warn or fail alongside the other 78. Validate a server or read how the check works.
Other Result and message shape rules
- MCP-RES-001Every result includes resultType
- 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