‹ all posts

Erik Rekola · updated 2026-09-28

What 19 identity vendors publish for agents

2026-09-05

A dated scan of 19 identity vendors examines what their public sites expose for agents, and what the results cannot say about the products behind them.

I measured 19 companies that build digital identity and trust products, wallets and verifiable credential infrastructure, the parts of the stack meant to let one machine prove something to another machine. Then I asked the simplest question I could think of about them. Can an agent find out anything at all about these companies without a human in the loop.

How this was measured

The measurement ran on 2026-09-05. One full scan per company with the isitagentready.com scanner on its default profile, run one target at a time, plus my own reads with curl against the same hosts. Sixteen checks applied that day. I am not naming the companies, and I come back to why below.

Levels first. Fifteen came out at Level 1, three at Level 0 and one at Level 2. Nothing above that. The average was 2,8 checks passed out of 16.

The column where every one of them scored zero

The scanner has a group for API, auth, MCP and A2A discovery, nine checks in all: apiCatalog, oauthDiscovery, oauthProtectedResource, authMd, mcpServerCard, a2aAgentCard, agentSkills, webMcp and ard. Every company scored zero of nine. Not one of the 19 publishes an API catalog, an OAuth discovery document, an MCP server card, an A2A agent card or an ARD manifest. One authMd check failed with a 500 rather than a 404, which is a broken answer and not evidence of a missing file, and that is the only nuance in the whole column. These are companies whose product is machine to machine verifiable identity.

The smaller readings

Two of the 19 serve no robots.txt at all. A third serves one with no wildcard rule, so the file exists and says nothing about most crawlers. Content Signals, the line where a site declares whether it wants its text used for AI training, appeared exactly once in the set. That company says ai-train=no and search=yes. Markdown content negotiation worked on one company as well, though that is a single reading and I have not repeated it. The same check moved on me within one day on a different site, from 406 to 200 to 200, so I treat it as provisional.

Seven of the 19 have an llms.txt an agent can fetch, and one of those seven is a redirect to a file parked on a marketing platform host. Twelve have nothing there. One of the seven announces in its own first line that an SEO plugin generated it, which names the file's producer rather than whether anyone chose to publish it. Seven of the 19 serve no JSON-LD at all on the front page.

One site where 200 means nothing

One company was different in a way worth describing. I asked for eight paths on that domain and all eight returned HTTP 200 with the same 3021 byte body and an identical sha256. The front page, a real subpage, a path I invented on the spot, llms.txt and four well-known addresses. So the agent addresses answer 200 with a page that is not what was asked for. I opened the site in a browser and the content renders fine, it just arrives after JavaScript has run. An agent that does not execute scripts cannot tell an existing page from one that does not exist. Among the other 18, the invented path got a 404 in every case, which is the correct answer for a path that does not exist; not every one of those 18 also serves all seven of the other addresses, since seven of the 19 companies in this set have a fetchable llms.txt, as noted above.

What this does not say

I read front pages and root paths and nothing else, so none of it is a statement about anyone's documentation, product API or MCP endpoint. Three of the passing Link header readings come from WordPress serving its own rel=alternate, which is the platform and not the company. Each company was scanned once, and a level from a single run is a snapshot. I tested no products. A site can be hard for an agent to read while the software behind it is excellent, and in this set I would expect that to be the common case.

Why the companies are not named

The finding is not that one company forgot a file. All 19 landed on zero in the same column. In a sample of 19 read on one day, that points at this sample rather than at anyone's diligence, though it does not prove the same of every identity vendor. I have also not contacted any of them, and a list of names published before that would be a different kind of document than the one I wanted to write. I should be straight about the limit of this though. Every reading above comes from a public surface, so a reader who guesses the set and runs the same scan will work out who is who. Withholding the names is not protection, it is a statement about what the piece is for.

One last thing, and it cuts against me

These checks come from one scanner and the rules move every month. The set of applicable checks grows as new ones are added, so a count from an older run is not comparable with today's. My own site reads Level 5 on that same scanner today, with all 16 applicable checks passing, and that is a snapshot from one instrument on one day, exactly like every number above.

Frequently asked

Does a Level 1 reading mean the company builds bad software?

No, and nothing here measures the software. The scan reads what a website publishes for an automated visitor. A company can run excellent credential infrastructure behind a site that tells an agent nothing about it, and in this set that is the likely case for most of them.

Why would an identity vendor need an MCP server card or an agent card?

Because the thing being sold is machine to machine trust, and on the front pages and root paths this scan read, a machine had no way to find the interfaces without one. The gap is not that the file is mandatory. The gap is that these nine addresses are where an agent looks first, and in this set they were empty on 18 of the 19 companies, with one authMd check answering a 500 rather than a 404, a broken answer and not evidence of a missing file.

Can I get the reading for my own site?

If you are in this set and want your own reading, email me and I will send you the scanner output for your own domain. That is the whole promise, one scan and the raw result, and it is not the paid work.

Corrected 2026-09-27. One sentence called the zero column a property of the category. A sample of 19 read on one day supports less than that, and the sentence now says so. No reading changed.

Corrected 2026-09-28. Two sentences read as findings about every company in the sample. The FAQ's claim that the nine addresses were empty every time now says empty on 18 of the 19 companies, naming the one authMd check that answered a 500 rather than a 404, and the 404 comparison for the other 18 now keeps to the one invented control path rather than implying all eight addresses. No reading changed.

Corrected 2026-09-28. Two more sentences overreached in the same way. The zero column finding now says it points at this sample rather than at the whole category, and the SEO plugin credit now says only that it names the file's producer, not that anyone chose to publish it. No reading changed.