181 domains · formula v9.57 · measured 2026-09-26
Agent-readiness signals across the corpus
Public HTTP checks across the curated vendor list, measured under one formula. These results describe documentation and access signals. They do not establish whether agents choose a product or complete an integration.
87%
of the measurable points for being found and read, on average
36%
of the measurable agent-entry points, on average
Results by stage
Mean share of measurable points at each stage. Unmeasured checks are excluded. Each row shows its domain count because coverage differs by stage.
- 117 of 181 had no confirmed match among the 10 entry files we look for by name, including /agent-signup.md and /.well-known/agent-access.json. A further 17 publish a service descriptor but no procedure written for a machine.
- 62 of 115 had no programmatic credential-creation match in the sampled documentation. Another 66 were unmeasurable. A supported path may exist outside that sample.
- 90 of 170 had no OAuth registration endpoint in the metadata on the hosts checked. This does not establish that every supported authentication path requires client registration.
- 36 of 181 had an MCP server and no provisioning match in the sampled documentation. The scan did not attempt to obtain credentials.
- 94 of 181 had an MCP server that answered a handshake. This does not establish access to a customer account.
Every check, across the corpus
Unmeasurable checks have a separate column and do not count as failures.
Scroll the table sideways for the last column.
| Check | Pass | Partial | Zero | Unmeasurable |
|---|---|---|---|---|
| Answers an agent user-agent | 178 | 0 | 2 | 1 |
| Price or entry condition in the search snippet | 67 | 0 | 88 | 26 |
| llms.txt published | 146 | 0 | 35 | 0 |
| Docs readable without JavaScript | 167 | 0 | 0 | 14 |
| On-demand agents not blocked | 171 | 0 | 4 | 6 |
| Paths robots.txt points at answer | 12 | 0 | 3 | 166 |
| No punishing crawl delay | 173 | 0 | 2 | 6 |
| Agent entry point | 29 | 17 | 117 | 18 |
| OAuth dynamic client registration | 80 | 0 | 90 | 11 |
| MCP surface | 94 | 0 | 83 | 4 |
| No CAPTCHA in the signup HTML | 24 | 0 | 30 | 127 |
| Signup reachable without a browser | 45 | 0 | 93 | 43 |
| Programmatic key provisioning | 14 | 39 | 62 | 66 |
| Free tier or no-card trial stated in text | 123 | 0 | 16 | 42 |
| Typed SDK on the registry | 151 | 0 | 4 | 26 |
| Machine-readable API description | 122 | 0 | 51 | 8 |
Both ends of the corpus
Highest
- zenrows.com13/13
- deepl.com14/15
- honeycomb.io14/15
- bird.com14/15
- growthbook.io13/14
Lowest
- june.so3/15
- hover.com3/9
- koyeb.com5/14
- contentful.com3/8
- lemonsqueezy.com6/16
Each score uses its own measurable denominator; the full maximum is 18. Refused requests can reduce coverage. Open a scorecard for the recorded HTTP observations.
Scope and limits
- The vendor list is curated, not random. Visitor scans receive a permanent link and a comparison with this corpus, but never join it.
- Most categories contain five or six vendors. One changed row can move the category share by several points. The recorded corpus noise floor is 0.59 percent. Compare dated vendor measurements before interpreting category averages.
- Coverage varies by check. The n beside each stage is its measured domain count. Unmeasurable checks are listed separately.
- Agent choices and integration outcomes require separate agent runs. This page aggregates HTTP scans.
- All rows here use formula v9.57. Measurements under different versions are not mixed.
- Scanned between 2026-08-24 and 2026-09-26. This page recomputes from stored measurements on each request.
- No row is currently frozen. When robots.txt asks our scanner to stay out, we retain the last measurement and stop refreshing it.
Take the data
Every row behind this page, one entry per domain and check, with the verdict, the points and the sentence we measured it from. Free to use and quote with attribution.
/corpus.json/corpus.csvHow every check is defined and scored