Findings from operating a federated registry that indexes all four public ARD registries plus the official MCP Registry, currently 9,995 entries from 5,666 publishers. Sharing them because each one silently breaks interop today, and each has a cheap fix at the spec level.
1. Both URN prefixes are live in the wild, at scale
Counting identifier exactly as published, across everything we index:
| prefix |
entries |
urn:air: |
8,869 |
urn:ai: |
1,125 |
The urn:ai: population is dominated by GitHub's Agent Finder (774 of its 782 entries) but is not only them: we also see it from publishers' own /.well-known/ard.json manifests (259) and from WellKnown (56). Since #38/#39 settled on urn:air:, the practical effect is that any client or registry comparing identifiers across sources drops or double-counts about 11% of the ecosystem unless it normalises both.
Suggested fix: one sentence in §the identifier section stating that consumers SHOULD treat urn:ai: as an alias of urn:air: during the transition, or a normative MUST-normalise rule for registries.
2. Media-type fragmentation defeats exact-match filters
The same resource kind is published under several spellings. As written by publishers, across our whole index:
| media type |
entries |
application/mcp-server-card+json |
3,882 |
application/mcp-server |
3,605 |
application/mcp-server+json |
356 |
Filters match exactly, so a client filtering for any one spelling silently loses more than half of the MCP servers in the ecosystem. Same shape as issue #66's question about non-standard types, but this is divergence within the standard kind. A short alias table in the spec (or a SHOULD-normalise for registries) would close it.
3. Conformance reality of the live registries
Ran this repo's conformance tool (v0.9.1) against the public registries on 2026-08-31:
| registry |
POST /search |
GET /agents |
POST /explore |
| GitHub Agent Finder |
200 |
200 but not a paginated object (fails the tool) |
400 |
| WellKnown |
200, returns referrals only |
404 |
200 |
| Hugging Face Discover |
200 |
404 |
501 |
| Desvela |
200 |
404 |
400 |
Two observations for the spec rather than for those implementations: (a) GET /agents is the least-implemented mandatory surface, and the one place the conformance tool and a major implementation disagree, so an example response in the spec would help; (b) federation: auto is specified as the default mode, but in practice each registry answers only from its own catalogue, and one returns referrals for auto. If auto is intended to mean "the registry merges", a clarifying sentence would make the conformance tool able to test it.
Happy to share the underlying data for any of these counts, and to re-run the sweep if it is useful for a future spec revision. All numbers are from 2026-08-31 and reproducible against the live services.
Findings from operating a federated registry that indexes all four public ARD registries plus the official MCP Registry, currently 9,995 entries from 5,666 publishers. Sharing them because each one silently breaks interop today, and each has a cheap fix at the spec level.
1. Both URN prefixes are live in the wild, at scale
Counting
identifierexactly as published, across everything we index:urn:air:urn:ai:The
urn:ai:population is dominated by GitHub's Agent Finder (774 of its 782 entries) but is not only them: we also see it from publishers' own/.well-known/ard.jsonmanifests (259) and from WellKnown (56). Since #38/#39 settled onurn:air:, the practical effect is that any client or registry comparing identifiers across sources drops or double-counts about 11% of the ecosystem unless it normalises both.Suggested fix: one sentence in §the identifier section stating that consumers SHOULD treat
urn:ai:as an alias ofurn:air:during the transition, or a normative MUST-normalise rule for registries.2. Media-type fragmentation defeats exact-match filters
The same resource kind is published under several spellings. As written by publishers, across our whole index:
application/mcp-server-card+jsonapplication/mcp-serverapplication/mcp-server+jsonFilters match exactly, so a client filtering for any one spelling silently loses more than half of the MCP servers in the ecosystem. Same shape as issue #66's question about non-standard types, but this is divergence within the standard kind. A short alias table in the spec (or a SHOULD-normalise for registries) would close it.
3. Conformance reality of the live registries
Ran this repo's conformance tool (v0.9.1) against the public registries on 2026-08-31:
POST /searchGET /agentsPOST /explorereferralsonlyTwo observations for the spec rather than for those implementations: (a)
GET /agentsis the least-implemented mandatory surface, and the one place the conformance tool and a major implementation disagree, so an example response in the spec would help; (b)federation: autois specified as the default mode, but in practice each registry answers only from its own catalogue, and one returns referrals forauto. Ifautois intended to mean "the registry merges", a clarifying sentence would make the conformance tool able to test it.Happy to share the underlying data for any of these counts, and to re-run the sweep if it is useful for a future spec revision. All numbers are from 2026-08-31 and reproducible against the live services.