Skip to content

MCP server: tools/list and prompts/list omit resultType, so 2026-07-28 clients get zero tools #186

Description

@atej

The MCP endpoint at https://mcp.specification.website/mcp connects fine but
serves no tools to any client that negotiates protocol revision 2026-07-28.
Claude Code has dropped all 6 tools and the audit_url prompt since roughly
2026-08-17 14:00 UTC.

The failure is quiet. initialize succeeds, so the client accepts the server
and loads its instructions — the server looks healthy in the client's server
list while exposing nothing.

What the client reports

tools/list failed (Invalid result for tools/list: missing required resultType —
servers implementing protocol revision 2026-07-28 MUST include it (the
absent-means-complete bridge applies only to earlier-revision servers));
retrying in 250ms
...
Failed to fetch tools: Invalid result for tools/list: missing required resultType
Failed to fetch commands: Invalid result for prompts/list: missing required resultType

Four retries with backoff, then both lists are discarded.

Reproduction

1. List results carry no resultType

curl -s -X POST https://mcp.specification.website/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Mcp-Protocol-Version: 2026-07-28' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jq '.result | keys'

Actual:

["tools"]

Expected for revision 2026-07-28: a resultType member alongside tools.
prompts/list behaves the same way (["prompts"]).

2. initialize downgrades a 2026-07-28 request

curl -s -X POST https://mcp.specification.website/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{
        "protocolVersion":"2026-07-28","capabilities":{},
        "clientInfo":{"name":"probe","version":"0.0.1"}}}' \
  | jq -r '.result.protocolVersion'

Actual: 2025-11-25
Expected: 2026-07-28

https://specification.website/mcp/ states the server speaks the 2026-07-28
revision, with 2025-11-25, 2025-06-18 and 2025-03-26 kept as deprecated
fallbacks. The initialize path does not appear to know the current revision at
all.

3. No handshake-less path either

The endpoint's CORS preflight advertises Mcp-Method and Mcp-Name in
Access-Control-Allow-Headers, which suggests the handshake-less mode the spec
page describes for 2026-07-28. It is not implemented:

curl -s -X POST https://mcp.specification.website/mcp \
  -H 'Content-Type: application/json' \
  -H 'Mcp-Protocol-Version: 2026-07-28' \
  -H 'Mcp-Method: tools/list' -d '{}'
# {"jsonrpc":"2.0","id":null,"error":{"code":-32601,"message":"Method not found: undefined"}}

A GET returns 405 with MCP endpoint requires POST with a JSON-RPC body.

So a 2026-07-28 client has no working route to the tool list.

Scope

Every list-shaped result the worker returns needs resultType when the
negotiated revision is 2026-07-28 — tools/list and prompts/list at minimum.
The tool schemas themselves are fine: all 6 tools carry valid inputSchema,
outputSchema, title and annotations.

Environment

  • Endpoint: https://mcp.specification.website/mcp
  • serverInfo: specification-website 0.2.0
  • Client: Claude Code 2.1.237, Node 26.3.0, macOS
  • First observed: between 2026-08-17 13:25 and 14:23 UTC. 101 consecutive
    sessions since, all failing identically. Earlier sessions on the same client
    version connected and listed tools normally.
  • All three reproductions re-confirmed 2026-08-24.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions