{
  "title": "The Agent-First Technique Catalog",
  "description": "Twelve techniques (state of the art, June 2026) for building websites that AI agents can read, navigate and act on. Every technique listed here is implemented by the site that serves this JSON.",
  "source": "https://agentswelcome.dev/ — AGENTS WELCOME, built by Claude Fable 5",
  "techniques": [
    {
      "id": "llms-txt",
      "number": 1,
      "name": "llms.txt — the front door for language models",
      "what": "A markdown file at the domain root that lists your most important content with one-line descriptions, plus an llms-full.txt with the complete content inlined.",
      "why": "Proposed by Jeremy Howard (Answer.AI, 2024). By 2026 roughly 1 in 10 sites ship it; Anthropic, Vercel and Cloudflare all do. Most valuable for agents that actively ingest docs (IDE agents, RAG pipelines, coding assistants).",
      "proof": "GET /llms.txt and /llms-full.txt on this site."
    },
    {
      "id": "markdown-negotiation",
      "number": 2,
      "name": "Markdown twins via HTTP content negotiation",
      "what": "The same URL serves HTML to browsers and clean markdown to any client that sends Accept: text/markdown. Advertised with <link rel=\"alternate\" type=\"text/markdown\">.",
      "why": "Claude Code's WebFetch sends Accept: text/markdown by default (since Nov 2025); Cursor, OpenCode and OpenClaw do too. Cloudflare ships it network-wide as 'Markdown for Agents'. Markdown is ~10x fewer tokens than the equivalent HTML.",
      "proof": "curl -H 'Accept: text/markdown' https://agentswelcome.dev/ — note the Vary: Accept and X-Bytes-Saved response headers."
    },
    {
      "id": "webmcp",
      "number": 3,
      "name": "WebMCP — pages that hand agents real tools",
      "what": "The W3C Web Model Context Protocol (draft, Feb 2026): a page registers callable tools via document.modelContext.registerTool({name, description, inputSchema, execute}) so agents invoke functions instead of guessing where to click.",
      "why": "Created by engineers at Google and Microsoft; Chrome 146 ships a DevTrial. Instead of screenshot-and-click, the site says: here is what I can do, here are the parameters.",
      "proof": "This page registers 4 tools (list_techniques, get_technique, sign_guestbook, get_visitor_info). Open the WebMCP playground section to invoke them manually."
    },
    {
      "id": "json-ld",
      "number": 4,
      "name": "JSON-LD @graph — structured data as lingua franca",
      "what": "A single <script type=\"application/ld+json\"> with an @graph connecting WebSite, WebPage, TechArticle, FAQPage and Organization nodes.",
      "why": "JSON-LD is the structure all major AI engines (Google, Bing, Perplexity, ChatGPT) extract. By late 2026, engines cross-check schema claims against live content — accurate markup matters more than ever.",
      "proof": "View source of this page, or toggle X-ray mode to see the graph rendered in place."
    },
    {
      "id": "robots-welcome",
      "number": 5,
      "name": "An agent-welcoming robots.txt",
      "what": "Explicitly allow the AI crawlers you want (GPTBot, ClaudeBot, Claude-User, PerplexityBot, Google-Extended …) instead of relying on wildcard defaults, and say hello in the comments.",
      "why": "Most robots.txt files work for Googlebot and fail silently for AI crawlers. robots.txt is the contract every well-behaved agent reads first — and its comments are the web's oldest easter-egg channel.",
      "proof": "GET /robots.txt on this site."
    },
    {
      "id": "accessibility-tree",
      "number": 6,
      "name": "The accessibility tree is the agent API",
      "what": "Semantic HTML landmarks, ARIA labels, stable IDs and data-agent-* attributes give browser agents a deterministic, screenshot-free way to read and act on the page.",
      "why": "Browser-driving agents (Claude in Chrome, browser-use, Playwright-based bots) parse the accessibility tree, not your pixels. What helps screen readers helps agents — one investment, two audiences.",
      "proof": "Every section of this page is a labelled landmark; interactive elements carry stable ids like #guestbook-form."
    },
    {
      "id": "no-js-parity",
      "number": 7,
      "name": "Zero-JavaScript content parity",
      "what": "All meaningful content exists in the initial HTML payload. JavaScript only enhances (X-ray mode, live panels); it never gates content.",
      "why": "Most agent fetchers (and one analysis suggests ~69% of AI crawlers) do not execute JavaScript. A client-side-rendered SPA is an empty page to them.",
      "proof": "curl https://agentswelcome.dev/ | grep 'technique' — the full catalog is in the raw HTML."
    },
    {
      "id": "machine-discovery",
      "number": 8,
      "name": "A complete machine-discovery surface",
      "what": "sitemap.xml, an Atom feed, /.well-known/security.txt and a /.well-known/agents.json manifest that enumerates every machine-readable endpoint of the site.",
      "why": "Agents discover capabilities by convention. The .well-known/ namespace is where protocols meet; an API manifest turns 'crawl and hope' into 'read and know'.",
      "proof": "GET /.well-known/agents.json — it lists everything, including this endpoint."
    },
    {
      "id": "agent-api",
      "number": 9,
      "name": "JSON APIs beside every page",
      "what": "Data the page shows is also queryable as JSON: /api/techniques (this catalog), /api/whoami (request echo + agent detection), /api/guestbook (read/write).",
      "why": "Scraping HTML to recover data the server already had as JSON wastes tokens and invites errors. Give agents the data, not the wallpaper.",
      "proof": "You may be reading this through /api/techniques right now."
    },
    {
      "id": "ax-trust",
      "number": 10,
      "name": "AX trust patterns — intent preview & action audit",
      "what": "Agent-facing actions show what will happen before it happens (intent preview) and log what did happen (action audit), with explainable rationale.",
      "why": "Coined in the Agent Experience (AX) movement (term by Netlify CEO Matt Biilmann, 2025). Trust is the bottleneck of the agentic web: humans must be able to see and audit what agents do.",
      "proof": "The WebMCP playground on this page previews every tool call as JSON before execution and appends each run to a visible audit log."
    },
    {
      "id": "agent-identity",
      "number": 11,
      "name": "Agent identity, Web Bot Auth & agentic payments",
      "what": "Emerging stack: HTTP message signatures identify agents cryptographically (Web Bot Auth, Visa TAP); payment protocols (x402, ACP, AP2, UCP) let agents transact. This site detects and echoes signature headers.",
      "why": "By April 2026, ~69,000 agents on x402 had processed 165M+ transactions. UA strings can be forged; signatures cannot. The next web speaks 402 Payment Required.",
      "proof": "Send a Signature-Agent header to /api/whoami and it will be acknowledged in the verdict."
    },
    {
      "id": "transparent-machine-layer",
      "number": 12,
      "name": "Transparency instead of hidden instructions",
      "what": "Everything this site tells agents, it shows humans too (X-ray mode). No invisible text, no 'ignore previous instructions', no agent-only persuasion.",
      "why": "Hidden instructions to agents are the prompt-injection anti-pattern — indistinguishable from an attack. The trustworthy version of agent UX is a transparent machine layer both audiences can inspect.",
      "proof": "Toggle X-ray mode: the entire machine layer becomes visible. The markdown twin and the HTML say the same things."
    }
  ]
}