State of the agent-readable web · July 2026

The agents are coming.
The web hasn't set the table.

Every month Desvela crawls the top 100,000 domains for the four surfaces a visiting AI agent can actually read: ai-catalog.json (Google's ARD standard), llms.txt, agents.md, and the AI-bot directives in robots.txt. This is what we found.

99,997
domains checked this pass
8
valid ai-catalog.json manifests with entries — in the entire scan
6.7%
of the top 1K publish an llms.txt
80.2%
of robots.txt naming GPTBot block it entirely
Correction, 2026-08-04. The 8 above counts desvela.dev, our own domain, while the method note below says our domains are deliberately absent from every figure on this page. Both cannot be true, and the method note is the one we stand by: the external count for July was 7. Found on 2026-08-04 while checking which publishers were genuinely new for the August edition, which counts external domains only. The published figure is left as it was rather than quietly rewritten.

See where your own domain lands →

Adoption

Four surfaces, by ranking tier.

Tranco tierCheckedai-catalog.jsonllms.txtagents.md
top 1K1,000 2 (0.2%) 67 (6.7%) 2 (0.2%)
1K–10K9,000 18 (0.2%) 526 (5.8%) 19 (0.2%)
10K–100K89,997 125 (0.1%) 5178 (5.8%) 958 (1.1%)
ai-catalog.json reality check: 146 files respond — 114 are invalid JSON, and only 8 are valid manifests with at least one entry: huggingface.co, zapier.com, opus.pro, roboflow.com, clickhouse.com, datarobot.com, neon.com, desvela.dev (us). Google published the ARD spec in May 2026; adoption is a rounding error.
The door policy

Who's blocking the AI bots.

Domains that name each bot in robots.txt, and how many of those shut it out completely (Disallow: /). Before your agent touches a domain, this is the etiquette it should know.

BotNamed in robots.txtFully blocked
GPTBot10,474 8,395 (80.2%)
ClaudeBot9,291 7,472 (80.4%)
CCBot9,085 8,145 (89.7%)
Google-Extended8,446 6,929 (82.0%)
Bytespider8,230 7,667 (93.2%)
meta-externalagent7,422 6,551 (88.3%)
Applebot-Extended7,176 6,455 (90.0%)
PerplexityBot4,179 2,377 (56.9%)
anthropic-ai3,524 2,678 (76.0%)
cohere-ai2,763 2,248 (81.4%)
Claude-Web2,689 2,122 (78.9%)
Notable publishers

Who has set the table.

ai-catalog.json (valid, with entries): huggingface.co #1,345 · zapier.com #2,955 · opus.pro #21,089 · roboflow.com #32,436 · clickhouse.com #34,553 · datarobot.com #55,866 · neon.com #97,739 · desvela.dev (that's us — full disclosure) #—

llms.txt: cloudflare.com #3 · github.com #30 · wordpress.org #43 · digicert.com #44 · adobe.com #66 · opera.com #93 · samsung.com #94 · wordpress.com #99 · gravatar.com #137 · kaspersky.com #138 · dropbox.com #139 · reg.ru #145

agents.md: checkpoint.com #337 · paloaltonetworks.com #503 · olx.pl #1,119 · goal7.co #1,701 · razorpay.com #3,699 · nanit.com #4,735 · eufylife.com #4,799 · laravel-news.com #5,057 · nazwa.pl #5,064 · guinnessworldrecords.com #5,707 · jbhifi.com.au #6,051 · network-lc.ru #6,312

Your turn

Now check your own domain.

Same four files, same rules, same canary request. You get a grade against the numbers above, and the specific file you are missing. Free, no account, about ten seconds.

Edition manifest

What this edition is.

Every number on this page is anchored to one crawl, one universe and one method version. These signals measure adoption and access — a domain publishing a file, a bot being named or blocked — and they do not demonstrate citations, recommendations or visibility inside any AI system.

FieldValue
Edition2026-07
Data collected2026-07-09
Published2026-07-10
Corrected2026-08-04
Methodologyv1.0
Coverage99,997 of 100,000 domains checked
UniverseTranco top-100000 (list date not preserved)
Own domains in scopenot preserved for this edition
ownDomainsInScope was not preserved for this edition: the field was added to the generator on 2026-08-04 and cannot be derived from the saved data without reconstruction. The correction published on 2026-08-04 documents the known case (desvela.dev) by hand.
The Tranco list date used was not preserved (fetch-tranco.sh does not record it); universe.listDate is null.

JSON (manifest + metrics) · CSV (by tier)

Methodology, in full: how we count.

Editions

Every month, same method.

Each edition stays at its own URL after it is replaced, so a number you cited last month is still there to check. Only editions with complete or explicitly declared coverage are published.

August 2026 · July 2026 (this one)

Method

How we count.

Plain GET requests (no rendering) against /.well-known/ai-catalog.json, /llms.txt, /agents.md and /robots.txt on each apex domain of the Tranco top-100K, paced at ~4 req/s globally, honoring robots.txt, as DesvelaBot/0.1 (bot policy). HTML responses to text paths count as absent. Every publisher is re-probed with a canary request to a nonexistent path: servers that answer 200 to anything are excluded as catch-alls, including some seemingly legitimate publishers. Undercounting beats inflating.

Full disclosure, and it cuts against us on purpose: our own domains (desvela.dev, desvela.ai) publish valid manifests, and they are deliberately not in any number on this page. They are not in the Tranco top-100K, so counting them would pad the very figures we are reporting. Same rule for every other domain we index outside the list. Verify ours with a GET like any other.
Subdomains are out of scope by design (docs.example.com publishing llms.txt does not count for example.com) — the census measures apex-domain adoption, same bar for everyone.

Read the full methodology → (universe, exclusions, coverage rules and what these numbers do not claim).

Stay on the list

Get next month's census in your inbox.

One email per month with the fresh numbers and what changed: new publishers, withdrawals, bot-blocking shifts. No product spam. Unsubscribe in one click from any email. We email you a confirmation link first, and nothing is sent until you click it.