What this page shows
Five views, five formats. Whether a page is machine readable depends on which machine is reading.
→ AI search, raw. What ChatGPT and Claude get on a direct, user-triggered fetch: unexecuted HTML. Three independent tests since November 2025 reach the same result. In the most recent one a decoy phone number sat in the source while the real one was reachable only through JavaScript. Every US assistant tested reported the decoy. DeepSeek, Qwen and Mistral returned the real one. So it is technically possible, the US providers simply do not do it. For Perplexity the evidence is thinner, one of the tests failed there, and all three are snapshots with a single run per system. Among the providers only Anthropic documents this. OpenAI and Perplexity say nothing about rendering at all. And one distinction that is missing almost everywhere: the direct fetch does not render, the path through a search index does.
→ Structured data. What this page offers. Whether it arrives is further down.
→ Accessibility tree. Playwright MCP and Chrome DevTools MCP hand the model exactly this tree, roles and names instead of layout. Screen readers need the same tree. Others mix. Stagehand calls its snapshot a hybrid of DOM and tree in its own source, browser-use serialises the DOM first. All four skip the pixels, beyond that they part ways.
→ DOM. Trimmed HTML with injected element IDs. More complete, and depending on the model better or worse.
→ Agent briefing. A file meant to tell systems what this place is about.
What this proves, and what it does not
An element without an accessible name does not exist for an agent.
Google puts it unusually plainly in its own developer documentation: agents rely on the accessibility tree as their primary data model. Lighthouse has checked this in a category of its own since late April 2026, in the default configuration since 7 May, still marked experimental and without a score from zero to a hundred. An icon button with no label produces neither role nor name. To any tree-based agent it is invisible. In the February survey of one million home pages, 30.6 percent have empty buttons, 51 percent are missing form field labels, and at field level 33.1 percent of fields are not labelled correctly.
What I am not claiming: that structure beats pixels.
The findings diverge. On Mind2Web, textual element selection leads numbered screenshot markers by around 18 percentage points, while still using the screenshot for planning. On WebVoyager the multimodal variant wins by 19 points. What holds: numbered screenshot markers are no safe bet for web interfaces, Skyvern stopped rendering them by default in June 2026, and the serious tooling works through structure.
That an accessible page produces measurably better agent results is unproven. A number does circulate for it: agent success supposedly falls from 78 to 42 percent once a site's accessibility tree is degraded. The study behind it changed no website at all. It took the mouse away from the agent and made it work by keyboard alone. What was measured is how well an agent copes with restricted input, not how well a site is built. A study putting accessible pages against inaccessible ones is one I did not find. Since July 2026 there is at least a related experiment running two versions of the same site against each other, one built for humans, one for agents, 89.3 against 49.3 percent success. What varied there was machine clarity, not accessibility, and it is a self-built prototype. A pointer, not proof.
Three more things this page does not prove.
First, that structured data creates visibility. The cleanest test compares 1,885 pages that added JSON-LD between August 2025 and March 2026 with 4,000 matched control pages. In ChatGPT and Google AI Mode the effect was indistinguishable from zero at plus 2.2 and plus 2.4 percent; in AI Overviews it was minus 4.6 percent and statistically significant. The authors caution that pages adding schema usually change other things at the same time and that the two cannot be separated in this data. So schema does no demonstrable harm. The expected benefit fails to appear all the same. Google now writes itself that generative search needs no special markup, while advising in the same paragraph to keep it for classic search. I leave the markup in place because it keeps the foundation clean. I am not promising an effect.
Second, that agents ask permission. Google, OpenAI, Perplexity and Meta list their user-triggered fetches in their own documentation as an explicit exception to robots.txt. Anthropic is the counter case, with a caveat: the commitment there covers all three bots in general, no exception for user-initiated fetches is stated, but Claude-User is not named specifically. Blocking AI crawlers in robots.txt blocks training and indexing. The agents keep going.
Third, that the rules are settled. The IETF has been working for over a year on a language that lets a website state what its content may and may not be used for. The draft defining the terms has carried a warning since April 2026: the working group does not agree on its contents. The second draft, the one governing how a site actually transmits those statements, expired in May because nobody renewed it. Cloudflare meanwhile uses a technically incompatible vocabulary that it submitted to the IETF itself, without success. After fifteen months of working group there is no standard.
On llms.txt, in my own case. It is here because it exists. That says nothing about its effect. A server log analysis across 137,210 domains shows that 97 percent of these files received no request at all in May 2026. A second study of nearly 300,000 domains finds no relationship with AI citations, though only 10.1 percent of those domains had a file at all. The format was invented against a context problem: context windows are too small for whole websites. Developer documentation is the first example in the specification, alongside company structure, legislation, CVs. Search engines, visibility and being cited appear nowhere in it. Where the file demonstrably works, it works modestly: in vendor Mintlify’s own benchmark, misses on non-existent addresses dropped from 1.42 to 0.11 per task. Accuracy stayed the same. Time was gained, nothing else.
This website is the easiest case imaginable, of course. Five pages, static, hand-written JSON-LD, no CMS, no legacy, a single script. On a grown brand site with a tag manager, a consent layer and three agencies involved, the right-hand column would look different. That is where the actual point sits: what can be done by hand here becomes a question of ownership and process there.
The honest remainder. Clean structure is the entry ticket. Nothing more. My own measurement series shows it. The question about the person is answered by all three tested systems with this website as the primary source. The recommendation question, who to hire for this topic, is answered by none of them with my name. Single measurements vary a lot and what counts is the trend over months. Between those two findings, though, there is no technical problem. What sits there is the question of what third parties write.
How the apparatus works
Everything happens in the browser, no server, no dependencies.
The left side is the real page, loaded in a frame. The apparatus reads its JSON-LD straight from the document and fetches llms.txt over the normal network interface. Both can be checked: open the source, find the same data. The mapping between text and machine statement comes from text matching, which is why it is fuzzy at the edges. The tree and DOM views are reproductions of the formats emitted by Playwright MCP and Stagehand. Roles and names are computed by this apparatus itself, and the element numbers are sequential. Real agents use the browser’s internal node IDs.
Terms from this text: To the overview → · Context: Machine Readable Brands