{
  "slug": "agent-ready-website",
  "title": "The Agent-Ready Website: A Complete Guide to AI Visibility, Access Control and Monetization",
  "description": "The full operator playbook for making a website work for AI agents and AI crawlers: be fetchable, be readable, be controllable, be payable — with a 30-day implementation plan.",
  "kind": "pillar",
  "order": 0,
  "target_query": "how to make a website AI agent ready",
  "secondary_queries": [
    "optimize website for AI agents",
    "AI visibility for websites",
    "agent-first website architecture",
    "AI crawler strategy for publishers"
  ],
  "tags": [
    "ai-visibility",
    "agents",
    "crawlers",
    "llms.txt",
    "monetization",
    "seo"
  ],
  "published": "2026-07-26",
  "updated": "2026-07-26",
  "words": 4160,
  "premium": false,
  "license": "https://changegamer.ai/license.xml",
  "canonical": "https://changegamer.ai/articles/agent-ready-website",
  "markdown": "https://changegamer.ai/articles/agent-ready-website.md",
  "takeaways": [
    "An agent-ready site does four things: it is **fetchable** at the edge, **readable** without a browser, **controllable** through published policy, and **payable** without a human in the loop. Most sites fail the first two for reasons that have nothing to do with content quality.",
    "The single highest-leverage change is not llms.txt. It is verifying that your WAF, bot-management rules and browser-integrity checks are not silently returning 403 to the crawlers you want.",
    "Blocking and monetizing are the same decision made twice: `robots.txt` and Content Signals express a preference, RSL expresses a licence, and HTTP 402 is the only layer that actually enforces a price.",
    "Measure agent traffic server-side by user agent and outcome. Analytics that depend on JavaScript record almost none of it.",
    "Agent traffic is no longer a rounding error: Cloudflare reported automated systems drove 57.5% of HTTP requests against 42.5% human in mid-2026 — the first such crossover it has recorded."
  ],
  "outline": [
    {
      "depth": 2,
      "text": "The four jobs of an agent-ready site",
      "anchor": "the-four-jobs-of-an-agent-ready-site",
      "url": "https://changegamer.ai/articles/agent-ready-website#the-four-jobs-of-an-agent-ready-site"
    },
    {
      "depth": 2,
      "text": "Job 1 — Fetchable: the layer that silently breaks everything",
      "anchor": "job-1-fetchable-the-layer-that-silently-breaks-everything",
      "url": "https://changegamer.ai/articles/agent-ready-website#job-1-fetchable-the-layer-that-silently-breaks-everything"
    },
    {
      "depth": 3,
      "text": "Verify, do not assume",
      "anchor": "verify-do-not-assume",
      "url": "https://changegamer.ai/articles/agent-ready-website#verify-do-not-assume"
    },
    {
      "depth": 3,
      "text": "The rest of the fetchability checklist",
      "anchor": "the-rest-of-the-fetchability-checklist",
      "url": "https://changegamer.ai/articles/agent-ready-website#the-rest-of-the-fetchability-checklist"
    },
    {
      "depth": 2,
      "text": "Job 2 — Readable: content a machine can extract in one hop",
      "anchor": "job-2-readable-content-a-machine-can-extract-in-one-hop",
      "url": "https://changegamer.ai/articles/agent-ready-website#job-2-readable-content-a-machine-can-extract-in-one-hop"
    },
    {
      "depth": 3,
      "text": "Semantic HTML is the floor, not the ceiling",
      "anchor": "semantic-html-is-the-floor-not-the-ceiling",
      "url": "https://changegamer.ai/articles/agent-ready-website#semantic-html-is-the-floor-not-the-ceiling"
    },
    {
      "depth": 3,
      "text": "Markdown variants: the highest-value cheap win",
      "anchor": "markdown-variants-the-highest-value-cheap-win",
      "url": "https://changegamer.ai/articles/agent-ready-website#markdown-variants-the-highest-value-cheap-win"
    },
    {
      "depth": 3,
      "text": "Discovery files: llms.txt and friends",
      "anchor": "discovery-files-llms-txt-and-friends",
      "url": "https://changegamer.ai/articles/agent-ready-website#discovery-files-llms-txt-and-friends"
    },
    {
      "depth": 3,
      "text": "Structured data, feeds and APIs",
      "anchor": "structured-data-feeds-and-apis",
      "url": "https://changegamer.ai/articles/agent-ready-website#structured-data-feeds-and-apis"
    },
    {
      "depth": 3,
      "text": "MCP: content as a tool call",
      "anchor": "mcp-content-as-a-tool-call",
      "url": "https://changegamer.ai/articles/agent-ready-website#mcp-content-as-a-tool-call"
    },
    {
      "depth": 2,
      "text": "Job 3 — Controllable: say what you mean, in the layer that means it",
      "anchor": "job-3-controllable-say-what-you-mean-in-the-layer-that-means-it",
      "url": "https://changegamer.ai/articles/agent-ready-website#job-3-controllable-say-what-you-mean-in-the-layer-that-means-it"
    },
    {
      "depth": 3,
      "text": "Per-agent robots.txt is a business decision, not a checkbox",
      "anchor": "per-agent-robots-txt-is-a-business-decision-not-a-checkbox",
      "url": "https://changegamer.ai/articles/agent-ready-website#per-agent-robots-txt-is-a-business-decision-not-a-checkbox"
    },
    {
      "depth": 3,
      "text": "Usage signals: the cheapest layer to add",
      "anchor": "usage-signals-the-cheapest-layer-to-add",
      "url": "https://changegamer.ai/articles/agent-ready-website#usage-signals-the-cheapest-layer-to-add"
    },
    {
      "depth": 3,
      "text": "Licensing: from preference to terms",
      "anchor": "licensing-from-preference-to-terms",
      "url": "https://changegamer.ai/articles/agent-ready-website#licensing-from-preference-to-terms"
    },
    {
      "depth": 2,
      "text": "Job 4 — Payable: pricing a machine buyer",
      "anchor": "job-4-payable-pricing-a-machine-buyer",
      "url": "https://changegamer.ai/articles/agent-ready-website#job-4-payable-pricing-a-machine-buyer"
    },
    {
      "depth": 2,
      "text": "Measurement: if you cannot see agents, you cannot decide anything",
      "anchor": "measurement-if-you-cannot-see-agents-you-cannot-decide-anything",
      "url": "https://changegamer.ai/articles/agent-ready-website#measurement-if-you-cannot-see-agents-you-cannot-decide-anything"
    },
    {
      "depth": 2,
      "text": "What transfers from classic SEO, and what does not",
      "anchor": "what-transfers-from-classic-seo-and-what-does-not",
      "url": "https://changegamer.ai/articles/agent-ready-website#what-transfers-from-classic-seo-and-what-does-not"
    },
    {
      "depth": 2,
      "text": "A worked example: how this site is built",
      "anchor": "a-worked-example-how-this-site-is-built",
      "url": "https://changegamer.ai/articles/agent-ready-website#a-worked-example-how-this-site-is-built"
    },
    {
      "depth": 2,
      "text": "A 30-day implementation plan",
      "anchor": "a-30-day-implementation-plan",
      "url": "https://changegamer.ai/articles/agent-ready-website#a-30-day-implementation-plan"
    },
    {
      "depth": 3,
      "text": "Week 1 — Make sure you are reachable",
      "anchor": "week-1-make-sure-you-are-reachable",
      "url": "https://changegamer.ai/articles/agent-ready-website#week-1-make-sure-you-are-reachable"
    },
    {
      "depth": 3,
      "text": "Week 2 — Make yourself cheap to read",
      "anchor": "week-2-make-yourself-cheap-to-read",
      "url": "https://changegamer.ai/articles/agent-ready-website#week-2-make-yourself-cheap-to-read"
    },
    {
      "depth": 3,
      "text": "Week 3 — Say what you mean",
      "anchor": "week-3-say-what-you-mean",
      "url": "https://changegamer.ai/articles/agent-ready-website#week-3-say-what-you-mean"
    },
    {
      "depth": 3,
      "text": "Week 4 — Instrument, then decide about money",
      "anchor": "week-4-instrument-then-decide-about-money",
      "url": "https://changegamer.ai/articles/agent-ready-website#week-4-instrument-then-decide-about-money"
    },
    {
      "depth": 2,
      "text": "What to skip",
      "anchor": "what-to-skip",
      "url": "https://changegamer.ai/articles/agent-ready-website#what-to-skip"
    },
    {
      "depth": 2,
      "text": "Where this is going",
      "anchor": "where-this-is-going",
      "url": "https://changegamer.ai/articles/agent-ready-website#where-this-is-going"
    },
    {
      "depth": 2,
      "text": "The cluster: every sub-topic in depth",
      "anchor": "the-cluster-every-sub-topic-in-depth",
      "url": "https://changegamer.ai/articles/agent-ready-website#the-cluster-every-sub-topic-in-depth"
    },
    {
      "depth": 2,
      "text": "Sources and further reading",
      "anchor": "sources-and-further-reading",
      "url": "https://changegamer.ai/articles/agent-ready-website#sources-and-further-reading"
    }
  ],
  "faq": [
    {
      "question": "Is making a site \"agent-ready\" the same as SEO?",
      "answer": "No. Classic SEO optimises for a ranked list of ten blue links. Agent-readiness optimises for a machine that fetches a handful of URLs, parses them without executing JavaScript, and either cites them or discards them. The two overlap in crawlability and structured data, and diverge everywhere else: an agent has no patience for interstitials, no cookie jar you can rely on, a hard token budget, and — increasingly — a wallet."
    },
    {
      "question": "Do I need llms.txt to be visible to AI agents?",
      "answer": "No. llms.txt is a community convention proposed by Jeremy Howard (Answer.AI) on 3 September 2024, not a ratified standard, and no major AI vendor has committed to reading it. It is cheap to publish and it helps agents that do look for it, but it is a discovery convenience, not a ranking factor. Serving clean HTML plus Markdown variants and not blocking crawlers at the edge matters far more."
    },
    {
      "question": "Will blocking AI crawlers hurt my search rankings?",
      "answer": "It depends entirely on which token you block. Disallowing `Google-Extended` is a training opt-out and does not affect Google Search inclusion or ranking, and `Applebot-Extended` behaves the same way for Apple. Disallowing `Googlebot`, by contrast, removes you from Google Search. Blocking search-indexing bots such as `OAI-SearchBot`, `Claude-SearchBot` or `PerplexityBot` removes you from those products' answers, which is a distribution decision, not an SEO one."
    },
    {
      "question": "Can I actually charge AI crawlers money today?",
      "answer": "Yes, through three live mechanisms with very different trade-offs: a self-hosted HTTP 402 gate (full control, you handle billing), Cloudflare Pay Per Crawl (CDN-layer, in closed beta as of July 2026, Cloudflare as merchant of record), and x402 (open protocol, on-chain stablecoin settlement, governed by the Linux Foundation's x402 Foundation since its operational launch on 14 July 2026). Revenue depends on demand for your specific content, and for most sites it is currently small."
    },
    {
      "question": "How long does it take to make an existing site agent-ready?",
      "answer": "The unglamorous 80% — edge access verification, correct status codes, a robots.txt that says what you mean, Markdown or JSON variants of your main content, and server-side logging by user agent — is a focused week or two of engineering for a typical content site. Payment rails and licensing are a second phase and should wait until your logs show demand."
    }
  ],
  "body": "For twenty years the web was written for people, with search engines as the intermediary that decided who saw it. That intermediary is being replaced. The client on the other end of an increasing share of your requests is not a person with a browser — it is a model with a task, a token budget, and no tolerance for anything that is not content.\n\nThe scale of the shift is now measurable rather than anecdotal: Cloudflare reported that automated systems drove **57.5% of HTTP requests against 42.5% human** in mid-2026, the first such crossover it has recorded. Whatever share of that traffic is useful to you, it is not something you can treat as noise.\n\nThis guide is the operator side of that shift. It is not about writing content that models like. It is about the technical and commercial architecture that decides whether an agent can get your content at all, whether it can use it once fetched, whether you control what happens to it afterwards, and whether you get paid. Each section links to a focused deep-dive; this page is the map.\n\n## The four jobs of an agent-ready site\n\nEverything worth doing falls into four jobs, in strict dependency order. Skipping ahead is the most common and most expensive mistake — a beautifully structured llms.txt behind a WAF rule that 403s `GPTBot` is a file nobody will ever read.\n\n| # | Job | Question it answers | Fails when |\n|---|---|---|---|\n| 1 | **Fetchable** | Can a non-browser client get a 200 from your origin? | WAF, bot management, browser-integrity checks, JS-only rendering, aggressive rate limits |\n| 2 | **Readable** | Can it extract your content cheaply and unambiguously? | Content locked in rendered DOM, PDFs, images; no Markdown or JSON variant; no structured data |\n| 3 | **Controllable** | Do you decide what your content may be used for? | No per-agent robots.txt policy, no usage signals, no licence document |\n| 4 | **Payable** | Can a machine buy access without a human in the loop? | Checkout designed exclusively for humans; no 402; no machine-readable terms |\n\nThe order matters because each job depends on the one before it. Control without fetchability is theatre. Payment without readability sells something the buyer cannot consume.\n\n## Job 1 — Fetchable: the layer that silently breaks everything\n\nStart here, always. The most common reason a site is invisible to AI agents is not missing metadata; it is an edge rule nobody remembers enabling.\n\nThis is not hypothetical. On this site, Cloudflare's managed \"Manage AI bots\" rule was silently returning 403 to `GPTBot`, `ChatGPT-User`, `OAI-SearchBot`, `PerplexityBot`, `CCBot` and `Google-CloudVertexBot` — including on `/` and `/sitemap.xml` — while `robots.txt` explicitly allowed every one of them. Separately, Cloudflare's Browser Integrity Check, which is on by default, 403'd any client without standard browser headers and in the process broke Google Search Console's sitemap fetch. Both problems were invisible in the dashboard's summary view and both were found only by asking the origin directly.\n\n### Verify, do not assume\n\nThe check takes thirty seconds per crawler and is the highest-value thing in this guide:\n\n```bash\n# Does the origin answer a crawler UA with 200?\ncurl -sI -A \"Mozilla/5.0 (compatible; GPTBot/1.1; +https://openai.com/gptbot)\" \\\n  https://example.com/ | head -1\n\ncurl -sI -A \"Mozilla/5.0 (compatible; ClaudeBot/1.0; +https://anthropic.com/aup)\" \\\n  https://example.com/ | head -1\n\n# And the surfaces agents actually depend on\nfor p in / /robots.txt /sitemap.xml /llms.txt; do\n  printf \"%s \" \"$p\"\n  curl -sI -A \"PerplexityBot/1.0\" \"https://example.com$p\" | head -1\ndone\n```\n\nAnything other than `200` (or a deliberate `402`/`404`) is a bug in your access policy, not a crawler problem. A `403` here means an edge rule is overriding the policy you published — and because `robots.txt` is fetched over the same path, the crawler may never even learn what your policy is.\n\n### The rest of the fetchability checklist\n\n- **Status codes must be honest.** Soft 404s that return 200 with an error page poison agent pipelines far worse than they poison search indexes, because the agent will confidently quote the error page. Gone means 410 or 404; moved means 301; paywalled means 402 or 401, not 200-with-a-teaser.\n- **Redirect chains cost real money.** Every hop is a round trip against a token and time budget. Canonicalise once: pick trailing-slash or no-trailing-slash and serve that URL directly.\n- **Rate limits should be graduated, not binary.** A crawler that gets 429 with a `Retry-After` header will come back politely; one that gets a hard block disappears. Well-behaved agents implement backoff — see [handling rate limits and retries](/resources/handling-rate-limits-and-retries) for what the other side of that contract looks like.\n- **Do not require JavaScript for primary content.** Several crawlers do not execute it at all, and those that do pay a rendering cost that makes your page a low-priority fetch. If your content only exists after hydration, it effectively does not exist. This is the first of the failure modes catalogued in [why AI agents can't read your site](/articles/why-ai-agents-cant-read-your-site).\n- **Do not gate content behind cookie walls or interstitials.** An agent has no consent to give and no button to click.\n\n## Job 2 — Readable: content a machine can extract in one hop\n\nOnce a client can reach you, the question becomes cost. An agent working a task has a token budget; the cheaper your content is to parse, the more of it gets used. Three formats, in ascending order of effort and value.\n\n### Semantic HTML is the floor, not the ceiling\n\nReal `<article>`, `<h1>`–`<h3>`, `<table>` with `<th scope>`, and `<time datetime>` cost nothing and survive every extraction pipeline. Div soup with visual-only hierarchy forces the model to infer structure, and inference is where hallucination enters. If you do one thing for readability, make your headings a real outline.\n\n### Markdown variants: the highest-value cheap win\n\nServing a Markdown twin of every content page — `/page` and `/page.md` — removes navigation, scripts, styling and ads from what the model sees, typically cutting the token cost of a page by a large multiple with zero loss of meaning. Advertise it from the HTML page so it is discoverable:\n\n```html\n<link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">\n```\n\nThe mechanics, including content negotiation and the pitfalls of generating Markdown from rendered HTML rather than from source, are in [serving Markdown variants to AI agents](/articles/serving-markdown-variants-to-ai-agents). For the wider format question — Markdown vs JSON vs JSONL vs plain text, and which one an agent should prefer for which job — the reference is [data formats and schema](/resources/data-formats).\n\n### Discovery files: llms.txt and friends\n\n`/llms.txt` is a curated, Markdown index of your site written for models: an H1, an optional blockquote summary, and H2 sections of annotated links. It was proposed by Jeremy Howard (Answer.AI) on 3 September 2024 and remains a community convention rather than a ratified standard — useful, cheap, and not a ranking factor. The companion `/llms-full.txt` inlines the whole corpus for agents that prefer one large fetch.\n\nThree files, three different jobs, and they are routinely confused — the comparison is in [llms.txt vs robots.txt vs sitemap.xml](/articles/llms-txt-vs-robots-txt-vs-sitemap), and the exact file format, including the special `## Optional` section that agents may skip under context pressure, is in [the llms.txt convention explained](/resources/llms-txt-explained). If you are writing one from scratch, [how to write an llms.txt file](/articles/how-to-write-an-llms-txt-file) is the step-by-step with a template.\n\nTwo adjacent conventions are worth knowing: `AGENTS.md`, which tells coding agents how to work inside a repository rather than how to read a site ([AGENTS.md explained](/resources/agents-md-explained)), and NLWeb, a proposal for turning a site into a conversational endpoint ([NLWeb explained](/resources/nlweb-explained)).\n\n### Structured data, feeds and APIs\n\nSchema.org markup remains the most widely consumed machine-readable layer on the web, but only a handful of types earn their keep for agent consumers — and some of the effort sites spend on markup would be better spent on a JSON endpoint. Which types actually pay off is in [structured data for AI agents](/articles/structured-data-for-ai-agents).\n\nFor anything an agent might want repeatedly — an index, a price list, a changelog — a JSON endpoint beats every scraping strategy on both sides: cheaper for the agent, cheaper for you, and versionable. Design guidance is in [JSON API design for agents](/articles/json-api-design-for-agents), with the shape this site publishes documented in [JSON API for agents](/resources/json-api). Atom or JSON Feed on top of that gives pollers a cheap \"what changed\" signal so they stop re-fetching everything.\n\n### MCP: content as a tool call\n\nThe Model Context Protocol turns a site into a set of callable tools rather than a set of pages to scrape. For a content business it is a distribution channel: an agent that connects to your MCP server has your catalogue in its context without crawling anything. The strategic case, and the honest limits, are in [running an MCP server as a distribution channel](/articles/mcp-server-as-distribution-channel); how agents find and judge servers is in [finding and evaluating MCP servers](/resources/mcp-server-discovery), and the implementation path is [building an MCP server](/resources/building-mcp-servers).\n\n## Job 3 — Controllable: say what you mean, in the layer that means it\n\nControl is a stack of four layers with genuinely different force. Sites get this wrong by expecting the weak layers to do the strong layers' work.\n\n| Layer | Mechanism | Force | What it actually does |\n|---|---|---|---|\n| Access preference | `robots.txt` `Disallow` per user-agent token | Advisory | Asks compliant crawlers not to fetch |\n| Usage preference | Content Signals (`search`, `ai-input`, `ai-train`); IETF AIPREF work | Advisory, possibly legally relevant | Declares what fetched content may be used for |\n| Licence | RSL (`License:` directive → XML licence document) | Contractual claim | States terms and compensation in machine-readable form |\n| Enforcement | WAF/IP rules; HTTP 402/401 | Actually enforced | Stops or prices the request |\n\n### Per-agent robots.txt is a business decision, not a checkbox\n\nThe token table matters because the tokens do different things. `GPTBot` collects training data; `OAI-SearchBot` indexes for ChatGPT Search; `ChatGPT-User` is a live, user-triggered fetch — and since an OpenAI documentation update in December 2025, only the first two are listed as robots.txt-compliant. Anthropic's `ClaudeBot`, `Claude-SearchBot` and `Claude-User` split the same three ways. `Perplexity-User` ignores robots.txt by design. `Google-Extended` and `Applebot-Extended` are not crawlers at all: they are training opt-out tokens whose fetching is still done by `Googlebot` and `Applebot`, which is exactly why disallowing them costs you no search visibility.\n\nThe full token table with vendor, purpose and compliance status is maintained in [AI crawler policy: robots.txt and user-agents](/resources/ai-crawler-policy). The decision of which of them to allow — and the business logic behind each answer — is [should you block AI crawlers?](/articles/should-you-block-ai-crawlers).\n\n### Usage signals: the cheapest layer to add\n\nCloudflare announced the Content Signals Policy on 24 September 2025: three directives — `search`, `ai-input`, `ai-train` — expressed inside a `robots.txt` user-agent block as a comment, so unaware parsers ignore them safely. Cloudflare defaulted the policy on for over 3.8 million domains on its managed robots.txt feature, at `search=yes, ai-train=no`. Cloudflare itself is clear that these are preferences rather than a technical block, while noting they \"might have legal rights in various jurisdictions\" — citing the EU text-and-data-mining opt-out in Directive 2019/790. The IETF chartered an AI Preferences (AIPREF) Working Group in 2025 to standardise the same idea; as of mid-2026 it is still in progress, not an RFC. Details in [content signals explained](/resources/content-signals-explained).\n\n### Licensing: from preference to terms\n\nRSL (Really Simple Licensing) is a machine-readable licence document — typically an XML file such as `/license.xml`, discovered via a `License:` directive in `robots.txt` — that states permitted uses and compensation requirements. It is a licensing layer, not a settlement layer: it declares terms, it does not collect money. Provenance standards sit alongside it: C2PA Content Credentials cryptographically bind assertions about origin to a file ([C2PA content credentials](/resources/c2pa-content-credentials)). If your content is the product, [licensing content for AI training](/articles/licensing-content-for-ai-training) walks through what to publish and what to expect.\n\nA newer strand of work aims at controlling agents rather than crawlers — declaring which automated actions a site permits. That is the subject of the [agent control specification](/resources/agent-control-specification), and it matters more as browser-driving agents proliferate ([agentic browsers](/resources/agentic-browsers)).\n\n## Job 4 — Payable: pricing a machine buyer\n\nIf agents consume your content and you want revenue from it, you need a path a machine can complete alone. Human checkout is not that path: an agent cannot pass an email verification loop or read a confirmation inbox.\n\nThree mechanisms are live, and they are not competitors so much as different layers:\n\n1. **Self-hosted HTTP 402.** Your origin returns `402 Payment Required` with a JSON body a machine can parse: price, payment URL, how to retry, link to terms and licence. The agent buys a key and retries with `Authorization: Bearer …`. Maximum control, you own billing and support. This is the mechanism this site runs — the wire contract is in [paying for access: the HTTP 402 flow](/resources/paying-for-access-402), and the implementation walkthrough is [implementing an HTTP 402 paywall](/articles/http-402-paywall-implementation).\n2. **Cloudflare Pay Per Crawl.** A CDN-layer 402 marketplace: Cloudflare intercepts crawler requests, handles price negotiation via `crawler-max-price`, acts as merchant of record and remits payouts. It remained in closed/private beta as of July 2026. On 1 July 2026 Cloudflare announced a broader **Monetization Gateway** (waitlist stage) generalising the same pattern from crawler content to any protected resource, including APIs and MCP tools.\n3. **x402.** An open protocol settling on-chain in stablecoins (mainly USDC) across multiple network families, governed by the Linux Foundation's x402 Foundation, which grew from 22 founding members in April 2026 to 40 — including premier members Visa, Mastercard and Ripple — at its operational launch on 14 July 2026. Adoption jumped roughly tenfold after Apify put 20,000-plus Actors on the protocol. It is the only rail where a wallet-holding agent can pay end-to-end with no account and no human.\n\nA separate class of standards — ACP (Stripe/OpenAI) and AP2 (Google, governed by the FIDO Alliance) — solves a different problem: letting an agent check out with its owner's money and consent. Useful if you sell products to agents acting for humans; irrelevant if you are pricing content access. The comparison is in [agentic payment protocols](/resources/agentic-payment-protocols).\n\nThe hard part is not the plumbing, it is the number. Per-crawl pricing, corpus licensing and subscription keys behave very differently at agent scale; [what to charge AI crawlers](/articles/what-to-charge-ai-crawlers) works through the arithmetic and the failure modes, including the one that catches everyone: pricing before you have demand data.\n\n## Measurement: if you cannot see agents, you cannot decide anything\n\nClient-side analytics miss almost all agent traffic, because most agents do not execute your JavaScript. Everything useful is server-side. The minimum viable telemetry is one row per request with: timestamp, path, user agent, status code, and outcome class (served, blocked, 402, upgrade-required). That is enough to answer the only four questions that drive decisions:\n\n- **Which agents visit, and are they real?** Vendor UA strings are trivially spoofed; every major vendor publishes IP ranges, and verification is the only way to know.\n- **What do they fetch?** If demand concentrates on a handful of URLs, those are your product. If it is spread thin, your corpus is the product, not any page.\n- **What do they get?** A wall of 403s means your edge is overriding your policy. A wall of 402s with no purchases means your price or your payment path is wrong.\n- **Does agent traffic convert?** Citations in AI answers, referral clicks from answer engines, and — if you sell access — direct machine purchases.\n\nThe instrumentation recipe, including how to sample without losing the signal and how to attribute answer-engine referrals, is in [measuring AI agent traffic](/articles/measuring-ai-agent-traffic). What answer engines appear to reward once they can read you is in [how AI search engines choose sources](/articles/how-ai-search-engines-choose-sources).\n\n## What transfers from classic SEO, and what does not\n\nTeams arriving from an SEO background bring habits that are half useful. The split is sharp enough to be worth naming, because the useless half consumes most of the budget.\n\n| SEO practice | Transfers? | Why |\n|---|---|---|\n| Crawlability, clean status codes, canonical URLs, XML sitemap | **Yes, fully** | Same mechanics, same crawlers in several cases; `Googlebot` still fetches for `Google-Extended` policy |\n| Structured data | **Partly** | A few types are consumed by machine readers; most markup is invisible to them |\n| Information architecture and internal linking | **Yes** | An agent that fetches one page and finds a curated link list to the rest gets your whole corpus in two hops |\n| Page speed / Core Web Vitals | **Partly** | Time-to-first-byte and payload size matter; layout-shift and interaction metrics do not — nothing is being painted |\n| Keyword density, heading keyword placement | **No** | Retrieval is embedding- and citation-driven; stuffing changes nothing except readability |\n| Link building for authority | **Unclear** | Answer engines cite sources they can verify; there is no published evidence that off-site link volume drives citation the way it drives ranking |\n| Content freshness signals | **Yes, more so** | A dated, revised page is easier for a model to trust and quote than an undated one; publish real `dateModified` |\n| Interstitials, newsletter gates, cookie walls | **Actively harmful** | A human dismisses them; an agent records them as the page content |\n\nThe uncomfortable summary: the technical hygiene half of SEO is table stakes for agent-readiness, and the persuasion half is close to irrelevant. What replaces persuasion is being *verifiable* — dated claims, named sources, explicit terms — because a model deciding whether to cite you is, in effect, assessing risk.\n\n## A worked example: how this site is built\n\nIt helps to see the four jobs in one architecture. This site is a static build where a single source-of-truth data file generates every surface, which is what keeps the machine variants from drifting away from the HTML:\n\n- **Fetchable.** Static assets behind a Worker; index files (`/robots.txt`, `/llms.txt`, `/sitemap-index.xml`, `/license.xml`) bypass the gate entirely and can never be paywalled by code. Crawler access is re-verified with spoofed-UA `curl` after every edge change.\n- **Readable.** Every resource ships three ways from one source: an HTML page, a Markdown twin at `/resources/<slug>.md`, and JSON at `/api/resources/<slug>.json`. The whole corpus is available as one file (`/llms-full.txt`), as NDJSON (`/api/corpus.jsonl`), and as tool calls over MCP at `/mcp`.\n- **Controllable.** `robots.txt` is written per user-agent token, and an RSL licence document at `/license.xml` states terms in machine-readable form.\n- **Payable.** Premium resources return `402 Payment Required` with a JSON body carrying price, checkout URL, retry instructions, and links to both terms and licence — plus `Link` headers advertising the payment manifest. An agent can go from \"blocked\" to \"paid and reading\" without a human.\n\nThe generalisable lesson is not the stack, it is the invariant: **one source of truth, many rendered surfaces.** Sites that hand-maintain a Markdown copy or an llms.txt file alongside their CMS end up shipping two versions of the truth, and the machine-readable one rots first.\n\n## A 30-day implementation plan\n\nOrdered by value per hour, not by novelty. Weeks are calendar guidance for a small team; a determined engineer does week 1 and 2 in three days.\n\n### Week 1 — Make sure you are reachable\n\n1. Run the crawler-UA `curl` matrix above against `/`, `/robots.txt`, `/sitemap.xml`, and your three most valuable pages. Fix every unexpected 403 at the WAF or bot-management layer.\n2. Turn off browser-integrity-style checks on content paths, or scope them to authenticated routes only.\n3. Audit status codes: no soft 404s, no 200-with-error-page, no redirect chains longer than one hop on canonical URLs.\n4. Confirm primary content is present in the raw HTML response (`curl -s URL | grep -c \"<your first paragraph>\"`), not injected after hydration.\n\n### Week 2 — Make yourself cheap to read\n\n5. Ship Markdown variants for your main content type and advertise them with `<link rel=\"alternate\" type=\"text/markdown\">`.\n6. Fix heading hierarchy and convert visual tables to real `<table>` markup.\n7. Add or correct the two or three schema.org types that actually apply.\n8. Publish `/llms.txt` — an H1, a one-paragraph summary, and annotated link lists pointing at your Markdown variants.\n\n### Week 3 — Say what you mean\n\n9. Rewrite `robots.txt` per user-agent token, deliberately: search-indexing bots, live user fetchers, and training crawlers are three separate decisions.\n10. Add Content Signals (`search=…, ai-train=…`) to match the policy you actually want.\n11. If your content has licensing value, publish an RSL document and reference it with a `License:` directive.\n12. Re-run the week 1 verification matrix — policy changes routinely break access.\n\n### Week 4 — Instrument, then decide about money\n\n13. Log every request server-side with UA, path, status and outcome. Keep 30 days.\n14. Build one dashboard answering the four questions above.\n15. Only now consider a payment rail — and pick it from your data: concentrated demand on a few URLs argues for per-resource 402; broad shallow crawling argues for corpus licensing or Pay Per Crawl.\n16. Publish machine-readable terms (`/api/payment.json`-style) next to whatever rail you choose, so an agent can discover the price without guessing.\n\n## What to skip\n\nBeing honest about the low-value end saves more time than any checklist item:\n\n- **Do not buy \"AI SEO\" tooling before your logs show agent traffic.** Instrumentation first; the tooling market is currently ahead of the evidence.\n- **Do not write content specifically to flatter models.** The observable signals — clear structure, dated claims, sources — are the same signals that serve human readers.\n- **Do not chase every emerging standard.** Several of the mechanisms in this guide are drafts or betas; treat anything without a stable spec as a cheap experiment, not a migration.\n- **Do not paywall your terms.** If your 402 body links to a licence page, that page must be free, or your payment flow is a dead end. The same applies to `robots.txt` and `llms.txt`: index and policy files should never be gated.\n\n## Where this is going\n\nThree trend lines are worth tracking, because each changes the architecture rather than the tactics.\n\n**Preferences are becoming standards.** The IETF AIPREF work is the first serious attempt to give usage preferences a spec-grade vocabulary. If it lands, \"no training\" stops being a Cloudflare feature and becomes a protocol.\n\n**Payment is becoming ambient.** With Visa, Mastercard and Ripple joining the x402 Foundation as premier members and Cloudflare generalising per-crawl payment into a broader monetization gateway, the assumption that a buyer must be a human with an account is eroding. Sites that publish machine-readable prices will be discoverable by buyers that never visit a homepage.\n\n**Agents are becoming clients, not just crawlers.** Browser-driving agents and MCP clients do not read pages so much as operate them. That shifts the question from \"can it parse my article\" to \"can it complete my flow\" — and sites that treat agent access as a first-class interface, rather than an SEO afterthought, will be the ones that work. The pattern catalogue for that world is in [web data and scraping for agents](/resources/web-data-for-agents) and [agentic browsers](/resources/agentic-browsers).\n\n## The cluster: every sub-topic in depth\n\nThis pillar is deliberately a map. Each article below owns one decision and goes deeper than a section here can:\n\n**Discovery and formats**\n\n- [llms.txt vs robots.txt vs sitemap.xml](/articles/llms-txt-vs-robots-txt-vs-sitemap) — three files, three jobs, one common confusion.\n- [How to write an llms.txt file](/articles/how-to-write-an-llms-txt-file) — format, template, validation, maintenance.\n- [Serving Markdown variants to AI agents](/articles/serving-markdown-variants-to-ai-agents) — the cheapest token-cost win available.\n- [Structured data for AI agents](/articles/structured-data-for-ai-agents) — which schema.org types earn their keep.\n- [JSON API design for agents](/articles/json-api-design-for-agents) — endpoints agents prefer over scraping.\n\n**Visibility and control**\n\n- [How AI search engines choose sources](/articles/how-ai-search-engines-choose-sources) — what appears to drive citation.\n- [Should you block AI crawlers?](/articles/should-you-block-ai-crawlers) — a decision framework by business model.\n- [Why AI agents can't read your site](/articles/why-ai-agents-cant-read-your-site) — the twelve recurring failure modes.\n- [Measuring AI agent traffic](/articles/measuring-ai-agent-traffic) — server-side telemetry that answers real questions.\n\n**Money and rights**\n\n- [What to charge AI crawlers](/articles/what-to-charge-ai-crawlers) — pricing models and the arithmetic behind them.\n- [Implementing an HTTP 402 paywall](/articles/http-402-paywall-implementation) — a machine-payable gate, end to end.\n- [Licensing content for AI training](/articles/licensing-content-for-ai-training) — RSL, terms, provenance.\n- [Running an MCP server as a distribution channel](/articles/mcp-server-as-distribution-channel) — content as tool calls.\n\n## Sources and further reading\n\nEvery factual claim above is carried, with its primary source, by a reference resource in this site's corpus:\n\n- Crawler tokens, compliance status and the WAF layer: [/resources/ai-crawler-policy](/resources/ai-crawler-policy)\n- llms.txt format and provenance: [/resources/llms-txt-explained](/resources/llms-txt-explained)\n- Content Signals and IETF AIPREF: [/resources/content-signals-explained](/resources/content-signals-explained)\n- 402, Pay Per Crawl, x402, ACP/AP2, RSL: [/resources/agentic-payment-protocols](/resources/agentic-payment-protocols)\n- The 402 wire contract: [/resources/paying-for-access-402](/resources/paying-for-access-402)\n- Formats and schema for machine consumers: [/resources/data-formats](/resources/data-formats)\n\nAgents: every article in this cluster has a Markdown variant at `/articles/<slug>.md`, and the whole cluster is indexed as JSON at `/api/articles.json`.",
  "cluster": {
    "id": "agent-ready-web",
    "title": "The agent-ready web",
    "description": "How to make a website readable, citable, controllable and payable for AI agents and AI crawlers — the operator side of the machine-first web.",
    "status": "complete",
    "pillar": {
      "slug": "agent-ready-website",
      "title": "The Agent-Ready Website: A Complete Guide to AI Visibility, Access Control and Monetization",
      "description": "The full operator playbook for making a website work for AI agents and AI crawlers: be fetchable, be readable, be controllable, be payable — with a 30-day implementation plan.",
      "kind": "pillar",
      "order": 0,
      "html": "https://changegamer.ai/articles/agent-ready-website",
      "markdown": "https://changegamer.ai/articles/agent-ready-website.md",
      "json": "https://changegamer.ai/api/articles/agent-ready-website.json"
    },
    "articles": [
      {
        "slug": "llms-txt-vs-robots-txt-vs-sitemap",
        "title": "llms.txt vs robots.txt vs sitemap.xml: Which File Does What",
        "description": "The three root-level files every agent-ready site publishes, what each one is actually for, and why publishing one does not substitute for the others.",
        "kind": "sub",
        "order": 1,
        "html": "https://changegamer.ai/articles/llms-txt-vs-robots-txt-vs-sitemap",
        "markdown": "https://changegamer.ai/articles/llms-txt-vs-robots-txt-vs-sitemap.md",
        "json": "https://changegamer.ai/api/articles/llms-txt-vs-robots-txt-vs-sitemap.json"
      },
      {
        "slug": "how-to-write-an-llms-txt-file",
        "title": "How to Write an llms.txt File (Format, Template, and Maintenance)",
        "description": "A step-by-step guide to writing a useful llms.txt: the exact format, a copy-paste template, what to put under ## Optional, how to validate it, and how to keep it from rotting.",
        "kind": "sub",
        "order": 2,
        "html": "https://changegamer.ai/articles/how-to-write-an-llms-txt-file",
        "markdown": "https://changegamer.ai/articles/how-to-write-an-llms-txt-file.md",
        "json": "https://changegamer.ai/api/articles/how-to-write-an-llms-txt-file.json"
      },
      {
        "slug": "serving-markdown-variants-to-ai-agents",
        "title": "Serving Markdown Variants to AI Agents: The Cheapest Win in AI Visibility",
        "description": "How to publish a .md twin of every page — URL patterns, content negotiation, discovery headers, generation pitfalls — and why it cuts what an agent pays to read you.",
        "kind": "sub",
        "order": 3,
        "html": "https://changegamer.ai/articles/serving-markdown-variants-to-ai-agents",
        "markdown": "https://changegamer.ai/articles/serving-markdown-variants-to-ai-agents.md",
        "json": "https://changegamer.ai/api/articles/serving-markdown-variants-to-ai-agents.json"
      },
      {
        "slug": "how-ai-search-engines-choose-sources",
        "title": "How AI Search Engines Choose Sources (And What You Can Actually Influence)",
        "description": "What is known, what is claimed and what is speculation about how ChatGPT, Perplexity and AI Overviews pick the pages they cite — and the short list of things a site owner can actually control.",
        "kind": "sub",
        "order": 4,
        "html": "https://changegamer.ai/articles/how-ai-search-engines-choose-sources",
        "markdown": "https://changegamer.ai/articles/how-ai-search-engines-choose-sources.md",
        "json": "https://changegamer.ai/api/articles/how-ai-search-engines-choose-sources.json"
      },
      {
        "slug": "should-you-block-ai-crawlers",
        "title": "Should You Block AI Crawlers? A Decision Framework by Business Model",
        "description": "Blocking AI crawlers is four separate decisions, not one. A framework that maps each crawler class to what it costs and earns you, by business model, with the exact robots.txt for each answer.",
        "kind": "sub",
        "order": 5,
        "html": "https://changegamer.ai/articles/should-you-block-ai-crawlers",
        "markdown": "https://changegamer.ai/articles/should-you-block-ai-crawlers.md",
        "json": "https://changegamer.ai/api/articles/should-you-block-ai-crawlers.json"
      },
      {
        "slug": "what-to-charge-ai-crawlers",
        "title": "What to Charge AI Crawlers: Pricing Models for Machine Buyers",
        "description": "Per-crawl, per-resource, corpus licence or subscription key — the four ways to price AI access, the arithmetic behind each, and why pricing before you have demand data is the standard mistake.",
        "kind": "sub",
        "order": 6,
        "html": "https://changegamer.ai/articles/what-to-charge-ai-crawlers",
        "markdown": "https://changegamer.ai/articles/what-to-charge-ai-crawlers.md",
        "json": "https://changegamer.ai/api/articles/what-to-charge-ai-crawlers.json"
      },
      {
        "slug": "http-402-paywall-implementation",
        "title": "Implementing an HTTP 402 Paywall an Agent Can Actually Pay",
        "description": "A working implementation guide for machine-payable content: the 402 response body, Link headers, key issuance and validation, caching rules, and the mistakes that make a 402 gate unpayable.",
        "kind": "sub",
        "order": 7,
        "html": "https://changegamer.ai/articles/http-402-paywall-implementation",
        "markdown": "https://changegamer.ai/articles/http-402-paywall-implementation.md",
        "json": "https://changegamer.ai/api/articles/http-402-paywall-implementation.json"
      },
      {
        "slug": "structured-data-for-ai-agents",
        "title": "Structured Data for AI Agents: Which Schema.org Types Earn Their Keep",
        "description": "Most schema.org markup is invisible to machine readers. The types that are worth the effort for AI agents, how to emit them without drift, and what to build instead of more markup.",
        "kind": "sub",
        "order": 8,
        "html": "https://changegamer.ai/articles/structured-data-for-ai-agents",
        "markdown": "https://changegamer.ai/articles/structured-data-for-ai-agents.md",
        "json": "https://changegamer.ai/api/articles/structured-data-for-ai-agents.json"
      },
      {
        "slug": "json-api-design-for-agents",
        "title": "JSON API Design for AI Agents: Endpoints They Prefer Over Scraping",
        "description": "How to publish read-only JSON endpoints that agents choose over scraping your HTML: discovery index, stable shapes, freshness signals, bulk exports, and errors a machine can act on.",
        "kind": "sub",
        "order": 9,
        "html": "https://changegamer.ai/articles/json-api-design-for-agents",
        "markdown": "https://changegamer.ai/articles/json-api-design-for-agents.md",
        "json": "https://changegamer.ai/api/articles/json-api-design-for-agents.json"
      },
      {
        "slug": "measuring-ai-agent-traffic",
        "title": "Measuring AI Agent Traffic: Server-Side Telemetry That Answers Real Questions",
        "description": "Why client-side analytics miss AI agents entirely, the minimum row schema to log, the five queries worth running, and how to tell a real crawler from a spoofed user agent.",
        "kind": "sub",
        "order": 10,
        "html": "https://changegamer.ai/articles/measuring-ai-agent-traffic",
        "markdown": "https://changegamer.ai/articles/measuring-ai-agent-traffic.md",
        "json": "https://changegamer.ai/api/articles/measuring-ai-agent-traffic.json"
      },
      {
        "slug": "licensing-content-for-ai-training",
        "title": "Licensing Content for AI Training: RSL, Terms, and Provenance",
        "description": "How to publish machine-readable licence terms for AI use — what RSL is, what it does and does not do, how it differs from robots.txt and Content Signals, and where provenance standards fit.",
        "kind": "sub",
        "order": 11,
        "html": "https://changegamer.ai/articles/licensing-content-for-ai-training",
        "markdown": "https://changegamer.ai/articles/licensing-content-for-ai-training.md",
        "json": "https://changegamer.ai/api/articles/licensing-content-for-ai-training.json"
      },
      {
        "slug": "mcp-server-as-distribution-channel",
        "title": "Running an MCP Server as a Distribution Channel for Your Content",
        "description": "Why a content site should expose an MCP server, which tools to ship, how discovery and authentication work, how to gate paid tools, and the honest limits of the channel.",
        "kind": "sub",
        "order": 12,
        "html": "https://changegamer.ai/articles/mcp-server-as-distribution-channel",
        "markdown": "https://changegamer.ai/articles/mcp-server-as-distribution-channel.md",
        "json": "https://changegamer.ai/api/articles/mcp-server-as-distribution-channel.json"
      },
      {
        "slug": "why-ai-agents-cant-read-your-site",
        "title": "Why AI Agents Can't Read Your Site: Twelve Failure Modes and How to Find Them",
        "description": "A diagnostic catalogue of the twelve reasons AI agents and crawlers fail on real sites — from silent WAF blocks to JS-only rendering — each with the command that detects it and the fix.",
        "kind": "sub",
        "order": 13,
        "html": "https://changegamer.ai/articles/why-ai-agents-cant-read-your-site",
        "markdown": "https://changegamer.ai/articles/why-ai-agents-cant-read-your-site.md",
        "json": "https://changegamer.ai/api/articles/why-ai-agents-cant-read-your-site.json"
      }
    ]
  },
  "navigation": {
    "pillar": null,
    "previous": null,
    "next": null
  },
  "resources": [
    {
      "slug": "llms-txt-explained",
      "html": "https://changegamer.ai/resources/llms-txt-explained",
      "markdown": "https://changegamer.ai/resources/llms-txt-explained.md",
      "json": "https://changegamer.ai/api/resources/llms-txt-explained.json"
    },
    {
      "slug": "ai-crawler-policy",
      "html": "https://changegamer.ai/resources/ai-crawler-policy",
      "markdown": "https://changegamer.ai/resources/ai-crawler-policy.md",
      "json": "https://changegamer.ai/api/resources/ai-crawler-policy.json"
    },
    {
      "slug": "content-signals-explained",
      "html": "https://changegamer.ai/resources/content-signals-explained",
      "markdown": "https://changegamer.ai/resources/content-signals-explained.md",
      "json": "https://changegamer.ai/api/resources/content-signals-explained.json"
    },
    {
      "slug": "agentic-payment-protocols",
      "html": "https://changegamer.ai/resources/agentic-payment-protocols",
      "markdown": "https://changegamer.ai/resources/agentic-payment-protocols.md",
      "json": "https://changegamer.ai/api/resources/agentic-payment-protocols.json"
    },
    {
      "slug": "paying-for-access-402",
      "html": "https://changegamer.ai/resources/paying-for-access-402",
      "markdown": "https://changegamer.ai/resources/paying-for-access-402.md",
      "json": "https://changegamer.ai/api/resources/paying-for-access-402.json"
    },
    {
      "slug": "data-formats",
      "html": "https://changegamer.ai/resources/data-formats",
      "markdown": "https://changegamer.ai/resources/data-formats.md",
      "json": "https://changegamer.ai/api/resources/data-formats.json"
    },
    {
      "slug": "json-api",
      "html": "https://changegamer.ai/resources/json-api",
      "markdown": "https://changegamer.ai/resources/json-api.md",
      "json": "https://changegamer.ai/api/resources/json-api.json"
    },
    {
      "slug": "agents-md-explained",
      "html": "https://changegamer.ai/resources/agents-md-explained",
      "markdown": "https://changegamer.ai/resources/agents-md-explained.md",
      "json": "https://changegamer.ai/api/resources/agents-md-explained.json"
    },
    {
      "slug": "mcp-server-discovery",
      "html": "https://changegamer.ai/resources/mcp-server-discovery",
      "markdown": "https://changegamer.ai/resources/mcp-server-discovery.md",
      "json": "https://changegamer.ai/api/resources/mcp-server-discovery.json"
    },
    {
      "slug": "building-mcp-servers",
      "html": "https://changegamer.ai/resources/building-mcp-servers",
      "markdown": "https://changegamer.ai/resources/building-mcp-servers.md",
      "json": "https://changegamer.ai/api/resources/building-mcp-servers.json"
    },
    {
      "slug": "web-data-for-agents",
      "html": "https://changegamer.ai/resources/web-data-for-agents",
      "markdown": "https://changegamer.ai/resources/web-data-for-agents.md",
      "json": "https://changegamer.ai/api/resources/web-data-for-agents.json"
    },
    {
      "slug": "handling-rate-limits-and-retries",
      "html": "https://changegamer.ai/resources/handling-rate-limits-and-retries",
      "markdown": "https://changegamer.ai/resources/handling-rate-limits-and-retries.md",
      "json": "https://changegamer.ai/api/resources/handling-rate-limits-and-retries.json"
    },
    {
      "slug": "agentic-browsers",
      "html": "https://changegamer.ai/resources/agentic-browsers",
      "markdown": "https://changegamer.ai/resources/agentic-browsers.md",
      "json": "https://changegamer.ai/api/resources/agentic-browsers.json"
    },
    {
      "slug": "nlweb-explained",
      "html": "https://changegamer.ai/resources/nlweb-explained",
      "markdown": "https://changegamer.ai/resources/nlweb-explained.md",
      "json": "https://changegamer.ai/api/resources/nlweb-explained.json"
    },
    {
      "slug": "c2pa-content-credentials",
      "html": "https://changegamer.ai/resources/c2pa-content-credentials",
      "markdown": "https://changegamer.ai/resources/c2pa-content-credentials.md",
      "json": "https://changegamer.ai/api/resources/c2pa-content-credentials.json"
    },
    {
      "slug": "agent-control-specification",
      "html": "https://changegamer.ai/resources/agent-control-specification",
      "markdown": "https://changegamer.ai/resources/agent-control-specification.md",
      "json": "https://changegamer.ai/api/resources/agent-control-specification.json"
    }
  ]
}