MCP-STL-008
tools/list does not vary per connection
“List endpoints (tools/list, resources/list, prompts/list) no longer vary per-connection.” — spec anchor
How to fix this
Return the same tool list on every connection. `tools/list`, `resources/list` and `prompts/list` no longer vary per connection, so per-connection filtering has to move into the tools themselves.
How the validator checks this
Probe P1.2, against a streamable-http server on the modern protocol. What it reports:
- pass
- tools/list returned the same … tool… on two separate requests
- fail
- tools/list varied between two requests — … tool(s) disappeared, … appeared. List endpoints no longer vary per connection in this revision.
- skip
- tools/list did not return a readable tools array on both samples, so per-connection variance could not be compared
Quoted from the probe that runs this check, so it cannot drift from what the validator actually reports.
This rule is checked heuristically: a fail is inferred rather than certain, so it bumps the overall grade up one level instead of being treated as certain non-compliance.
Checked in the same request as MCP-STL-004.
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 Statelessness and session removal rules
- MCP-STL-001Server never mints or echoes Mcp-Session-Id
- MCP-STL-002A client-supplied Mcp-Session-Id is ignored, not required
- MCP-STL-003A cold modern request succeeds with no prior handshake
- MCP-STL-004Server does not rely on prior requests over the same connection
- MCP-STL-005GET on the MCP endpoint returns 405
- MCP-STL-006DELETE on the MCP endpoint returns 405
- MCP-STL-007Last-Event-ID is ignored — streams are not resumable