I probed every remote endpoint in the registry (10,540 of 10,542 reached; data and method: https://github.com/siliroid/mcp-endpoint-census). One domain stood out far enough to be worth reporting on its own.
What is measurable
clauxel.com has 75 endpoints in the registry, published under 75 distinct publisher namespaces — com.clauxel.a2adependencyinspector, com.clauxel.a2aidentitytoll, com.clauxel.a2areplayreceipt, and so on, one namespace per subdomain.
| result |
count |
405 to a POST, serves text/html on GET |
62 |
404 |
6 |
401 (gated — live, and correct behaviour) |
4 |
completes an MCP initialize handshake |
3 |
I checked the content type on 10 of the 62 individually. All 10 return text/html with CF-Cache-Status: HIT. The page at one of them is titled "Connect agents to a paid remote MCP endpoint — A2A Identity Toll".
So: a GET returns a cached marketing page describing a paid MCP endpoint, and a POST — which is what streamable HTTP actually uses — returns 405, because static hosting does not accept POST.
Reproduce
# advertised endpoint, POST as a client would
curl -sS -o /dev/null -w '%{http_code}\n' -X POST https://a2aidentitytoll.clauxel.com/mcp \
-H 'content-type: application/json' -H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"p","version":"1"}}}'
# => 405
# same URL, GET
curl -sSL -o /dev/null -w '%{content_type}\n' https://a2aidentitytoll.clauxel.com/mcp/
# => text/html
The 62 are listed in broken-rows.csv in the repo above, each with a repro command.
What I am not claiming
I have measured bytes, not intent, and the distinction matters here:
- I do not know that these are not real products. They may be pre-launch, with the listing published ahead of the server. That is a perfectly ordinary thing to do.
- The servers may exist elsewhere.
not-mcp here means the URL in the registry does not serve MCP. It says nothing about whether the software is good or running somewhere else.
- 3 of the 75 do complete a handshake, and 4 more return
401, which is correct behaviour for a gated commercial service. Those 7 cut against the simplest reading and I would rather flag them than leave them out.
- I am not asking for anyone to be removed. That is a policy call and it is yours, not mine.
Why raise it as its own issue
Ecosystem-wide, non-responding endpoints are diffuse — 523 distinct hosts carry the 1,154 broken rows. This is the opposite shape: one operator, one domain, 75 namespace registrations, ~83% of them serving a cached HTML page at the advertised MCP URL. Whatever the intent, a client resolving these gets a marketing page instead of a server, 62 times.
If registry policy has a view on one publisher taking 75 namespaces, this is the case that surfaces it. If it does not, that is also a useful thing to have decided deliberately rather than by default.
Related: #1487 (protocol conformance across the whole registry), #1445 (proposal for health metadata on entries).
Correction note, since it bears on trusting the numbers above: I published the ecosystem figure as 14.4% earlier today and corrected it to 12.2% within two hours — two bugs in my own prober, both inflating it, found by running a stratified control arm (40 suspects and 40 controls, independent HTTP stack). The correction and the mechanism are at the top of that repo. The clauxel figures here are from the corrected run and the content types were checked by hand.
I probed every remote endpoint in the registry (10,540 of 10,542 reached; data and method: https://github.com/siliroid/mcp-endpoint-census). One domain stood out far enough to be worth reporting on its own.
What is measurable
clauxel.comhas 75 endpoints in the registry, published under 75 distinct publisher namespaces —com.clauxel.a2adependencyinspector,com.clauxel.a2aidentitytoll,com.clauxel.a2areplayreceipt, and so on, one namespace per subdomain.405to a POST, servestext/htmlon GET404401(gated — live, and correct behaviour)initializehandshakeI checked the content type on 10 of the 62 individually. All 10 return
text/htmlwithCF-Cache-Status: HIT. The page at one of them is titled "Connect agents to a paid remote MCP endpoint — A2A Identity Toll".So: a
GETreturns a cached marketing page describing a paid MCP endpoint, and aPOST— which is what streamable HTTP actually uses — returns405, because static hosting does not accept POST.Reproduce
The 62 are listed in
broken-rows.csvin the repo above, each with a repro command.What I am not claiming
I have measured bytes, not intent, and the distinction matters here:
not-mcphere means the URL in the registry does not serve MCP. It says nothing about whether the software is good or running somewhere else.401, which is correct behaviour for a gated commercial service. Those 7 cut against the simplest reading and I would rather flag them than leave them out.Why raise it as its own issue
Ecosystem-wide, non-responding endpoints are diffuse — 523 distinct hosts carry the 1,154 broken rows. This is the opposite shape: one operator, one domain, 75 namespace registrations, ~83% of them serving a cached HTML page at the advertised MCP URL. Whatever the intent, a client resolving these gets a marketing page instead of a server, 62 times.
If registry policy has a view on one publisher taking 75 namespaces, this is the case that surfaces it. If it does not, that is also a useful thing to have decided deliberately rather than by default.
Related: #1487 (protocol conformance across the whole registry), #1445 (proposal for health metadata on entries).
Correction note, since it bears on trusting the numbers above: I published the ecosystem figure as 14.4% earlier today and corrected it to 12.2% within two hours — two bugs in my own prober, both inflating it, found by running a stratified control arm (40 suspects and 40 controls, independent HTTP stack). The correction and the mechanism are at the top of that repo. The clauxel figures here are from the corrected run and the content types were checked by hand.