What it does
1
initialize
Sends
initialize with Accept: application/json, text/event-stream,
asking for protocol revision 2025-11-25 — the newest the official SDKs
ship, rather than the newest that exists, because a server handed a version
it has never heard of is entitled to refuse outright.2
notifications/initialized
The lifecycle notification, in order, because some servers refuse
tools/list before it.3
tools/list
Collects your tools and their input schemas.
4
The checks
Runs all eleven rules against what it found. See the
checks reference.
initialize carries the negotiated protocol version,
not a hardcoded one. Sending a hardcoded version is how a client ends up telling
a server it speaks a revision that server just declined — the source of the
Bad Request: Unsupported protocol version failure real clients hit.
It goes in the front door
The probe reaches your server through the same edge, routing, path policy and event tee that a real agent hits — not by dialling your local port directly. So a misconfiguration that would break Claude.ai breaks the probe first, which is the entire point. A probe that took a shortcut would happily pass on a setup no real client can use.When your server refuses SSE
If your server rejectsAccept: text/event-stream with a 406 or 415, the probe
doesn’t give up. It names the problem —
transport/accept-sse — and retries without SSE
so you still get the rest of the report.
A half report with a clear cause beats no report.
Running it without a tunnel
You don’t need a public URL to get a report:2 if anything will break, 1 on warnings only, 0 when
clean. See heymcp probe.
Re-probing after a fix
In the inspector’s Handshake tab, re-run the probe against the live tunnel. Reports are kept as history rather than overwritten, so you can see whether the change you just made actually cleared the finding.Protocol versions HeyMCP knows
mcp/protocol-version warning — either it’s a
typo, or your HeyMCP build is older than your server and wants updating.
2026-07-28 is in the list because Claude already sends it. A server that
answers with it is ahead of HeyMCP, not broken, and is not flagged.