Skip to main content
Two checks look at your website. They are separate, and they are never added together. The Cloudflare scan never changes your AgentTV level. It reads your site root (a locale redirect such as /en is followed), not one video page. Most of what it wants is also what an AI app needs to reach your videos, so one piece of work passes both.

The AgentTV levels

A level counts only when every check in it and in the levels below it passes. A check we could not test holds the level.

Step 1: let AI crawlers in (R1)

  • Do not block AI user agents in robots.txt. Name the main ones (GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-User, PerplexityBot, Google-Extended) in their own groups, so both checks see the rules.
  • Check your bot protection or CDN. Many bot managers answer 403 to a cloud server that sends an AI user agent, because it cannot prove who it is. Allow the verified AI crawlers by their published IP lists or signatures, and allow the check’s requests to robots.txt, your sitemaps and your video pages. If a page answers 403 to a plain curl, a crawler is probably blocked too.

Step 2: list your videos (R2)

Publish a video sitemap (<video:video> entries) and name it in robots.txt with a Sitemap: line. A sitemap index is fine. The ARV manifest at /.well-known/arv.json also passes.

Step 3: describe each video page (R3 to R6)

Put the page block in the HTML your server sends: the VideoObject with its hasPart chapters, the transcript as text, and a player address in embedUrl or contentUrl. If your page already has a VideoObject, merge the block into it. Do not add a second one. Tags that a script adds in the browser do not count.

Step 4: add the agent readiness kit (R7 to R9, and most of the Cloudflare checks)

The kit is a set of files AgentTV hosts for your account. Your site serves them at the standard paths. Read it from your install file:
Look at agent_readiness: See Serve the kit from any CDN if your site is not on Vercel.
A site that answers every unknown path with your HTML app shell fails the scan, even when the path is covered by the rule: the scan reads HTML instead of JSON. Test each path with curl -i and check the Content-Type.
With the kit in place, R8 (agent endpoint) and R9 (usage route) pass through the MCP server card and the ARV manifest. R7 passes through the ARV manifest with rights. Put the license URL and a creditText or author in your VideoObject too, so the page itself carries them.

Serve the kit from any CDN

The vercel block of the kit is one way to say it. Any CDN or web server can do the same with these rules. 1. Serve each document at its path. For every entry in agent_readiness.documents, a GET or HEAD to site_path on your host returns the body of the entry’s url, with these rules: 2. Add the robots.txt line. Under User-agent: *, add the line from robots_txt.lines:
Your own value comes from your rights, so copy the line from your install file, not from this page. Keep your other groups, and keep the named AI crawler groups. 3. Add the Link header to the home page. On GET / and on the home page of every locale, add a Link response header with the value of agent_readiness.link_header. It is one header with several comma-separated links:
Cloudflare reads the header on the page it lands on after redirects, so a home page that redirects to /en needs the header on /en. 4. Answer Markdown. When the request has Accept: text/markdown, answer 200 with Content-Type: text/markdown; charset=utf-8 and a Markdown copy of the page. Add Vary: Accept on the HTML response so a cache keeps both. Serve <page>.md too, and add Link: </index.md>; rel="alternate"; type="text/markdown" on the home page. The copy must be the page content, not an error page. 5. Check. curl -i -H "Accept: application/json" https://www.example.com/.well-known/api-catalog, then the same for each path, curl -I https://www.example.com/ for the header, and curl -H "Accept: text/markdown" -i https://www.example.com/.

Notes by CDN

These notes name the feature each vendor uses. Follow the vendor’s page for the exact settings of your plan.
  • Akamai. In Property Manager, add a rule that matches the path (/.well-known/* and /auth.md), set the Origin Server behavior to api.agenttv.com with the forward host header set to the origin hostname, and rewrite the path with the Rewrite URL behavior. Add the Link header on the home page rule with Modify Outgoing Response Header. Markdown needs a response from your origin or an edge function, since a behavior alone cannot convert HTML.
  • Cloudflare. The simplest way is a Worker on your routes, as in Serve agents from your domain (Workers). Add the Link header with a response header transform rule. Turn on Markdown for Agents if your plan has it. Origin Rules can also route a path to another host.
  • Fastly. Add a backend for api.agenttv.com with TLS and the SNI hostname set, route the paths to it in VCL (set req.backend, req.url and Host), and set the Link header in the response (beresp or resp). See the VCL reference and domains and origins. A Compute service can also do the Markdown conversion.

Step 5: Markdown for agents (Cloudflare)

When a request sends Accept: text/markdown, answer a Markdown copy of the page with Content-Type: text/markdown. Also serve <page>.md and advertise it with Link: </index.md>; rel="alternate"; type="text/markdown". Cloudflare sites can turn on Markdown for Agents. Other stacks add a middleware that converts the page, or serve a pre-built copy. Test the home page and a video page.

Step 6: optional records

  • DNS-AID. Add HTTPS (SVCB) records at _index._agents.example.com and _mcp._agents.example.com (and _a2a._agents.example.com) with priority 1, alpn=h2 and port=443. The target of _mcp is your MCP host. This is a change at your DNS provider.
  • WebMCP. Your page registers site tools in the browser with navigator.modelContext. The page block carries the tags when WebMCP is on. See Page metadata.
  • Personal Agent Protocol. The kit adds /.well-known/poppy.json once your website is registered and verified. Cloudflare lists it as information.

What Cloudflare checks you do not need

A public video catalog needs no sign-in, so these can fail by design and still leave you at Level 5: OAuth discovery, OAuth protected resource, and auth.md agent registration. The auth.md file the kit serves says that no registration is needed. The commerce checks (x402, MPP, UCP, ACP, AP2) do not count in the level and apply only if you sell to agents. Web Bot Auth is information only.

Check your work

  1. Open Visibility in the console and choose Refresh, or call the check_visibility_website tool. Between full refreshes it checks your website alone, at most once every 15 minutes and 6 times a day.
  2. Scan with Cloudflare: POST https://isitagentready.com/api/scan with {"url": "https://www.example.com"}. Each failing check names what is missing.
  3. Fetch each document with curl -i from outside your network.