What I learned from the Agent Web Compatibility Test

A website can be crawlable, indexable, server-rendered, and beautifully marked up; and still be unusable to an AI agent.

That is the finding I keep returning to after the first completed round of our Agent Web Compatibility Test, a controlled benchmark that measures what deployed AI runtimes can actually read, understand, and do on the web.

“AI-ready” is usually discussed as a property of a page. Add structured data, publish an llms.txt, render on the server, declare victory. But readiness does not live entirely on the website. An agent’s effective web capability depends on three things at once: the surface the publisher provides, the tools and policies the runtime exposes, and the retrieval path used in that specific session.

AI readability is a compatibility relationship, not a page attribute.

That is why we built a benchmark instead of another checklist. I’ve been investigating this topic for several years, and while many valuable auditing tools now exist, including Lighthouse’s new Agentic Browsing score: we found nothing comparable to our small benchmark, which focuses primarily on evaluating what AI agents can actually do at runtime.

Agent Web Compatibility Test matrix comparing eight deployed AI systems across JSON-LD, static HTML, JavaScript, cookie sessions, GET and POST requests, semantic actions, and entity-page access. Agent WordLift scores 23/24, Google Antigravity 21/24, while consumer web assistants score between 0 and 4/24.Agent Web Compatibility Test matrix comparing eight deployed AI systems across JSON-LD, static HTML, JavaScript, cookie sessions, GET and POST requests, semantic actions, and entity-page access. Agent WordLift scores 23/24, Google Antigravity 21/24, while consumer web assistants score between 0 and 4/24.
Disclosure: Agent WordLift is our own product. It also isn’t a like-for-like comparison: the top group are tool-enabled runtimes with an operator-managed trust boundary; the consumer assistants are host-policy limited by design. Compare the groups, not the rows.

Start with the scoreboard

As of July 27, 2026, the versioned dataset holds 17 runtime records and 159 observed runtime-capability pairs. Below are only the configurations that completed three attempts across all eight core checks. Each cell is passes out of three; the total is out of 24 opportunities.

Runtime configuratio n S01 W01 W02 W03 W04 W05 W06 W07 Total
Agent WordLift, Slack/NanoClaw 3 3 2 3 3 3 3 3 23/24
Antigravity agent client, Gemini 3.6 3 3 0 3 3 3 3 3 21/24
ChatGPT Web, GPT 5.6 Sol Medium 0 1 0 0 3 0 0 0 4/24
Claude Web, Sonnet 5 Medium 0 1 0 0 3 0 0 0 4/24
Claude Web, Opus 5 High 0 0 0 0 3 0 0 0 3/24
Meta AI Web, Thinking/Free 0 3 0 0 0 0 0 0 3/24
Copilot Web, Smart 0 0 0 0 0 0 0 0 0/24
Gemini Web, 3.1 Pro 0 0 0 0 0 0 0 0 0/24
Perplexity Web, Auto/Free 0 0 0 0 0 0 0 0 0/24

Read this carefully, because it is easy to misread. These are not intelligence scores and not a brand ranking. They describe what these exact configurations could prove, on this fixture, from Europe, on the recorded dates and plans.

Several low-scoring systems produced fluent, technically plausible, partially correct explanations. They failed because the deployed surface never exposed the required content or action path — or because the evidence never reached our origin.

The two strongest results came from tool-enabled agent runtimes, not from consumer chat surfaces. The lesson is not that those models are smarter.

It is that model quality and web capability are separate variables.

What we tested

Fixture 0.3.1 runs eight core capabilities. Two WebMCP checks are tracked separately because they require independent browser-host evidence.

ID Capability What counts as a pass
S01 JSON-LD structured data Extract four exact values from a Product block, including a one-time identifier
W01 Static HTML Read an exact per-run token present in the initial HTML
W02 JavaScript content Execute the page script in the same-origin browser context and report the dynamic token
W03 Cookie/session Return an HttpOnly run cookie to the session endpoint
W04 GET JSON Call an availability endpoint for a synthetic blue-widget
W05 POST JSON Call the equivalent endpoint using POST
W06 Semantic action Place a reversible synthetic hold on the blue-widget
W07 Enhanced entity page Identify, interpret, and synthesize from a live enhanced entity page
M02 Declarative WebMCP Use a declaratively exposed web tool, with browser-host proof
M03 Imperative WebMCP Use an imperatively registered web tool, with browser-host proof

The sequence is deliberate: read → render → maintain state → call → act → understand. A system that can quote visible prose cannot necessarily process structured data. A system that can issue a GET cannot necessarily hold a session or change state. And a system that can name an entity cannot necessarily connect its attributes, relationships, and provenance.

W07 exists because an earlier version of the test was too focused on access. Using a live Merkur enhanced entity page, the runtime must identify the NewsArticle, extract headline and date, identify a graph relationship, recover the external provenance URL, find an RDF alternate declared in the HTML, and produce a deterministic synthesis of those fields. Agents need stable identities, not isolated strings.

Eight things we learned

1. “Browser mode” may be a text fetcher

Several exports were labeled browser. The observed behaviour was closer to a GET-only text extractor: