日本語
verify/survey
survey · report 0 published 2026-08-19

We are going to measure servers that nobody asked us to measure.

The check is read only. It reads an endpoint, reads a card, and hashes what it saw. You can point it at a server you do not own, and so can we. Until now we have only ever pointed it at servers that volunteered. That was the mistake.

read only no account weekly at most every result recomputable
Report 0 is out. 22,636 registered, and 12,077 of them declare an address you can reach.

Measured 2026-08-19, one full walk of the official registry, 229 pages, stopping because the cursor ran out rather than because I ran out of patience. Raw JSON, the full endpoint list and the record hash are on the report.

Not one of those endpoints was contacted. This is a count of declarations. Whether they answer is a separate measurement and it is not in report 0.

Read report 0

What this box said before the count was run

It is left here on purpose. The claim this whole page rests on is that the method was published before the result existed. That claim is only checkable if the earlier text is still visible, so it is not edited and it is not deleted.

There is no number on this page yet. A survey that publishes its method after its results can choose the method that produced the results. So the method is here first, in public, with nothing measured. If the numbers turn out to be boring, they get published boring. If they make us look bad, they get published anyway. Our own servers are in the same population and are measured by the same machine on the same day.

written 2026-08-19 before any measurement · superseded the same day by report 0 · kept
Where the population comes from

We had a bigger number. We stopped using it after reading a text file.

The plan was to take the list from a public catalogue that indexes tens of thousands of open source MCP servers, and measure whatever had an address. Then we read its robots.txt.

glama.ai/robots.txt  ·  read 2026-08-19
User-agent: *
  Disallow: /api/
  Disallow: /*/endpoints
  Content-Signal: ai-train=no, search=yes, ai-input=yes

So we did not. One of the five rules we set for ourselves below is that we respect robots.txt. Breaking it on day one, to collect the list for a survey about disclosure, would have settled the question of whether this survey is worth reading.

The population comes from the official registry instead, which publishes a JSON API for exactly this and requires no account.

source
registry.modelcontextprotocol.io/v0/servers
selection
Entries that declare a remote endpoint in remotes[]. The operator states the address themselves. We do not guess which servers are reachable, and we do not scan for them.
excluded
Everything that runs locally over stdio, which is most of them. They cannot be measured from outside, so they are not measured, and they are not counted as failures.
cadence
Weekly at most. A survey that hammers the servers it is judging has already lost the argument.
The five rules we bound ourselves to

Naming a server that failed is a serious thing to do

These are not aspirations. If one of them is broken, the report that broke it gets withdrawn and the withdrawal stays published.

  1. Never write "it went down"

    held means we could not measure it. pending means we measured it and a condition was not met. These are different sentences and they never get collapsed into one. An instrument failure is not a statement about the thing it failed to measure.

  2. State the measurement, not a character judgement

    Not "this server is dishonest". "On 2026-08-19 the agent card carried no compensation disclosure." The first is an opinion we are not qualified to hold. The second is a fact anyone can check.

  3. Ship the recipe and the hash with every claim

    Every verdict carries a record_sha256 and a public procedure to recompute it. A claim about somebody else that cannot be reproduced by the person it is about should not be published.

  4. Keep a door open for corrections

    If you think a measurement of your server is wrong, ask and it is measured again. Both measurements stay published. The old one is not deleted, because deleting it would make the new one unverifiable. The desk exists before the naming does: corrections, free, no account, and you do not have to own the server.

  5. Respect robots.txt and keep the load low

    Read only, weekly at most, and never a tool call. The moment this survey becomes a nuisance to the servers it measures, it stops being a survey.

What the first report will contain

Three counts, and a list

count 1
How many entries are on the registry.
count 2
How many of those declare an address you can reach from outside.
count 3
How many of those actually answered. This is not in report 0. It means sending 12,429 requests to other people's servers, and that is not something to rush because a page said it would happen.
then
For each of the five conditions, how many met it and how many did not, with the list. Our own rows are in the same table.
and
The exact procedure, so you can run it yourself and get the same three counts.

The interesting part is probably count 2. Most people talking about the size of this ecosystem are quoting a number that includes tens of thousands of servers that cannot be reached from anywhere. We do not know the gap yet. Nobody has published it.

Stated plainly

This page exists because the opt-in version of this project did not work. We built a machine, asked people to volunteer their servers, and nobody outside our own customers did. The machine was never the problem. Waiting to be asked was.