Three tests every page should pass for AI agent runtimes (Cloudflare Project Think, OpenAI Agents SDK, Vercel, Modal): canonical content renders without JS, JSON-LD is inline at server-render time, and the host honors Accept text/markdown content negotiation.
An agent runtime that does not execute JavaScript should still see the canonical content. We measure the ratio of visible text in the static HTML response against the page's apparent length. Hydration-only sites score low; static + server-rendered sites score high.
Structured data must be present in the static HTML response. Schema injected client-side after page load is invisible to runtimes that do not execute JavaScript. We check for <script type="application/ld+json"> blocks in the static body.
Cloudflare's Markdown for Agents (and equivalents) lets you serve a clean Markdown response when an AI client sends Accept: text/markdown. We probe the URL with that header and check the response Content-Type and body shape.
Tests run via jwatte's fetch-page proxy with a guarded origin allow-list. Some hosts return different bodies to bot user agents than to humans; this tool sends a generic UA. SSR ratio is heuristic and approximate. Re-run from your own environment if you need exact byte-level parity.