ardregistry.net

Data

State of ARD

ARD was announced in June 2026 and most of what has been written about it describes intentions. These are counts, taken from a live index, with the method written out.

As of 15 September 2026: 40,525 agentic resources from 19,976 publishers, carrying 130,912 tools, with 81.0% of probed endpoints answering.

The number worth your attention is different: of 16,437 endpoints asked to list their tools, only 5,431 did. 3,505 legitimately wanted credentials, but 5,074 returned 404 or 405, and many of those are working servers answering discovery requests wrongly.

Headline figures

40,525resources indexed
19,976distinct publishers
130,912tools enumerated
81.0%endpoints answering

Counted 15 September 2026. These come from one index, not from the whole web, and no index has a complete view. The method is at the bottom of this page and the raw counts are at /api/stats.json if you would rather check than trust.

What is actually being published

The ecosystem is overwhelmingly MCP servers. Agents, the thing most of the launch coverage led with, are the smallest category by a wide margin.

FamilyCountShare
MCP servers33,49782.7%
Skills3,2408.0%
OpenAPI services2,8006.9%
Documentation3450.9%
A2A agents1010.2%
Catalogs160.0%
Registries130.0%

The gap between the announcements and the index. There are 33,497 MCP servers and 101 A2A agents. That is a ratio of roughly a hundred to one. Whatever the agent-to-agent web becomes, in September 2026 the thing agents actually discover is tools.

Where entries come from

Almost nothing arrives because someone submitted it. Discovery of publishers is itself a crawl problem, which is why publishing a manifest and waiting does not work.

SourceEntriesWhat it means
MCP Registry32,178The official MCP server registry
Well-known crawl4,083Manifests found at /.well-known/ on crawled domains
apis.guru2,509An open OpenAPI corpus
ARD Registry Hub1,316Federated from ardregistry.org
Open crawl1,666Discovered by following links
Hugging Face1,690Spaces and Skills
GitHub934Repository scanning
Desvela271Federated
Submitted directly96Entries the registry attributes to its submit door

Read the last row carefully, because we got it wrong once. It counts entries whose recorded source is the submit door, and a whole domain submitted there is handed to the same crawler that handles everything else, so it comes back attributed to crawl. The number of entries therefore understates the number of submissions by roughly three to one.

The figure that actually means something comes from the registry's submission log rather than its entries table: eleven publishers, out of 19,976, have ever submitted anything. If you have published a manifest and heard nothing, that is the reason. Publishing is necessary; being discoverable as a domain is a separate problem, and almost nobody does the second part.

Manifests, which is not the same as publishers

The publisher count above is every domain with an entry, and most arrived because we crawled the MCP Registry or an OpenAPI corpus. The number that measures ARD itself is how many domains put a manifest on their own domain on purpose.

MeasureCountWhat it is
Domains crawled376,018Checked for a manifest at a well-known path
Serving a manifest254The real adoption figure
On ard.json66Current, and what a conformant consumer fetches
On the predecessor path188Superseded 26 August 2026; consulting it is optional for consumers

74% of everyone who has published is on a path the specification replaced. The full breakdown, and who they are.

What happens when you actually call these things

This is the part that cannot be got from anyone's announcement. Every indexed endpoint that advertises tools gets asked to list them. Of 16,437 asked:

ResultCountShareWhose problem it is
Answered with tools5,43133.0%Working as intended
Wanted credentials3,50521.3%Legitimate. An anonymous crawler cannot enumerate a private server.
HTTP 4044,44727.1%Usually a bug. Often a POST-only route answering a GET with 404.
HTTP 4221,1637.1%Rejected the request shape. Protocol version mismatch, usually.
HTTP 4056273.8%Correct answer to a wrong verb, and a sign the URL indexed is not the endpoint.
Connection failed3212.0%Gone, moved, or firewalled.
HTTP 4292411.5%Rate limited us. Fair.
Handshake failed1671.0%Reachable, but the MCP handshake did not complete.

Read that table the right way. Only 33 percent answered, but that is not 67 percent broken. Authentication is a legitimate answer and accounts for 3,505 of them. What is genuinely worth someone's attention is the 5,074 endpoints returning 404 or 405, because a large share of those are servers that work fine for anyone holding the right URL and are answering discovery requests in a way that makes them look absent.

One specific thing worth checking on your own server. We shipped this bug ourselves. A POST-only endpoint that answers a GET with 404 tells an SDK client the endpoint does not exist, so the client gives up rather than retrying correctly. It cost us two days of handshakes with zero completed tool calls before anyone noticed, because from the outside it looks exactly like nobody is using you. If you run an MCP server, curl a GET at it and check you get 405 rather than 404.

Tool descriptions and prompt injection

A question usually answered with speculation, so here is a count. All 130,912 tool descriptions in the index were scanned for text addressed at a model rather than at a developer.

CheckResult
Descriptions carrying any model-directed text74 of 130,912, which is 0.076%
Descriptions using override phrasing such as ignore previous instructions0
Descriptions containing steganographic or invisible codepoints0

So there is close to nothing to find, and that is the finding. It is worth saying plainly because the first version of this scan flagged Persian zero-width non-joiners and three security vendors whose tools legitimately discuss injection, which would have publicly accused four honest publishers of something they did not do. A detector with no measured base rate is a defamation machine. None of this is an argument against sandboxing what you invoke.

Method

Stated so you can discount it appropriately.

If you want to check any of this, the numbers that would embarrass us are in the same table as the ones that do not. That is the point of publishing the method.

Last reviewed 2026-09-04. Checked against ARD v0.91 (Proposal, 2026-08-26).