Skip to content

One domain holds 75 registry entries under 75 separately-registered namespaces, and 62 of them serve text/html #1488

Description

@siliroid

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 namespacescom.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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions