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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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