
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[ The Cloudflare Blog ]]></title>
        <description><![CDATA[ Get the latest news on how products at Cloudflare are built, technologies used, and join the teams helping to build a better Internet. ]]></description>
        <link>https://blog.cloudflare.com</link>
        <atom:link href="https://blog.cloudflare.com/" rel="self" type="application/rss+xml"/>
        <language>en-us</language>
        <image>
            <url>https://blog.cloudflare.com/favicon.png</url>
            <title>The Cloudflare Blog</title>
            <link>https://blog.cloudflare.com</link>
        </image>
        <lastBuildDate>Fri, 17 Apr 2026 16:59:13 GMT</lastBuildDate>
        <item>
            <title><![CDATA[Introducing the Agent Readiness score. Is your site agent-ready?]]></title>
            <link>https://blog.cloudflare.com/agent-readiness/</link>
            <pubDate>Fri, 17 Apr 2026 13:05:00 GMT</pubDate>
            <description><![CDATA[ The Agent Readiness score can help site owners understand how well their websites support AI agents. Here we explore new standards, share Radar data, and detail how we made Cloudflare’s docs the most agent-friendly on the web. ]]></description>
            <content:encoded><![CDATA[ <p></p><p>The web has always had to adapt to new standards. It learned to speak to web browsers, and then it learned to speak to search engines. Now, it needs to speak to AI agents.</p><p>Today, we are excited to introduce <a href="https://isitagentready.com/"><u>isitagentready.com</u></a> — a new tool to help site owners understand how they can make their sites optimized for agents, from guiding agents on how to authenticate, to controlling what content agents can see, the format they receive it in, and how they pay for it. We are also <a href="https://radar.cloudflare.com/ai-insights#adoption-of-ai-agent-standards"><u>introducing a new dataset to Cloudflare Radar</u></a> that tracks the overall adoption of each agent standard across the Internet.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/sGg5lZjafjQ398V7hYyMv/93e112a34754e2065ffbf6445ebc4500/unnamed.png" />
          </figure><p>We want to lead by example. That is why we are also sharing how we recently overhauled Cloudflare's <a href="https://developers.cloudflare.com/"><u>Developer Documentation</u></a> to make it the most agent-friendly documentation site, allowing AI tools to answer questions faster and significantly cheaper.</p>
    <div>
      <h2>How agent-ready is the web today?</h2>
      <a href="#how-agent-ready-is-the-web-today">
        
      </a>
    </div>
    <p>The short answer: not very. This is expected, but also shows how much more effective agents can be than they are today, if standards are adopted.</p><p>To analyze this, Cloudflare Radar took the 200,000 <a href="https://radar.cloudflare.com/domains"><u>most visited domains</u></a> on the Internet; filtered out categories where agent readiness isn't important (like redirects, ad-servers, and tunneling services) to focus on businesses, publishers, and platforms that AI agents might realistically need to interact with; and scanned them using our new tool.</p><p>The result is a new “Adoption of AI agent standards” chart that can now be found in the <a href="https://radar.cloudflare.com/ai-insights#adoption-of-ai-agent-standards"><u>Cloudflare Radar AI Insights</u></a> page where we can measure adoption of each standard across multiple domain categories.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/Vn8SoboYs4OmY2y6aXZke/c641d63cc71e4645e3b19c4124b5e912/image3.png" />
          </figure><p>Looking at individual checks, a few things stood out:</p><ul><li><p><a href="https://www.cloudflare.com/learning/bots/what-is-robots-txt/"><u>robots.txt</u></a> is nearly universal — 78% of sites have one — but the vast majority are written for traditional search engine crawlers, not AI agents.</p></li><li><p><a href="https://contentsignals.org/"><u>Content Signals</u></a>: 4% of sites have declared their AI usage preferences in robots.txt. This is a new standard that is gaining momentum.</p></li><li><p>Markdown content negotiation (serving text/markdown on Accept: text/markdown) passes on 3.9% of sites.</p></li><li><p>New emerging standards like <a href="https://modelcontextprotocol.io/community/server-card/charter"><u>MCP Server Cards</u></a> and <a href="https://datatracker.ietf.org/doc/rfc9727/"><u>API Catalogs (RFC 9727)</u></a> together appear on fewer than 15 sites in the entire dataset. It’s still early — there is lots of opportunity to stand out by being one of the first sites to adopt new standards and work well with agents. </p></li></ul><p>This chart will be updated weekly, and the data can also be accessed through the <a href="https://radar.cloudflare.com/explorer"><u>Data Explorer</u></a> or the <a href="https://developers.cloudflare.com/api/resources/radar/"><u>Radar API</u></a>.</p>
    <div>
      <h2>Get an agent readiness score for your site</h2>
      <a href="#get-an-agent-readiness-score-for-your-site">
        
      </a>
    </div>
    <p>You can get an agent readiness score for your own website by going to <a href="https://isitagentready.com/"><u>isitagentready.com</u></a> and entering the site’s URL.</p><p>Scores and audits that provide actionable feedback have helped to drive adoption of new standards before. For example, <a href="https://developer.chrome.com/docs/lighthouse/performance/performance-scoring"><u>Google Lighthouse</u></a> scores websites on performance and security best practices, and guides site owners to adopt the latest web platform standards. We think something similar should exist to help site owners adopt best practices for agents.</p><p>When you enter your site, Cloudflare makes requests to it to check which standards it supports, and provides a score based on four dimensions:</p><ul><li><p>Discoverability: <a href="https://datatracker.ietf.org/doc/html/rfc9309"><u>robots.txt</u></a>, <a href="https://www.sitemaps.org/protocol.html"><u>sitemap.xml</u></a>, <a href="https://datatracker.ietf.org/doc/html/rfc8288"><u>Link Headers (RFC 8288)</u></a></p></li><li><p>Content: <a href="https://blog.cloudflare.com/markdown-for-agents/"><u>Markdown for Agents</u></a></p></li><li><p>Bot Access Control: <a href="https://contentsignals.org/"><u>Content Signals</u></a>, <a href="https://developers.cloudflare.com/ai-crawl-control/"><u>AI bot rules in robots.txt</u></a>, <a href="https://datatracker.ietf.org/doc/draft-meunier-web-bot-auth-architecture/"><u>Web Bot Auth</u></a></p></li><li><p>Capabilities: <a href="https://github.com/cloudflare/agent-skills-discovery-rfc"><u>Agent Skills</u></a>, API Catalog <a href="https://www.rfc-editor.org/rfc/rfc9727"><u>(RFC 9727)</u></a>, OAuth server discovery via <a href="https://www.rfc-editor.org/rfc/rfc8414"><u>RFC 8414</u></a> and <a href="https://datatracker.ietf.org/doc/html/rfc9728"><u>RFC 9728</u></a>, <a href="https://modelcontextprotocol.io/community/server-card/charter"><u>MCP Server Card</u></a>, and <a href="https://developer.chrome.com/blog/webmcp-epp"><u>WebMCP</u></a></p></li></ul>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/69MdHcYAZi60gVKRVP9GFM/f3521831b2ca361e12a33f6c8eb05f5b/image9.png" />
          </figure><p><sup><i>Screenshot of results from an agent-readiness check for an example website.</i></sup></p><p>Additionally, we check if the site supports agentic commerce standards including <a href="https://www.x402.org/"><u>x402</u></a>, <a href="https://ucp.dev/"><u>Universal Commerce Protocol</u></a>, and <a href="https://www.agenticcommerce.dev/"><u>Agentic Commerce Protocol</u></a>, but these do not currently count towards the score.</p><p>For each failing check, we provide a prompt that you can give to your coding agent and have it implement support on your behalf.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/9C62LtqTLgvZGViVEh8n0/b9c01cebe9042ad4b458d4305b3db7b2/image6.png" />
          </figure><p>The site itself is also agent-ready, practicing what it preaches. It exposes a stateless MCP server (https://isitagentready.com/.well-known/mcp.json) with a <code>scan_site</code> tool via Streamable HTTP, so any MCP-compatible agent can scan websites programmatically without using the web interface. It also publishes an Agent Skills index (https://isitagentready.com/.well-known/agent-skills/index.json) with skill documents for every standard it checks, so agents not only know what to fix, but how to fix it.</p><p>Let’s dig into the checks in each category, and why they matter for agents.</p>
    <div>
      <h3>Discoverability</h3>
      <a href="#discoverability">
        
      </a>
    </div>
    <p><a href="https://www.cloudflare.com/learning/bots/what-is-robots-txt/"><u>robots.txt</u></a> has been around since 1994, and most sites have one. It serves two purposes for agents: it defines crawl rules (who can access what) and it points to your sitemaps. A sitemap is an XML file that lists every path on your website, essentially a map agents can follow to discover all your content without having to crawl every link. The robots.txt is where agents look first.</p><p>Beyond sitemaps, agents can also discover important resources directly from HTTP response headers, specifically, using the Link response header (<a href="https://www.rfc-editor.org/rfc/rfc8288"><u>RFC 8288</u></a>). Unlike links buried inside HTML, the Link header is part of the HTTP response itself, which means an agent can find links to resources without having to parse any markup:</p>
            <pre><code>HTTP/1.1 200 OK
Link: &lt;/.well-known/api-catalog&gt;; rel="api-catalog"</code></pre>
            
    <div>
      <h3>Content accessibility</h3>
      <a href="#content-accessibility">
        
      </a>
    </div>
    <p>Getting an agent onto your site is one thing. Making sure it can actually read your content is another.</p><p>Back in September 2024, which feels like a lifetime ago given how fast AI is moving, <a href="http://llms.txt"><u>llms.txt</u></a> was proposed as a way to provide a LLM-friendly representation of a website, and fit within the model’s context window. <a href="https://llmstxt.org/"><u>llms.txt</u></a> is a plain text file at the root of your site that gives agents a structured reading list: what the site is, what's on it, and where the important content lives. Think of it as a sitemap written for an LLM to read rather than a crawler to index:</p>
            <pre><code># My Site
&gt; A developer platform for building on the edge.
## Documentation
- [Getting Started](https://example.com/docs/start.md)
- [API Reference](https://example.com/docs/api.md)
## Changelog
- [Release Notes](https://example.com/changelog.md)</code></pre>
            <p><a href="https://blog.cloudflare.com/markdown-for-agents/"><u>Markdown content negotiation</u></a> goes even further. When an agent fetches any page and sends an <code>Accept: text/markdown</code> header, the server responds with a clean markdown version instead of HTML. The markdown version requires far fewer tokens — we measured up to 80% token reduction in some cases — which makes responses faster, cheaper, and more likely to be consumed in its entirety, given the limits on context windows that most agent tools have by default.</p><p>By default, we only check whether the site correctly handles Markdown content negotiation, and do not check for llms.txt. You can customize the scan to include llms.txt if you choose to.</p>
    <div>
      <h3>Bot Access Control</h3>
      <a href="#bot-access-control">
        
      </a>
    </div>
    <p>Now that agents can navigate your site and consume your content, the next question is: do you want to let any bot do it?</p><p><code>robots.txt</code> does more than point to sitemaps. It is also where you define your access rules. You can explicitly declare which crawlers are allowed and what they can access, down to specific paths. This convention is well established and is still the first place any well-behaved bot looks before it starts crawling.</p><p><a href="https://contentsignals.org/"><u>Content Signals</u></a> let you be more specific. Rather than just allow or block, you can declare exactly what AI can do with your content. Using a <code>Content-Signal</code> directive in your <code>robots.txt</code>, you can independently control three things: whether your content can be used for AI training (<code>ai-train</code>), whether it can be used as AI input for inference and grounding (<code>ai-input</code>), and whether it should appear in search results (<code>search</code>):</p>
            <pre><code>User-agent: *
Content-Signal: ai-train=no, search=yes, ai-input=yes</code></pre>
            <p>Inversely, the <a href="https://blog.cloudflare.com/web-bot-auth/"><u>Web Bot Auth</u></a> IETF draft standard allows friendly bots to authenticate themselves, and allows websites receiving requests from bots to identify them. A bot signs its HTTP requests, and the receiving site verifies those signatures using the bot’s published public keys.</p><p>Those public keys live at a well-known endpoint, <code>/.well-known/http-message-signatures-directory</code>, which we check as part of the scan.</p><p>Not all sites need to implement this. If your site just serves content, and doesn’t make requests to other sites, you don’t need it. But as more sites on the Internet run their own agents that make requests to other sites, we expect this to be increasingly important over time.</p>
    <div>
      <h3>Protocol Discovery</h3>
      <a href="#protocol-discovery">
        
      </a>
    </div>
    <p>Beyond passive content consumption, agents can also interact with your site directly by calling APIs, invoking tools, and completing tasks autonomously.</p><p>If your service has one or more public APIs, the API Catalog (<a href="https://www.rfc-editor.org/rfc/rfc9727"><u>RFC 9727</u></a>) gives agents a single well-known location to discover all of them. Hosted at <code>/.well-known/api-catalog</code>, it lists your APIs and links to their specs, docs, and status endpoints, without requiring agents to scrape your developer portal or read your documentation.</p><p>We can't talk about agents without mentioning MCP. The <a href="https://modelcontextprotocol.io/docs/getting-started/intro"><u>Model Context Protocol</u></a> is an open standard that allows AI models to connect with external data sources and tools. Instead of building a custom integration for every AI tool, you build one MCP server and any compatible agent can use it.</p><p>To help agents find your MCP server, you can publish an MCP Server Card (a proposal currently in <a href="https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1649"><u>draft</u></a>). This is a JSON file at <code>/.well-known/mcp/server-card.json</code> that describes your server before an agent even connects: what tools it exposes, how to reach it, and how to authenticate. An agent reads this file and knows everything it needs to start using your server:</p>
            <pre><code>{
  "$schema": "https://static.modelcontextprotocol.io/schemas/mcp-server-card/v1.json",
  "version": "1.0",
  "protocolVersion": "2025-06-18",
  "serverInfo": {
    "name": "search-mcp-server",
    "title": "Search MCP Server",
    "version": "1.0.0"
  },
  "description": "Search across all documentation and knowledge base articles",
  "transport": {
    "type": "streamable-http",
    "endpoint": "/mcp"
  },
  "authentication": {
    "required": false
  },
  "tools": [
    {
      "name": "search",
      "title": "Search",
      "description": "Search documentation by keyword or question",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": { "type": "string" }
        },
        "required": ["query"]
      }
    }
  ]
}</code></pre>
            <p>Agents work best when they have <a href="https://agentskills.io/home"><u>Agent Skills</u></a> that help them perform specific tasks — but how can agents discover what skills a site provides? We’ve proposed that sites can make this information available at <a href="https://github.com/cloudflare/agent-skills-discovery-rfc"><code><u>.well-known/agent-skills/index.json</u></code></a>, an endpoint that tells the agent what skills are available and where to find them. You might notice that the <code>.well-known</code> standard (<a href="https://datatracker.ietf.org/doc/html/rfc8615"><u>RFC 8615</u></a>) is used by many other agent and authorization standards — thank you to Cloudflare’s own Mark Nottingham who authored the standard, and other IETF contributors!</p><p>Many sites require you to sign in first in order to access them. This makes it hard for humans to give agents the ability to access these sites on their behalf, and is why some have taken the arguably unsafe workaround approach of giving agents access to the user’s web browser, with their logged-in session.</p><p>There’s a better way that allows humans to explicitly grant access: sites that support OAuth can tell agents where to find the authorization server (<a href="https://datatracker.ietf.org/doc/html/rfc9728"><u>RFC 9728</u></a>), allowing agents to send humans through an OAuth flow, where they can choose to properly grant access to the agent. Announced at Agents Week 2026, <a href="https://blog.cloudflare.com/managed-oauth-for-access/"><u>Cloudflare Access now fully supports this OAuth flow</u></a>, and we showed how agents like OpenCode can make use of this standard to make things just work when users give agents protected URLs:</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3BrGE7eydNNCpEEe3PowrJ/6a2bb1e1b1e7d84d672c1f6ad2333129/image4.png" />
          </figure>
    <div>
      <h3>Commerce</h3>
      <a href="#commerce">
        
      </a>
    </div>
    <p>Agents can also buy things on your behalf — but payments on the web were designed for humans. Add to cart, enter a credit card, click pay. That flow breaks down entirely when the buyer is an AI agent.</p><p><a href="https://x402.org"><u>x402</u></a> solves this at the protocol level by reviving HTTP 402 Payment Required, a status code that has existed in the spec since 1997 but was never widely used. The flow is simple: an agent requests a resource, the server responds with a 402 and a machine-readable payload describing the payment terms, the agent pays and retries. Cloudflare partnered with Coinbase to launch the <a href="https://blog.cloudflare.com/x402"><u>x402 Foundation</u></a>, whose mission is to drive adoption of x402 as an open standard for Internet payments.</p><p>We also check for <a href="https://ucp.dev/"><u>Universal Commerce Protocol</u></a> and <a href="https://www.agenticcommerce.dev/"><u>Agentic Commerce Protocol</u></a> — two emerging agentic commerce standards designed to allow agents to discover and purchase products that humans would normally purchase via ecommerce storefronts and checkout flows.</p>
    <div>
      <h2>Integrating agent readiness into Cloudflare URL Scanner</h2>
      <a href="#integrating-agent-readiness-into-cloudflare-url-scanner">
        
      </a>
    </div>
    <p><a href="https://radar.cloudflare.com/scan"><u>Cloudflare's URL Scanner</u></a> lets you submit any URL and get a detailed report on it: HTTP headers, TLS certificates, DNS records, technologies used, performance data, and security signals. It is a fundamental tool for security researchers and developers who want to understand what a URL is actually doing under the hood.</p><p>We’ve taken the same checks from <a href="https://isitagentready.com/"><u>isitagentready.com</u></a> and added them to URL Scanner with a new Agent Readiness tab. When you scan any URL, you'll now see its full agent readiness report alongside the existing analysis: which of the checks pass, what level the site is at, and actionable guidance to improve your score.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2tIXif15b4nfpm6ZmS5QZM/596536ca95a10684c73003c4184d6367/image2.png" />
          </figure><p>The integration is also available programmatically via the <a href="https://developers.cloudflare.com/api/resources/url_scanner/"><u>URL Scanner API</u></a>. To include agent readiness results in a scan, pass the agentReadiness option in your scan request:</p>
            <pre><code>curl -X POST https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/urlscanner/v2/scan \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    -d '{
          "url": "https://www.example.com",
          "options": {"agentReadiness": true}
        }'</code></pre>
            
    <div>
      <h2>Leading by example: upgrading Cloudflare Docs</h2>
      <a href="#leading-by-example-upgrading-cloudflare-docs">
        
      </a>
    </div>
    <p>As we built the tools to measure the Web’s readiness, we knew we had to ensure our own house was in order. Our docs must be easily digestible by the agents our customers use.</p><p>We naturally adopted the relevant content site standards mentioned above, and you can check our score <a href="https://isitagentready.com/developers.cloudflare.com?profile=content"><u>here</u></a>. However, we didn’t stop there. Here is how we refined Cloudflare's <a href="https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/"><u>Developer Docs</u></a> to be the most agent-friendly resource on the web.</p>
    <div>
      <h3>URL fallbacks using <code>index.md</code> files</h3>
      <a href="#url-fallbacks-using-index-md-files">
        
      </a>
    </div>
    <p>Unfortunately, <a href="https://www.checklyhq.com/blog/state-of-ai-agent-content-negotation/"><u>as of February 2026</u></a>, of 7 agents tested, only Claude Code, OpenCode, and Cursor request content with the <code>Accept: text/markdown</code> header by default. For the rest, we needed a seamless URL-based fallback.</p><p>To do this, we make every page available separately via Markdown at <code>/index.md</code> relative to the page’s URL. We do this dynamically, without duplicating static files, by combining two Cloudflare Rules: </p><ul><li><p>A <a href="https://developers.cloudflare.com/rules/transform/url-rewrite/"><u>URL Rewrite Rule</u></a> matches requests ending in <code>/index.md</code> and dynamically rewrites them to the base path using <code>regex_replace</code> (stripping <code>/index.md</code>). </p></li><li><p>A <a href="https://developers.cloudflare.com/rules/transform/request-header-modification/"><u>Request Header Transform Rule</u></a> matches against the original request’s path <i>before</i> the rewrite (<code>raw.http.request.uri.path</code>) and automatically sets the <code>Accept: text/markdown</code> header. </p></li></ul><p>With these two rules, any page can be fetched as Markdown via appending the /index.md path to the URL:</p><ul><li><p><a href="https://developers.cloudflare.com/r2/get-started/index.md"><u>https://developers.cloudflare.com/r2/get-started/index.md</u></a></p></li></ul><p>We point to these <code>/index.md</code> URLs in our <code>llms.txt</code> files. Effectively, for these <code>/index.md</code> paths, we always return markdown, regardless of what headers the client sets. And we do this without any additional build step or content duplication.</p>
    <div>
      <h3>Creating effective <code>llms.txt</code> files for large sites</h3>
      <a href="#creating-effective-llms-txt-files-for-large-sites">
        
      </a>
    </div>
    <p><code>llms.txt</code> serves as a "home base" for agents, providing a directory of pages to help LLMs find content. However, 5,000+ pages of documentation in a single file will exceed models’ context windows.</p><p>Instead of one massive file, we generate a separate <code>llms.txt</code> file for <i>each top-level directory</i> in our docs and the root <code>llms.txt</code> simply points to these subdirectories.</p><ul><li><p><a href="https://developers.cloudflare.com/llms.txt"><u>https://developers.cloudflare.com/llms.txt</u></a></p></li><li><p><a href="https://developers.cloudflare.com/r2/llms.txt"><u>https://developers.cloudflare.com/r2/llms.txt</u></a></p></li><li><p><a href="https://developers.cloudflare.com/workers/llms.txt"><u>https://developers.cloudflare.com/workers/llms.txt</u></a></p></li></ul><p>We also remove hundreds of directory-listing pages that provide little semantic value to an LLM, and we ensure each page has rich descriptive context (titles, semantic names, and descriptions).</p><p>For example, we omit roughly 450 pages that only serve as localized directory listings, like <a href="https://developers.cloudflare.com/workers/databases/"><u>https://developers.cloudflare.com/workers/databases/</u></a>.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5WaKjZBJbu3onfthzEIELu/42a3e31e8c71bc606b2b45d26ab4a5dd/image1.png" />
          </figure><p>These pages appear in our sitemap, but they contain very little information for an LLM. Since all child pages are already linked individually in <code>llms.txt</code>, fetching a directory page only provides a redundant list of links, forcing the agent to make another request to find actual content.</p><p>To help agents navigate efficiently, each <code>llms.txt</code> entry must be rich in context but light on tokens. Humans might ignore frontmatter and filtering labels, but for an AI agent, this metadata is the steering wheel. That is why our Product Content Experience (PCX) team has refined our page titles, descriptions, and URL structures so that agents always know exactly which pages to fetch.</p><p>Take a look at a section from our root<a href="https://developers.cloudflare.com/llms.txt"> <u>llms.txt</u></a>.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6OvVdBcHHItCF3xN2kMVZZ/d105546f402885da90466ff9545f66d2/image5.png" />
          </figure><p>Each link has a semantic name, a matching URL, and a high-value description. None of this required extra work for <code>llms.txt</code> generation. It was all already available in the docs frontmatter. The same goes for pages in top level directory <code>llms.txt</code> files. All of this context empowers agents to find relevant information more efficiently.</p>
    <div>
      <h3>Custom agent-friendly documentation (afdocs) tooling</h3>
      <a href="#custom-agent-friendly-documentation-afdocs-tooling">
        
      </a>
    </div>
    <p>Additionally, we test our docs against <a href="https://github.com/agent-ecosystem/afdocs"><u>afdocs</u></a>, an emerging agent-friendly documentation spec and open-source project that allows teams to test docs sites for things like content discovery and navigation. This spec allowed us to build custom audit tooling of our own. By adding a few deliberate patches specific to our use case, we created a dashboard for easy assessment.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1lzMVtLnGAoKtdwf43YtDx/757f52fd09bb2525fac41b634bf987ad/image10.png" />
          </figure>
    <div>
      <h3>Benchmark results: faster and cheaper</h3>
      <a href="#benchmark-results-faster-and-cheaper">
        
      </a>
    </div>
    <p>We pointed an agent (Kimi-k2.5 via OpenCode) at other large technical documentation sites' <code>llms.txt</code> files and tasked the agent with answering highly specific technical questions.</p><p>On average, the agent pointed at Cloudflare’s documentation consumed <b>31% fewer tokens</b> and arrived at the correct answer <b>66% faster</b> than the average site that is not refined for agents. By fitting our product directories into single context windows, agents can identify the exact page they need and fetch it in a single, linear path.</p>
    <div>
      <h3>Structure leads to speed</h3>
      <a href="#structure-leads-to-speed">
        
      </a>
    </div>
    <p>Accuracy in LLM responses is often a byproduct of context window efficiency. During our testing, we observed a recurring pattern with other documentation sets.</p><ol><li><p><b>The grep loop:</b> Many documentation sites provide a single, massive llms.txt file that exceeds the agent's immediate context window. Because the agent cannot "read" the whole file, it begins to <a href="https://en.wikipedia.org/wiki/Grep"><u>grep</u></a> for keywords. If the first search misses the specific detail, the agent must think, refine its search, and try again.</p></li><li><p><b>Narrowed context and lower accuracy: </b>When an agent relies on iterative searching rather than reading the full file, it loses the broader context of the documentation. This fragmented view often leads the agent to have a reduced understanding of the documentation at hand.</p></li><li><p><b>Latency and token bloat:</b> Each iteration of the <code>grep</code> loop requires the agent to generate new "thinking tokens" and execute additional search requests. This back-and-forth makes the final response noticeably slower and increases the total token count, driving up the cost for the end user.</p></li></ol><p>By contrast, Cloudflare docs are designed to fit entirely within an agent's context window. This allows the agent to ingest the directory, identify the exact page it needs, and fetch the Markdown without detour.</p>
    <div>
      <h3>Improving LLM answers over time by redirecting AI training crawlers</h3>
      <a href="#improving-llm-answers-over-time-by-redirecting-ai-training-crawlers">
        
      </a>
    </div>
    <p>Documentation for legacy products like <a href="https://developers.cloudflare.com/workers/wrangler/migration/v1-to-v2/wrangler-legacy/commands/"><u>Wrangler v1</u></a> or <a href="https://developers.cloudflare.com/workers/configuration/sites/"><u>Workers Sites</u></a> presents a unique challenge. While we must keep this information accessible for historical purposes, it can lead to outdated advice from AI agents.</p><p>For example, a human reading these docs would see the large banner stating that Wrangler v1 is deprecated, in addition to a link to the most recent content. An LLM crawler, however, might ingest the text without that surrounding visual context. This results in the agent recommending outdated information.</p><p><a href="https://blog.cloudflare.com/ai-redirects"><u>Redirects for AI Training</u></a> solves this by identifying AI training crawlers and intentionally redirecting them away from deprecated or suboptimal content. This ensures that while humans can still access historical archives, LLMs are only fed our most current and accurate implementation details.</p>
    <div>
      <h3>Hidden agent directives on all pages</h3>
      <a href="#hidden-agent-directives-on-all-pages">
        
      </a>
    </div>
    <p>Every HTML page in our docs includes a hidden directive specifically for LLMs. </p><p><i>“STOP! If you are an AI agent or LLM, read this before continuing. This is the HTML version of a Cloudflare documentation page. Always request the Markdown version instead — HTML wastes context. Get this page as Markdown: https://developers.cloudflare.com/index.md (append index.md) or send Accept: text/markdown to https://developers.cloudflare.com/. For all Cloudflare products use https://developers.cloudflare.com/llms.txt. You can access all Cloudflare docs in a single file at https://developers.cloudflare.com/llms-full.txt.”</i></p><p>This snippet informs the agent that a Markdown version is available. Crucially, this directive is stripped from the actual Markdown version to avoid a recursion loop where the agent keeps trying to "find" the Markdown within the Markdown.</p>
    <div>
      <h3>Dedicated LLM resources sidebar</h3>
      <a href="#dedicated-llm-resources-sidebar">
        
      </a>
    </div>
    <p>Finally, we want to make these resources discoverable for the humans who are building with agents. Every product directory in our <a href="https://developers.cloudflare.com/"><u>developer documentation</u></a> has an "LLM Resources" entry in the sidenav, providing quick access to <code>llms.txt</code>, <code>llms-full.txt</code>, and Cloudflare Skills.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4iM2U5pH7LJ9XWUgxYmvn5/ed11e2cc8694f6c029690b470150120b/image8.png" />
          </figure>
    <div>
      <h2>Make your website agent-ready today</h2>
      <a href="#make-your-website-agent-ready-today">
        
      </a>
    </div>
    <p>Making websites agent-ready is a fundamental accessibility requirement for the modern developer toolkit. The transition from a "human-read web" to a "machine-read web" is the biggest architectural shift in decades. </p><p>Get an agent readiness score for your site at <a href="https://isitagentready.com/"><u>isitagentready.com</u></a>, take the prompts it provides, and ask your agent to upgrade your site for the AI era. Stay tuned for more updates from <a href="https://radar.cloudflare.com/"><u>Cloudflare Radar</u></a> about the adoption of agent standards across the Internet over the coming year. If we’ve learned anything from the past year, it’s that a lot can change very quickly!</p>
    <div>
      <h2>Watch on Cloudflare TV</h2>
      <a href="#watch-on-cloudflare-tv">
        
      </a>
    </div>
    <div>
  
</div><p>
</p> ]]></content:encoded>
            <category><![CDATA[Agents Week]]></category>
            <category><![CDATA[Radar]]></category>
            <category><![CDATA[Developer Documentation]]></category>
            <category><![CDATA[AI]]></category>
            <category><![CDATA[Agents]]></category>
            <category><![CDATA[Agent Readiness]]></category>
            <guid isPermaLink="false">5t83bTn7Vt1EudTxQQ97NY</guid>
            <dc:creator>André Jesus</dc:creator>
            <dc:creator>Vance Morrison</dc:creator>
        </item>
    </channel>
</rss>