Measurement
We asked 7,708 MCP servers to say hello. 46% couldn't.
Public MCP registries list thousands of servers, and every listing is a claim someone typed. We tested the claims: a standard initialize handshake and a tools/list against every endpoint we index. Almost half failed the first message of their own protocol, a quarter demanded credentials no registry records, and the third that worked handed us the largest verified tool corpus that exists.
What we did
Neuronto indexes MCP servers from public ARD manifests, the official MCP Registry and every
public ARD registry. Each entry arrives as a claim: a name, an endpoint URL, a description of what
it can do. Claims are cheap, so we started asking. Two read-only JSON-RPC calls per endpoint,
initialize and then tools/list, over streamable HTTP, with a short
timeout and no retries. No tool was ever called. The whole sweep across 7,708 endpoints took
about six minutes.
The result
| outcome | servers | share |
|---|---|---|
| answered and returned tools | 2,223 | 28.8% |
| answered, no tools exposed | 20 | 0.3% |
| demanded credentials first | 1,918 | 24.9% |
| failed the handshake entirely | 3,547 | 46.0% |
Almost half of the MCP servers listed in public registries do not answer the first message of their own protocol.
How they fail
The failures are not one thing. The two biggest buckets are instructive:
| failure | count | what it usually means |
|---|---|---|
| HTTP 404 | 1,150 | the manifest points at a path that does not exist. The domain is alive; the endpoint was never there or has moved |
| HTTP 422 | 1,122 | the endpoint exists but rejects a standard initialize, usually a framework wrapper that never spoke MCP |
| HTTP 405 | 428 | something is at the URL but does not accept POST, often a docs page listed as an endpoint |
| connection refused / DNS | 318 | the host itself is gone |
| HTTP 429 | 210 | rate limited before one handshake, which for an agent-facing service is its own finding |
| HTTP 402 | 67 | payment required before hello |
| everything else | 252 | timeouts, malformed replies, TLS and origin errors |
A 404 and a 422 are different lies. The 404 is a stale listing, the ordinary rot of any directory built on self-published metadata. The 422 is stranger and more interesting: someone deployed a thing, registered it as an MCP server, and it cannot complete the protocol's opening message. Both look identical in every registry that lists them, because no registry checks.
The quarter nobody records
1,918 endpoints, one in four, answered with 401 or 403: real servers, running, that want credentials before they will list their tools. That is a perfectly legitimate design. What is strange is that no public registry records it. An agent picking a server from a listing cannot tell an open endpoint from a gated one until it has already tried, which at agent speed means thousands of doomed handshakes a day across the ecosystem.
We now store it as a field. It is queryable, and it is on the badge.
What the working third gave us
The 2,223 servers that answered returned 31,411 tools between them: names, descriptions and JSON input schemas, read from the running server rather than from its marketing copy. That corpus is the part of this measurement with lasting value, because tool retrieval research (ToolRet, ACL Findings 2025) keeps finding that retrieval models do poorly at exactly this matching task, and it has been benchmarked so far on assembled datasets rather than the live, messy ecosystem: the 400-tool grab-bag servers, the promotional descriptions, the truncated schemas. We publish the whole thing as a dataset, and it powers tool-level search on this index.
What this says about discovery
Every registry in this space, ours included, is downstream of self-published metadata. The measurement above is what that metadata is worth unchecked: for every two servers a listing shows an agent, one does not exist. Liveness checking is not a nice-to-have for agent infrastructure, it is the difference between a directory and a rumour mill.
Neuronto probes every indexed endpoint and demotes what does not answer rather than deleting it, because services come back. Verified tool counts, reachability and the auth requirement are all fields on our search API, and all statements about what we observed, never about trust.
Use Neuronto from your agent
One call searches this index and every other public ARD registry. No key, no signup. Or install it as an MCP server and let the agent search from the interface it already speaks.
curl -s https://neuronto.com/search \
-H 'content-type: application/json' \
-d '{"query":{"text":"scrape a website"},"federation":"auto"}'
claude mcp add --transport http neuronto https://neuronto.com/mcp