Physician, Heal Thyself
The engines publish the rules the rest of the web must live by. We ran the same binary checks we run on client sites against eight of their own front doors — robots.txt, llms.txt, no-JS text, structured data, meta completeness. What the machines found at the measurers’ doors.
Five findings
P1 — The visibility teacher is invisible without JavaScript. Bing Webmaster Tools’ own pages serve exactly 12 words of no-JS content: “Bing Webmaster Tools — You need to enable JavaScript to run this app.” Confirmed on two URLs. The page that teaches webmasters how to be visible fails the textual-content rule Google publishes for everyone.
P2 — The companies that read the world calibrate their doors by reader type. openai.com and perplexity.ai returned 403 — homepage and /llms.txt — to plain non-JavaScript readers (browser-costumed curl, default curl, and a headless browser engine), while their robots.txt sat open. Yet an independent managed-rendering crawler on a different network was served Perplexity’s page in full. Not closed — fingerprint-calibrated.
P3 — Nobody serves llms.txt. Not one of eight engine properties: six 404s, two 403-guarded (absence unconfirmable from outside). Google’s non-use is published policy — consistent. We report the observation without inferring intent for the rest.
P4 — One engine fully practices what it preaches. Google’s AI-features guidance page: 2,096 no-JS words, valid JSON-LD, title and meta present. OpenAI’s own crawler-rules page: readable but zero structured data, no meta description. Anthropic’s memorable /claude-bot docs URL 404s (verified twice, two days apart). The bar the engines set for everyone is met, at their own doors, by exactly one of them.
P5 — Two of our own claims died in verification. We kept the bodies. An initial pass flagged DuckDuckGo for serving HTML at /robots.txt and for invalid JSON-LD. Both were our measurement artifacts; both retracted after re-fetch and a fixed extraction. A census that can kill its own findings is the only kind worth publishing.
The eight doors, property by property
Plain non-JS fetch, browser user-agent, redirects followed. *DuckDuckGo JSON-LD: one valid block after the P5 extraction fix (raw keeps as-collected values + correction note).
| Engine | Property | robots | llms.txt | Page | No-JS words | JSON-LD | Notable |
|---|---|---|---|---|---|---|---|
| developers.google.com/search/docs/appearance | 200 | ❌ 404 | 200 | 2,096 | 1 valid | The only full pass: textual, structured, described — the standard it asks of everyone. | |
| OpenAI | platform.openai.com/docs/bots | 200 | ❌ 404 | 200 | 2,052 | 0 valid | Readable crawler rules (2,052 words) but zero structured data, no meta description. |
| OpenAI-www | openai.com/ | 200 | 🚫 403 | 403 | 0 | 0 valid | Door calibrated: robots.txt open, but homepage and /llms.txt 403 plain readers. |
| Anthropic | www.anthropic.com/ | 200 | ❌ 404 | 200 | 697 | 0 valid | Readable, schema-less; the memorable /claude-bot docs URL 404s (verified twice). |
| Perplexity | www.perplexity.ai/ | 200 | 🚫 403 | 403 | 0 | 0 valid | Door calibrated: 403 to plain clients; a managed rendering crawler on another network was served in full. |
| DuckDuckGo | duckduckgo.com/duckduckbot | 200 | ⚠ HTML | 200 | 2,320 | 1 valid* | Rich textual page (2,320 words) with valid WebSite schema*. |
| Bing | www.bing.com/webmasters/about | 200 | ❌ 404 | 200 | 12 | 0 valid | The webmaster page's entire no-JS content is 12 words: “You need to enable JavaScript to run this app.” |
| CommonCrawl | commoncrawl.org/ | 200 | ❌ 404 | 200 | 459 | 0 valid | Plain, readable, honest — like the crawl itself. |
Cross-check log — published in full
Every headline claim re-attacked with a different method than produced it, before publication.
| Claim | Second method | Verdict |
|---|---|---|
| Bing 12-word page | Second URL + re-fetch | confirmed, verbatim, both URLs |
| OpenAI / Perplexity 403s | Default-UA curl + headless Chromium | confirmed across reader types |
| “Doors are closed” | Independent managed crawler, different network | corrected → calibrated by reader type |
| No llms.txt anywhere | Re-fetch all eight | confirmed |
| Google-only full pass | Word recount + JSON-LD re-parse | confirmed |
| Wave-1 spine (UBS 403, Mayo 403, Cleveland llms.txt) | Independent re-fetch | all hold |
| Two DuckDuckGo claims | Re-fetch + fixed extraction | killed — retracted (P5) |
What it means
The machine-readable web is a standard enforced downward, not upward. That is clarifying, not damning — it tells every business owner to measure their own door instead of assuming the doors of the engines have been held to the same standard.
Methodology & limitations
2026-08-30, 00:30–01:15 IST, single vantage point (India), plain fetches with a browser user-agent, 12s timeouts, 0.5–0.7s politeness. JSON-LD extracted only from served <script type="application/ld+json"> blocks (payload-embedded strings excluded after P5). Limitations: n=8, one evening; a 403 to our reader is a fact about our reader, not a universal claim; SPA-by-design is an engineering choice, not a violation — we measure against Google’s published guidance as the industry’s explicit standard. Re-run monthly alongside the wealth study; deltas will show who fixes their door.
Data & license
Raw data: physician-raw.json — CC BY 4.0: reuse freely, attribute SynapseIN, link the study. Corrections are logged and dated, never silently edited.