{
 "name": "Platform scores",
 "edition": "2026-11-04",
 "cite": "Agent Ready HTML. Platform scores. Edition 2026-11-04. https://agentreadyhtml.com/platforms/",
 "source": "https://agentreadyhtml.com/platforms/",
 "scale": "Scale: 2 = on by default, 1 = available with setup, a plan, a plugin or an extra service, 0 = not offered or not documented, \"n/a\" = does not apply. Evidence is a test build where a platform can be built locally without an account (dated, with the version), and the documentation page cited otherwise.",
 "basis": "AgentReady read-layer requirements: MUST answer in initial HTML, MUST real status codes, SHOULD link llms.txt, JSON-LD and OpenAPI, SHOULD fence and language-tag code.",
 "rubric_source": "https://ora.ai/blog/agentready-launch",
 "keys": [
  {
   "id": "initial_html_by_default",
   "label": "Content in the initial HTML",
   "rule": "2 when the default test build puts the H1 and body text in the HTML of the home page; 1 when it needs a setting; 0 when the content arrives only after JavaScript."
  },
  {
   "id": "real_status_codes",
   "label": "Real status codes",
   "rule": "2 when the default build ships a 404.html or a production server of its own answers a made-up path with 404 directly (no redirect first); a preview or development server does not count; 1 when a page, permalink setting or host rule is needed first (Astro, whose build writes no 404.html; WordPress, whose default permalinks redirect to the home page); 0 for a soft 404."
  },
  {
   "id": "llms_txt_generation",
   "label": "llms.txt generation",
   "rule": "2 when the default build writes the file; 1 when one setting, plan or extra service writes it; 0 when the platform writes none and the file has to be written by hand or by a plugin that is not part of it."
  },
  {
   "id": "llms_txt_linking",
   "label": "llms.txt linking",
   "rule": "2 when the default build links the file from pages or a header; 1 with setup; 0 when nothing links it."
  },
  {
   "id": "markdown_negotiation",
   "label": "Markdown on request",
   "rule": "2 when Accept: text/markdown returns markdown by default; 1 when the platform's own server runtime can answer it once you add code or a plugin (Next.js, Nuxt, WordPress); 0 when the default output is static files and the negotiation has to live in the host or an edge rule (Astro, Docusaurus)."
  },
  {
   "id": "jsonld_output",
   "label": "JSON-LD output",
   "rule": "2 when JSON-LD is emitted by default; 1 when it is added with a script element, a head setting or a plugin; 0 when it cannot be added."
  },
  {
   "id": "openapi_exposure",
   "label": "OpenAPI exposure",
   "rule": "2 when the platform publishes and links an OpenAPI file by default; 1 when a first-party feature does with setup; 0 when it offers none; n/a when the platform has no API reference role."
  },
  {
   "id": "fenced_code",
   "label": "Fenced, tagged code",
   "rule": "2 when the default content pipeline emits a language-tagged pre or code element from a fence; 1 when the tag needs a hand-written class, a plugin or an extra pipeline; 0 when it cannot be tagged."
  },
  {
   "id": "manual_work_needed",
   "label": "Work left to the developer",
   "rule": ""
  }
 ],
 "platforms": [
  {
   "id": "mintlify",
   "name": "Mintlify",
   "type": "docs-platform",
   "type_label": "Docs platform",
   "operator": "Mintlify",
   "one_line": "Hosted docs platform that generates llms.txt, llms-full.txt and a markdown twin of every page, answers Accept: text/markdown, and publishes an agent score for docs.",
   "page": "https://agentreadyhtml.com/platforms/mintlify/",
   "total": {
    "score": 15,
    "of": 16
   },
   "test_built": false,
   "scores": {
    "initial_html_by_default": {
     "value": 2,
     "evidence": "Hosted pages are served as HTML with the content present; mintlify.com returned its H1 to a plain fetch. Observed on the vendor's own site with a plain fetch on 2026-11-04; the vendor's own site may not use default settings.",
     "source_url": "https://www.mintlify.com/docs/ai/markdown-export",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 2,
     "evidence": "Documented 404 status for missing markdown pages; a made-up path on mintlify.com returned 404. Not test-built: hosting needs a Mintlify account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.mintlify.com/docs/ai/markdown-export",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 2,
     "evidence": "llms.txt and llms-full.txt generated by default for every project. Not test-built: hosting needs a Mintlify account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.mintlify.com/docs/ai/llmstxt",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 2,
     "evidence": "Advertised through an HTTP Link header and X-Llms-Txt on every response. Not test-built: hosting needs a Mintlify account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.mintlify.com/docs/ai/llmstxt",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 2,
     "evidence": "Accept: text/markdown and Accept: text/plain both return markdown on the page URL. Not test-built: hosting needs a Mintlify account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.mintlify.com/docs/ai/markdown-export",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 1,
     "evidence": "JSON-LD output is not described on the AI pages read; treated as configuration-dependent until a test build confirms it. Not test-built: hosting needs a Mintlify account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.mintlify.com/docs/ai/markdown-export",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": 2,
     "evidence": "llms.txt lists links to OpenAPI and AsyncAPI specs when the docs include them. Not test-built: hosting needs a Mintlify account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.mintlify.com/docs/ai/llmstxt",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": 2,
     "evidence": "Markdown export renders code as markdown; MDX code blocks carry a language. Not test-built: hosting needs a Mintlify account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.mintlify.com/docs/ai/markdown-export",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Low: write a description in each page frontmatter so llms.txt entries carry one.",
     "evidence": "Pages without a description field appear in llms.txt without one. Not test-built: hosting needs a Mintlify account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.mintlify.com/docs/ai/llmstxt",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "gitbook",
   "name": "GitBook",
   "type": "docs-platform",
   "type_label": "Docs platform",
   "operator": "GitBook",
   "one_line": "Hosted docs platform that publishes .md pages, llms.txt, llms-full.txt and an MCP server for every published docs site.",
   "page": "https://agentreadyhtml.com/platforms/gitbook/",
   "total": {
    "score": 11,
    "of": 16
   },
   "test_built": false,
   "scores": {
    "initial_html_by_default": {
     "value": 2,
     "evidence": "Published pages are served with content in the HTML; the .md twin exists for every page. Not test-built: publishing needs a GitBook account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://gitbook.com/docs/publishing-documentation/llm-ready-docs",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 2,
     "evidence": "A made-up path on www.gitbook.com returned 404. Observed on the vendor's own site with a plain fetch on 2026-11-04; the vendor's own site may not use default settings.",
     "source_url": "https://www.gitbook.com/agent-ready-html-missing-path-check",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 2,
     "evidence": "llms.txt and llms-full.txt published automatically. Not test-built: publishing needs a GitBook account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://gitbook.com/docs/publishing-documentation/llm-ready-docs",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 1,
     "evidence": "The docs page links the files; a home page or header link by default is not documented. Not test-built: publishing needs a GitBook account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://gitbook.com/docs/publishing-documentation/llm-ready-docs",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 1,
     "evidence": "The .md suffix is documented; Accept-header negotiation is not documented on the page read, although gitbook.com answered it. Not test-built: publishing needs a GitBook account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://gitbook.com/docs/publishing-documentation/llm-ready-docs",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 0,
     "evidence": "Not documented on the AI pages read. Not test-built: publishing needs a GitBook account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://gitbook.com/docs/publishing-documentation/llm-ready-docs",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": 1,
     "evidence": "OpenAPI blocks are supported in GitBook docs; exposure in llms.txt is not documented on the page read. Not test-built: publishing needs a GitBook account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://gitbook.com/docs/publishing-documentation/llm-ready-docs",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": 2,
     "evidence": "Markdown export of pages keeps code blocks as markdown. Not test-built: publishing needs a GitBook account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://gitbook.com/docs/publishing-documentation/llm-ready-docs",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Low: nothing to switch on; check hidden pages before publishing, since they appear in llms-full.txt.",
     "evidence": "Hidden pages are included in llms-full.txt. Not test-built: publishing needs a GitBook account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://gitbook.com/docs/publishing-documentation/llm-ready-docs",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "readme",
   "name": "ReadMe",
   "type": "docs-platform",
   "type_label": "Docs platform",
   "operator": "ReadMe",
   "one_line": "API docs platform with llms.txt on by default, markdown pages with agentTools front matter, markdown 404s, and an AI Discoverability panel graded against the AFDocs spec.",
   "page": "https://agentreadyhtml.com/platforms/readme/",
   "total": {
    "score": 13,
    "of": 16
   },
   "test_built": false,
   "scores": {
    "initial_html_by_default": {
     "value": 2,
     "evidence": "Hub pages render content server-side; markdown versions exist for every page. Not test-built: a ReadMe project needs an account and a paid plan for the AI features. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.readme.com/main/docs/ai-discoverability",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 2,
     "evidence": "Markdown 404s return a 404 with recovery links. Not test-built: a ReadMe project needs an account and a paid plan for the AI features. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.readme.com/main/docs/llmstxt",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 2,
     "evidence": "On by default for all projects. Not test-built: a ReadMe project needs an account and a paid plan for the AI features. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.readme.com/main/docs/llmstxt",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 2,
     "evidence": "Markdown pages carry agentTools front matter pointing at llms.txt, and link headers are a documented setting. Not test-built: a ReadMe project needs an account and a paid plan for the AI features. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.readme.com/main/docs/ai-discoverability",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 1,
     "evidence": "Markdown for Agents is a documented setting under AI Discoverability; defaults vary by setting. Not test-built: a ReadMe project needs an account and a paid plan for the AI features. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.readme.com/main/docs/ai-discoverability",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 0,
     "evidence": "Not documented on the pages read. Not test-built: a ReadMe project needs an account and a paid plan for the AI features. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.readme.com/main/docs/ai-discoverability",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": 2,
     "evidence": "Markdown for API Reference intro pages includes servers and security schemes when the OpenAPI definition is visible. Not test-built: a ReadMe project needs an account and a paid plan for the AI features. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.readme.com/main/changelog/upgraded-llms-txt",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": 2,
     "evidence": "Markdown output keeps code samples as fenced blocks. Not test-built: a ReadMe project needs an account and a paid plan for the AI features. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.readme.com/main/changelog/upgraded-llms-txt",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Low: review the AI Discoverability toggles; a custom llms.txt stops automatic updates.",
     "evidence": "Custom files stop auto-updates. Not test-built: a ReadMe project needs an account and a paid plan for the AI features. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.readme.com/main/docs/llmstxt",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "docusaurus",
   "name": "Docusaurus",
   "type": "framework",
   "type_label": "Framework",
   "operator": "Meta Open Source",
   "one_line": "Open-source static site generator for docs: HTML for every route at build time, with llms.txt only through community plugins.",
   "page": "https://agentreadyhtml.com/platforms/docusaurus/",
   "total": {
    "score": 7,
    "of": 16
   },
   "test_built": true,
   "scores": {
    "initial_html_by_default": {
     "value": 2,
     "evidence": "Test build, Docusaurus 3.10.2, 2026-11-04: the classic template prerendered the home page with an H1 and the docs pages with their text.",
     "source_url": "https://docusaurus.io/docs/advanced/ssg",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 2,
     "evidence": "Test build: build/ held 404.html and docusaurus serve answered a made-up path with 404 directly.",
     "source_url": "https://docusaurus.io/docs/advanced/ssg",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 0,
     "evidence": "Test build: no llms.txt or robots.txt in build/ (sitemap.xml was written). Docusaurus has no first-party llms.txt feature; community plugins exist and none was installed.",
     "source_url": "https://docusaurus.io/docs/seo",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 0,
     "evidence": "Test build: nothing links an llms.txt and none exists.",
     "source_url": "https://docusaurus.io/docs/seo",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 0,
     "evidence": "Test build: Accept: text/markdown on / returned text/html and /index.md returned 404. The output is static files, so negotiation has to live in the host or an edge rule, the same need Astro has.",
     "source_url": "https://docusaurus.io/docs/advanced/ssg",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 1,
     "evidence": "Test build: no JSON-LD emitted. A script element can be added through the config head tags.",
     "source_url": "https://docusaurus.io/docs/seo",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": 0,
     "evidence": "Test build: no OpenAPI file or link; Docusaurus has no first-party feature for one.",
     "source_url": "https://docusaurus.io/docs/advanced/ssg",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": 2,
     "evidence": "Test build: a fence in a docs page became a pre element with a language class (language-md) from Prism, with no setup.",
     "source_url": "https://docusaurus.io/docs/markdown-features/code-blocks",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Medium: write or install an llms.txt plugin, link it in the footer, and add the host rule for Accept; the 404 page is already built.",
     "evidence": "Based on the test build above and the documentation pages cited for each key.",
     "source_url": "https://docusaurus.io/docs/seo",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "fern",
   "name": "Fern",
   "type": "docs-platform",
   "type_label": "Docs platform",
   "operator": "Fern",
   "one_line": "API docs platform that generates llms.txt per navigation node, serves .md and .mdx twins and Accept: text/markdown, and returns agent-oriented 404s.",
   "page": "https://agentreadyhtml.com/platforms/fern/",
   "total": {
    "score": 14,
    "of": 16
   },
   "test_built": false,
   "scores": {
    "initial_html_by_default": {
     "value": 2,
     "evidence": "Sites are prebuilt as static pages since 2026-10-30. Not test-built: publishing docs needs a Fern account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://buildwithfern.com/learn/docs/changelog",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 2,
     "evidence": "Missing .md URLs return agent 404 responses with suggestions. Not test-built: publishing docs needs a Fern account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://buildwithfern.com/learn/docs/changelog",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 2,
     "evidence": "Automatic at root and per navigation node. Not test-built: publishing docs needs a Fern account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://buildwithfern.com/learn/docs/ai-features/llms-txt",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 2,
     "evidence": "A per-page directive prepended to markdown points agents to .md URLs and llms.txt. Not test-built: publishing docs needs a Fern account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://buildwithfern.com/learn/docs/ai-features/markdown",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 2,
     "evidence": "Accept: text/markdown documented. Not test-built: publishing docs needs a Fern account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://buildwithfern.com/learn/docs/ai-features/markdown",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 0,
     "evidence": "Not documented on the pages read. Not test-built: publishing docs needs a Fern account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://buildwithfern.com/learn/docs/ai-features/markdown",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": 2,
     "evidence": "llms.txt links the standalone OpenAPI spec. Not test-built: publishing docs needs a Fern account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://buildwithfern.com/learn/docs/ai-features/llms-txt",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": 2,
     "evidence": "Markdown output keeps code; SDK examples can be filtered by language. Not test-built: publishing docs needs a Fern account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://buildwithfern.com/learn/docs/changelog",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Low: write frontmatter descriptions; use llms-only and llms-ignore controls where needed.",
     "evidence": "Descriptions come from frontmatter. Not test-built: publishing docs needs a Fern account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://buildwithfern.com/learn/docs/ai-features/llms-txt",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "redocly",
   "name": "Redocly",
   "type": "docs-platform",
   "type_label": "Docs platform",
   "operator": "Redocly",
   "one_line": "API docs platform (Realm) that creates an llms.txt with a clean markdown version of each page, plus an MCP server for docs and API descriptions.",
   "page": "https://agentreadyhtml.com/platforms/redocly/",
   "total": {
    "score": 12,
    "of": 16
   },
   "test_built": true,
   "scores": {
    "initial_html_by_default": {
     "value": 2,
     "evidence": "Pages render content server-side; markdown copies exist. Not test-built: the hosted Redocly product needs an account (the open CLI was built, see below). Score from the documentation page cited, read 2026-11-04. Redocly CLI 2.75.0 build-docs (open source, tested 2026-11-05) wrote one 254,744-byte (249 KiB) HTML file with the title as a prerendered H1 and no llms.txt, robots.txt or JSON-LD. Redocly CLI 2.75.0 build-docs (open source, tested 2026-11-05) wrote one 254,744-byte (249 KiB) HTML file with the title as a prerendered H1 and no llms.txt, robots.txt or JSON-LD.",
     "source_url": "https://redocly.com/docs/realm/ai-ready",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 2,
     "evidence": "A made-up path on redocly.com returned 404. Observed on the vendor's own site with a plain fetch on 2026-11-04; the vendor's own site may not use default settings.",
     "source_url": "https://redocly.com/agent-ready-html-missing-path-check",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 2,
     "evidence": "Created for every site. Not test-built: the hosted Redocly product needs an account (the open CLI was built, see below). Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://redocly.com/docs/realm/ai-ready",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 1,
     "evidence": "Linking from pages is not documented on the page read. Not test-built: the hosted Redocly product needs an account (the open CLI was built, see below). Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://redocly.com/docs/realm/ai-ready",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 1,
     "evidence": "Markdown copies documented; negotiation observed on redocly.com but not documented on the page read. Not test-built: the hosted Redocly product needs an account (the open CLI was built, see below). Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://redocly.com/docs/realm/ai-ready",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 0,
     "evidence": "Not documented on the page read. Not test-built: the hosted Redocly product needs an account (the open CLI was built, see below). Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://redocly.com/docs/realm/ai-ready",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": 2,
     "evidence": "API descriptions are core output and served over MCP. Not test-built: the hosted Redocly product needs an account (the open CLI was built, see below). Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://redocly.com/docs/realm/ai-ready",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": 2,
     "evidence": "Markdown copies keep code blocks. Not test-built: the hosted Redocly product needs an account (the open CLI was built, see below). Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://redocly.com/docs/realm/ai-ready",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Low: configure llms.txt sections under SEO config.",
     "evidence": "Configurable. Not test-built: the hosted Redocly product needs an account (the open CLI was built, see below). Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://redocly.com/docs/realm/ai-ready",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "scalar",
   "name": "Scalar",
   "type": "docs-platform",
   "type_label": "Docs platform",
   "operator": "Scalar",
   "one_line": "API reference and docs platform whose published sites always serve /llms.txt and /llms-full.txt, with links pointing at .md pages and OpenAPI files.",
   "page": "https://agentreadyhtml.com/platforms/scalar/",
   "total": {
    "score": 11,
    "of": 16
   },
   "test_built": false,
   "scores": {
    "initial_html_by_default": {
     "value": 1,
     "evidence": "Docs pages are served as HTML; the API reference component renders in the browser in some embeds. Not test-built: hosted Scalar Docs needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://scalar.com/products/docs/configuration/llms-txt",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 2,
     "evidence": "A made-up path on scalar.com returned 404. Observed on the vendor's own site with a plain fetch on 2026-11-04; the vendor's own site may not use default settings.",
     "source_url": "https://scalar.com/agent-ready-html-missing-path-check",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 2,
     "evidence": "Automatic for every published site. Not test-built: hosted Scalar Docs needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://scalar.com/products/docs/configuration/llms-txt",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 1,
     "evidence": "Files live at the root; a page link is not documented. Not test-built: hosted Scalar Docs needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://scalar.com/products/docs/configuration/llms-txt",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 1,
     "evidence": ".md URLs documented; negotiation observed on scalar.com only. Not test-built: hosted Scalar Docs needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://scalar.com/products/docs/configuration/llms-txt",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 0,
     "evidence": "Not documented. Not test-built: hosted Scalar Docs needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://scalar.com/products/docs/configuration/llms-txt",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": 2,
     "evidence": "llms.txt links the OpenAPI document directly. Not test-built: hosted Scalar Docs needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://scalar.com/products/docs/configuration/llms-txt",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": 2,
     "evidence": "llms-full.txt carries page markdown with code. Not test-built: hosted Scalar Docs needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://scalar.com/products/docs/configuration/llms-txt",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Low on hosted Scalar Docs; medium for self-hosted API references, which need their own llms.txt route.",
     "evidence": "Hosted files are automatic. Not test-built: hosted Scalar Docs needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://scalar.com/products/docs/configuration/llms-txt",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "stoplight",
   "name": "Stoplight",
   "type": "docs-platform",
   "type_label": "Docs platform",
   "operator": "SmartBear",
   "one_line": "API design and docs platform owned by SmartBear; no llms.txt was found on its docs host, and its Elements reference is a React component.",
   "page": "https://agentreadyhtml.com/platforms/stoplight/",
   "total": {
    "score": 6,
    "of": 16
   },
   "test_built": false,
   "scores": {
    "initial_html_by_default": {
     "value": 1,
     "evidence": "Hosted docs depend on configuration; Elements embeds render in the browser. Not test-built: a Stoplight workspace needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://github.com/stoplightio/elements",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 2,
     "evidence": "A made-up path on stoplight.io returned 404. Observed on the vendor's own site with a plain fetch on 2026-11-04; the vendor's own site may not use default settings.",
     "source_url": "https://stoplight.io/agent-ready-html-missing-path-check",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 0,
     "evidence": "No documented generator; none found on docs.stoplight.io. Not test-built: a Stoplight workspace needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.stoplight.io/llms.txt",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 0,
     "evidence": "No file to link. Not test-built: a Stoplight workspace needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.stoplight.io/llms.txt",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 0,
     "evidence": "Not observed and not documented. Not test-built: a Stoplight workspace needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://blog.stoplight.io/smartbear-to-acquire-stoplight-to-deliver-industrys-broadest-portfolio-of-api-development-capabilities",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 0,
     "evidence": "Not documented. Not test-built: a Stoplight workspace needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://github.com/stoplightio/elements",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": 2,
     "evidence": "OpenAPI is the source format of every Stoplight project. Not test-built: a Stoplight workspace needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://github.com/stoplightio/elements",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": 1,
     "evidence": "Code samples are generated in the UI; plain-fetch output not tested. Not test-built: a Stoplight workspace needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://github.com/stoplightio/elements",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "High: write llms.txt by hand, host it yourself, and prerender any embedded Elements reference.",
     "evidence": "No native agent files. Not test-built: a Stoplight workspace needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.stoplight.io/llms.txt",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "webflow",
   "name": "Webflow",
   "type": "site-builder",
   "type_label": "Site builder",
   "operator": "Webflow",
   "one_line": "Visual site builder that serves prerendered HTML, accepts an uploaded llms.txt, and offers HTML-to-markdown for agents on Enterprise through Cloudflare.",
   "page": "https://agentreadyhtml.com/platforms/webflow/",
   "total": {
    "score": 9,
    "of": 14
   },
   "test_built": false,
   "scores": {
    "initial_html_by_default": {
     "value": 2,
     "evidence": "Published Webflow pages are static HTML. Not test-built: a Webflow site needs an account and, for markdown, an Enterprise plan. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://help.webflow.com/hc/en-us/articles/43240104183315-Upload-an-llms-txt-file-to-your-site",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 2,
     "evidence": "A made-up path on webflow.com returned 404. Observed on the vendor's own site with a plain fetch on 2026-11-04; the vendor's own site may not use default settings.",
     "source_url": "https://webflow.com/agent-ready-html-missing-path-check",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 1,
     "evidence": "Upload only, no generator. Not test-built: a Webflow site needs an account and, for markdown, an Enterprise plan. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://help.webflow.com/hc/en-us/articles/43240104183315-Upload-an-llms-txt-file-to-your-site",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 1,
     "evidence": "Owner adds a footer link by hand. Not test-built: a Webflow site needs an account and, for markdown, an Enterprise plan. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://help.webflow.com/hc/en-us/articles/43240104183315-Upload-an-llms-txt-file-to-your-site",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 1,
     "evidence": "Enterprise only, since 2026-04-02. Not test-built: a Webflow site needs an account and, for markdown, an Enterprise plan. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://webflow.com/updates/markdown-for-agents",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 1,
     "evidence": "Custom code in page settings; no generated JSON-LD documented. Not test-built: a Webflow site needs an account and, for markdown, an Enterprise plan. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://help.webflow.com/hc/en-us/articles/43240104183315-Upload-an-llms-txt-file-to-your-site",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": "n/a",
     "evidence": "Marketing site builder. Not test-built: a Webflow site needs an account and, for markdown, an Enterprise plan. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://help.webflow.com/hc/en-us/articles/43240104183315-Upload-an-llms-txt-file-to-your-site",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": 1,
     "evidence": "Code blocks need a rich text embed or custom code. Not test-built: a Webflow site needs an account and, for markdown, an Enterprise plan. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://help.webflow.com/hc/en-us/articles/43240104183315-Upload-an-llms-txt-file-to-your-site",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Medium: write and upload llms.txt, add a footer link, add JSON-LD as custom code; markdown needs Enterprise.",
     "evidence": "Upload only; markdown Enterprise only. Not test-built: a Webflow site needs an account and, for markdown, an Enterprise plan. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://webflow.com/updates/markdown-for-agents",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "framer",
   "name": "Framer",
   "type": "site-builder",
   "type_label": "Site builder",
   "operator": "Framer",
   "one_line": "Visual site builder that prerenders every page to HTML and serves a markdown version of every page on the same URL by default, via Accept header or ?md.",
   "page": "https://agentreadyhtml.com/platforms/framer/",
   "total": {
    "score": 10,
    "of": 14
   },
   "test_built": false,
   "scores": {
    "initial_html_by_default": {
     "value": 2,
     "evidence": "Prerendered HTML for every page. Not test-built: a Framer site needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.framer.com/help/articles/make-site-readable-by-ai-agents/",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 2,
     "evidence": "A made-up path on www.framer.com returned 404. Observed on the vendor's own site with a plain fetch on 2026-11-04; the vendor's own site may not use default settings.",
     "source_url": "https://www.framer.com/agent-ready-html-missing-path-check",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 1,
     "evidence": "Supported once the owner adds the file; not generated. Not test-built: a Framer site needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.framer.com/help/articles/make-site-readable-by-ai-agents/",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 1,
     "evidence": "Owner adds the link. Not test-built: a Framer site needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.framer.com/help/articles/make-site-readable-by-ai-agents/",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 2,
     "evidence": "On by default for every page. Not test-built: a Framer site needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.framer.com/help/articles/make-site-readable-by-ai-agents/",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 1,
     "evidence": "JSON-LD the owner adds is preserved in HTML. Not test-built: a Framer site needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.framer.com/help/articles/make-site-readable-by-ai-agents/",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": "n/a",
     "evidence": "Marketing site builder. Not test-built: a Framer site needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.framer.com/help/articles/make-site-readable-by-ai-agents/",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": 1,
     "evidence": "Code components exist; markdown output of code not tested. Not test-built: a Framer site needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.framer.com/help/articles/make-site-readable-by-ai-agents/",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Low: write llms.txt and link it; add JSON-LD in page settings.",
     "evidence": "Markdown and prerendering are automatic. Not test-built: a Framer site needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.framer.com/help/articles/make-site-readable-by-ai-agents/",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "wix",
   "name": "Wix",
   "type": "site-builder",
   "type_label": "Site builder",
   "operator": "Wix.com",
   "one_line": "Site builder that auto-generates and maintains an llms.txt describing the site and its Wix MCP endpoint, editable in the dashboard and through an API.",
   "page": "https://agentreadyhtml.com/platforms/wix/",
   "total": {
    "score": 6,
    "of": 12
   },
   "test_built": false,
   "scores": {
    "initial_html_by_default": {
     "value": 1,
     "evidence": "Wix sites are server-rendered, with heavy script payloads; a test build was not possible. Not test-built: a Wix site needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://support.wix.com/en/article/understanding-your-sites-llms-txt-file",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 2,
     "evidence": "A made-up path on www.wix.com returned 404. Observed on the vendor's own site with a plain fetch on 2026-11-04; the vendor's own site may not use default settings.",
     "source_url": "https://www.wix.com/agent-ready-html-missing-path-check",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 2,
     "evidence": "Generated and maintained by default where the feature has rolled out. Not test-built: a Wix site needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://support.wix.com/en/article/understanding-your-sites-llms-txt-file",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 0,
     "evidence": "No home page link documented. Not test-built: a Wix site needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://support.wix.com/en/article/understanding-your-sites-llms-txt-file",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 0,
     "evidence": "Not observed on wix.com and not documented. Not test-built: a Wix site needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://dev.wix.com/docs/api-reference/business-management/marketing/seo/txt-file-server/llms-txt/introduction",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 1,
     "evidence": "Structured data settings exist in SEO tools; not measured here. Not test-built: a Wix site needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://support.wix.com/en/article/understanding-your-sites-llms-txt-file",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": "n/a",
     "evidence": "Site builder; agents are pointed at the MCP endpoint instead. Not test-built: a Wix site needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://dev.wix.com/docs/api-reference/business-management/marketing/seo/txt-file-server/llms-txt/introduction",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": "n/a",
     "evidence": "Not a docs product. Not test-built: a Wix site needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://support.wix.com/en/article/understanding-your-sites-llms-txt-file",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Low for llms.txt; markdown needs an edge product.",
     "evidence": "Generated by default. Not test-built: a Wix site needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://support.wix.com/en/article/understanding-your-sites-llms-txt-file",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "squarespace",
   "name": "Squarespace",
   "type": "site-builder",
   "type_label": "Site builder",
   "operator": "Squarespace",
   "one_line": "Site builder with an AI crawler toggle; native llms.txt on 7.1 sites is reported by third parties but no Squarespace help page confirming it was found.",
   "page": "https://agentreadyhtml.com/platforms/squarespace/",
   "total": {
    "score": 6,
    "of": 12
   },
   "test_built": false,
   "scores": {
    "initial_html_by_default": {
     "value": 2,
     "evidence": "Squarespace pages are server-rendered templates. Not test-built: a Squarespace site needs an account and a paid plan to publish. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.collaborada.com/blog/squarespace-llms-txt",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 2,
     "evidence": "A made-up path on www.squarespace.com returned 404. Observed on the vendor's own site with a plain fetch on 2026-11-04; the vendor's own site may not use default settings.",
     "source_url": "https://www.squarespace.com/agent-ready-html-missing-path-check",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 1,
     "evidence": "Reported native on 7.1, not confirmed from a Squarespace page. Not test-built: a Squarespace site needs an account and a paid plan to publish. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.collaborada.com/blog/squarespace-llms-txt",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 0,
     "evidence": "Not documented. Not test-built: a Squarespace site needs an account and a paid plan to publish. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.collaborada.com/blog/squarespace-llms-txt",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 0,
     "evidence": "Not observed. Observed on the vendor's own site with a plain fetch on 2026-11-04; the vendor's own site may not use default settings.",
     "source_url": "https://www.collaborada.com/blog/squarespace-llms-txt",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 1,
     "evidence": "Templates emit some structured data; not measured. Not test-built: a Squarespace site needs an account and a paid plan to publish. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.collaborada.com/blog/squarespace-llms-txt",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": "n/a",
     "evidence": "Site builder. Not test-built: a Squarespace site needs an account and a paid plan to publish. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.collaborada.com/blog/squarespace-llms-txt",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": "n/a",
     "evidence": "Not a docs product. Not test-built: a Squarespace site needs an account and a paid plan to publish. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.collaborada.com/blog/squarespace-llms-txt",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Medium: confirm the llms.txt setting on your plan, link it yourself, add markdown at the edge.",
     "evidence": "Native support unconfirmed from a primary source. Not test-built: a Squarespace site needs an account and a paid plan to publish. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://www.collaborada.com/blog/squarespace-llms-txt",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "wordpress-elementor",
   "name": "WordPress and Elementor",
   "type": "site-builder",
   "type_label": "Site builder",
   "operator": "WordPress community; Elementor",
   "one_line": "Server-rendered CMS where llms.txt and markdown come from plugins (Yoast, AIOSEO, Website LLMs.txt, Markdown Alternate); Elementor sits on the AgentReady committee.",
   "page": "https://agentreadyhtml.com/platforms/wordpress-elementor/",
   "total": {
    "score": 6,
    "of": 14
   },
   "test_built": true,
   "scores": {
    "initial_html_by_default": {
     "value": 2,
     "evidence": "Test build, WordPress 7.1.4 with Elementor 4.3.6, 2026-11-04: the home page and a page with a code block were server rendered with the H1 and text in the HTML.",
     "source_url": "https://developer.wordpress.org/themes/basics/template-hierarchy/",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 1,
     "evidence": "Test build: with the default plain permalinks a made-up path answered a 301 to the home page, which answered 200 (a soft 404); after setting pretty permalinks it returned 404 directly.",
     "source_url": "https://wordpress.org/documentation/article/customize-permalinks/",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 0,
     "evidence": "Test build: core and Elementor wrote no llms.txt (404). A plugin is needed; Yoast SEO is tested on its own profile.",
     "source_url": "https://developer.yoast.com/features/llms-txt/functional-specification/",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 0,
     "evidence": "Test build: nothing links an llms.txt and none exists in core or Elementor.",
     "source_url": "https://developer.yoast.com/features/llms-txt/functional-specification/",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 1,
     "evidence": "Test build: Accept: text/markdown returned text/html. WordPress runs its own PHP server, so a plugin such as Markdown Alternate can answer it; none was installed.",
     "source_url": "https://joost.blog/markdown-alternate/",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 1,
     "evidence": "Test build: core and Elementor emitted no JSON-LD on the pages tested; an SEO plugin adds it (Yoast did, see its profile).",
     "source_url": "https://developer.yoast.com/features/schema/",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": "n/a",
     "evidence": "Does not apply to a page builder. Core exposes a REST API root through a Link header and a link element (rel https://api.w.org/); that is not an OpenAPI file.",
     "source_url": "https://wordpress.org/documentation/article/customize-permalinks/",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": 1,
     "evidence": "Test build: the core code block became pre class wp-block-code with no language tag; a language class has to be added by hand or by a plugin.",
     "source_url": "https://wordpress.org/documentation/article/code-block/",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Medium: set pretty permalinks, pick one llms.txt plugin and one markdown plugin or edge product, and check that Elementor layouts keep the text in the HTML.",
     "evidence": "Based on the test build above and the documentation pages cited for each key.",
     "source_url": "https://wordpress.org/documentation/article/customize-permalinks/",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "shopify-themes",
   "name": "Shopify themes",
   "type": "site-builder",
   "type_label": "Site builder",
   "operator": "Shopify",
   "one_line": "Liquid storefronts render on the server; Shopify manages /agents.md for every store and mirrors it at /llms.txt and /llms-full.txt, overridable with Liquid templates.",
   "page": "https://agentreadyhtml.com/platforms/shopify-themes/",
   "total": {
    "score": 7,
    "of": 12
   },
   "test_built": false,
   "scores": {
    "initial_html_by_default": {
     "value": 2,
     "evidence": "Liquid renders on Shopify servers. Not test-built: a Shopify store needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://shopify.dev/docs/storefronts/themes/architecture/templates/llms-txt-liquid",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 2,
     "evidence": "Themes include a 404 template served with 404. Not test-built: a Shopify store needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://shopify.dev/docs/storefronts/themes/architecture/templates/llms-txt-liquid",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 2,
     "evidence": "Managed default mirrors agents.md. Not test-built: a Shopify store needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://shopify.dev/docs/storefronts/themes/architecture/templates/llms-txt-liquid",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 0,
     "evidence": "No link from storefront pages documented. Not test-built: a Shopify store needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://shopify.dev/docs/storefronts/themes/architecture/templates/agents-md-liquid",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 0,
     "evidence": "Not documented for storefront pages; shopify.com answered with text/html. Not test-built: a Shopify store needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://shopify.dev/docs/storefronts/themes/architecture/templates/agents-md-liquid",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 1,
     "evidence": "Many themes emit Product JSON-LD; depends on the theme. Not test-built: a Shopify store needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://shopify.dev/docs/storefronts/themes/architecture/templates/llms-txt-liquid",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": "n/a",
     "evidence": "Commerce; agents are pointed at UCP and MCP. Not test-built: a Shopify store needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://shopify.dev/docs/storefronts/themes/architecture/templates/agents-md-liquid",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": "n/a",
     "evidence": "Not a docs product. Not test-built: a Shopify store needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://shopify.dev/docs/storefronts/themes/architecture/templates/llms-txt-liquid",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Low: check the managed agents.md reads correctly; override only when needed.",
     "evidence": "Managed by default. Not test-built: a Shopify store needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://shopify.dev/docs/storefronts/themes/architecture/templates/agents-md-liquid",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "nextjs-app-router",
   "name": "Next.js (App Router defaults)",
   "type": "framework",
   "type_label": "Framework",
   "operator": "Vercel",
   "one_line": "React framework whose App Router renders Server Components by default and prerenders HTML; markdown negotiation and llms.txt are patterns the developer adds.",
   "page": "https://agentreadyhtml.com/platforms/nextjs-app-router/",
   "total": {
    "score": 7,
    "of": 16
   },
   "test_built": true,
   "scores": {
    "initial_html_by_default": {
     "value": 2,
     "evidence": "Test build, Next.js 16.4.5, 2026-11-04: the App Router pages were prerendered as static content with the H1 in the HTML.",
     "source_url": "https://nextjs.org/docs/app/getting-started/server-and-client-components",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 2,
     "evidence": "Test build: next start answered a made-up path with 404 directly. notFound() inside a page renders the 404 UI.",
     "source_url": "https://nextjs.org/docs/app/api-reference/functions/not-found",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 0,
     "evidence": "Test build: public/ held only images; no llms.txt, robots.txt or sitemap. A file or a route handler is written by hand.",
     "source_url": "https://nextjs.org/docs/app/getting-started/route-handlers",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 0,
     "evidence": "Test build: nothing links an llms.txt and none exists.",
     "source_url": "https://nextjs.org/docs/app/getting-started/route-handlers",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 1,
     "evidence": "Test build: Accept: text/markdown returned text/html. Next.js runs its own server by default, so a rewrite that tests the Accept header, plus a route handler, can answer it without a separate host.",
     "source_url": "https://nextjs.org/docs/app/api-reference/config/next-config-js/rewrites",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 1,
     "evidence": "Test build: no JSON-LD emitted. A script element can be rendered from a Server Component.",
     "source_url": "https://nextjs.org/docs/app/getting-started/server-and-client-components",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": 0,
     "evidence": "Test build: no OpenAPI file or link; Next.js has no first-party feature for one.",
     "source_url": "https://nextjs.org/docs/app/getting-started/route-handlers",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": 1,
     "evidence": "Test build: there is no Markdown pipeline without MDX setup; a hand-written code element kept its language class.",
     "source_url": "https://nextjs.org/docs/app/guides/mdx",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Medium: write llms.txt and a markdown route, add the Accept rewrite, link the file, and keep content in Server Components.",
     "evidence": "Based on the test build above and the documentation pages cited for each key.",
     "source_url": "https://nextjs.org/docs/app/api-reference/config/next-config-js/rewrites",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "astro",
   "name": "Astro",
   "type": "framework",
   "type_label": "Framework",
   "operator": "Astro",
   "one_line": "Content framework that prerenders every page to static HTML by default; agent files are integrations or hand-written endpoints.",
   "page": "https://agentreadyhtml.com/platforms/astro/",
   "total": {
    "score": 6,
    "of": 16
   },
   "test_built": true,
   "scores": {
    "initial_html_by_default": {
     "value": 2,
     "evidence": "Test build, Astro 7.4.5, 2026-11-04: the minimal template put the H1 and body text in the home page HTML.",
     "source_url": "https://docs.astro.build/en/concepts/why-astro/",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 1,
     "evidence": "Test build: a made-up path returned 404 from astro preview, but the build wrote no 404.html; a custom 404 page has to be added to src/pages and the host has to serve it with status 404.",
     "source_url": "https://docs.astro.build/en/basics/astro-pages/",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 0,
     "evidence": "Test build: no llms.txt, robots.txt or sitemap in dist/. Astro has no first-party llms.txt feature; a file or endpoint is written by hand.",
     "source_url": "https://docs.astro.build/en/guides/endpoints/",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 0,
     "evidence": "Test build: no page links an llms.txt and none exists.",
     "source_url": "https://docs.astro.build/en/guides/endpoints/",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 0,
     "evidence": "Test build: Accept: text/markdown on / returned text/html and /index.md returned 404. The default output is static files, so negotiation has to live in the host or an edge rule; with an adapter in server mode Astro could answer it itself, as Nuxt does.",
     "source_url": "https://docs.astro.build/en/guides/on-demand-rendering/",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 1,
     "evidence": "Test build: no JSON-LD emitted. A script element with type application/ld+json can be written into a layout.",
     "source_url": "https://docs.astro.build/en/basics/astro-pages/",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": 0,
     "evidence": "Test build: no OpenAPI file or link; Astro has no first-party feature for one.",
     "source_url": "https://docs.astro.build/en/guides/endpoints/",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": 2,
     "evidence": "Test build: the fence in a Markdown page became pre with data-language=\"js\" from Shiki, with no setup.",
     "source_url": "https://docs.astro.build/en/guides/markdown-content/",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Medium: add a 404 page, write llms.txt and any markdown endpoints, link the file, and add the host rules for 404 and Accept.",
     "evidence": "Based on the test build above and the documentation pages cited for each key.",
     "source_url": "https://docs.astro.build/en/basics/astro-pages/",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "nuxt",
   "name": "Nuxt",
   "type": "framework",
   "type_label": "Framework",
   "operator": "Nuxt",
   "one_line": "Vue framework that uses universal rendering by default, returning fully rendered HTML; client-side rendering is a one-line switch that removes it.",
   "page": "https://agentreadyhtml.com/platforms/nuxt/",
   "total": {
    "score": 7,
    "of": 16
   },
   "test_built": true,
   "scores": {
    "initial_html_by_default": {
     "value": 2,
     "evidence": "Test build, Nuxt 4.6.4, 2026-11-04: universal rendering put the H1 and body text in the page HTML.",
     "source_url": "https://nuxt.com/docs/4.x/guide/concepts/rendering",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 2,
     "evidence": "Test build: the Nitro server answered a made-up path with 404 directly.",
     "source_url": "https://nuxt.com/docs/4.x/getting-started/error-handling",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 0,
     "evidence": "Test build: the template shipped public/robots.txt (empty Disallow, no Sitemap line) and no llms.txt or sitemap. A file or a server route is written by hand.",
     "source_url": "https://nuxt.com/docs/4.x/directory-structure/server",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 0,
     "evidence": "Test build: nothing links an llms.txt and none exists.",
     "source_url": "https://nuxt.com/docs/4.x/directory-structure/server",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 1,
     "evidence": "Test build: Accept: text/markdown returned text/html. Nuxt runs its own Nitro server by default, so a server route or middleware that tests the header can answer it without a separate host.",
     "source_url": "https://nuxt.com/docs/4.x/directory-structure/server",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 1,
     "evidence": "Test build: no JSON-LD emitted. A script element can be added through head configuration.",
     "source_url": "https://nuxt.com/docs/4.x/guide/concepts/rendering",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": 0,
     "evidence": "Test build: no OpenAPI file or link; Nuxt has no first-party feature for one.",
     "source_url": "https://nuxt.com/docs/4.x/directory-structure/server",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": 1,
     "evidence": "Test build: there is no Markdown pipeline without the Content module; a hand-written code element kept its language class.",
     "source_url": "https://nuxt.com/docs/4.x/guide/concepts/rendering",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Medium: keep ssr on, write llms.txt and a markdown server route, add the Accept middleware, and link the file.",
     "evidence": "Based on the test build above and the documentation pages cited for each key.",
     "source_url": "https://nuxt.com/docs/4.x/directory-structure/server",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "hubspot-cms",
   "name": "HubSpot CMS",
   "type": "site-builder",
   "type_label": "Site builder",
   "operator": "HubSpot",
   "one_line": "Server-rendered marketing CMS with no documented native llms.txt; root files come from a marketplace app or a redirect.",
   "page": "https://agentreadyhtml.com/platforms/hubspot-cms/",
   "total": {
    "score": 6,
    "of": 12
   },
   "test_built": false,
   "scores": {
    "initial_html_by_default": {
     "value": 2,
     "evidence": "HubL templates render on the server. Not test-built: HubSpot CMS needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://ecosystem.hubspot.com/marketplace/listing/llms",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 2,
     "evidence": "A made-up path on www.hubspot.com returned 404. Observed on the vendor's own site with a plain fetch on 2026-11-04; the vendor's own site may not use default settings.",
     "source_url": "https://www.hubspot.com/agent-ready-html-missing-path-check",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 1,
     "evidence": "Marketplace app. Not test-built: HubSpot CMS needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://ecosystem.hubspot.com/marketplace/listing/llms",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 0,
     "evidence": "Not documented. Not test-built: HubSpot CMS needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://ecosystem.hubspot.com/marketplace/listing/llms",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 0,
     "evidence": "hubspot.com returned 406 to a markdown-only request. Observed on the vendor's own site with a plain fetch on 2026-11-04; the vendor's own site may not use default settings.",
     "source_url": "https://ecosystem.hubspot.com/marketplace/listing/llms",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 1,
     "evidence": "Templates can include JSON-LD; not generated by default. Not test-built: HubSpot CMS needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://ecosystem.hubspot.com/marketplace/listing/llms",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": "n/a",
     "evidence": "Marketing CMS. Not test-built: HubSpot CMS needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://ecosystem.hubspot.com/marketplace/listing/llms",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": "n/a",
     "evidence": "Not a docs product. Not test-built: HubSpot CMS needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://ecosystem.hubspot.com/marketplace/listing/llms",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "High: install an app or redirect, link the file, add markdown at the edge.",
     "evidence": "No native agent files documented. Not test-built: HubSpot CMS needs an account. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://ecosystem.hubspot.com/marketplace/listing/llms",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "cloudflare-markdown-for-agents",
   "name": "Cloudflare Markdown for Agents",
   "type": "edge-product",
   "type_label": "Edge or plugin product",
   "operator": "Cloudflare",
   "one_line": "Zone setting that converts origin HTML to markdown at the edge when a request sends Accept: text/markdown; free on Pro, Business and Enterprise.",
   "page": "https://agentreadyhtml.com/platforms/cloudflare-markdown-for-agents/",
   "total": {
    "score": 5,
    "of": 10
   },
   "test_built": false,
   "scores": {
    "initial_html_by_default": {
     "value": "n/a",
     "evidence": "Converts whatever HTML the origin returns; cannot add content the origin hides in JavaScript. Not test-built: it needs a Cloudflare zone on a paid plan. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": "n/a",
     "evidence": "Passes the origin status through. Not test-built: it needs a Cloudflare zone on a paid plan. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 0,
     "evidence": "Not part of the product. Not test-built: it needs a Cloudflare zone on a paid plan. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 0,
     "evidence": "Not part of the product. Not test-built: it needs a Cloudflare zone on a paid plan. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 2,
     "evidence": "The product itself, one toggle per zone. Not test-built: it needs a Cloudflare zone on a paid plan. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 2,
     "evidence": "Keeps JSON-LD in a fenced block. Not test-built: it needs a Cloudflare zone on a paid plan. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": "n/a",
     "evidence": "Edge conversion only. Not test-built: it needs a Cloudflare zone on a paid plan. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": 1,
     "evidence": "Generic conversion; code language survives only if the HTML carries it. Not test-built: it needs a Cloudflare zone on a paid plan. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Low: toggle in Quick Actions on a paid zone; the origin must already put the answer in HTML.",
     "evidence": "One toggle. Not test-built: it needs a Cloudflare zone on a paid plan. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://blog.cloudflare.com/markdown-for-agents/",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "scrunch-agent-pages",
   "name": "Scrunch Agent Pages (AXP)",
   "type": "edge-product",
   "type_label": "Edge or plugin product",
   "operator": "Scrunch",
   "one_line": "Enterprise layer that routes recognised AI user agents at the CDN to a Scrunch-hosted, AI-optimised mirror of existing URLs; it does not use llms.txt.",
   "page": "https://agentreadyhtml.com/platforms/scrunch-agent-pages/",
   "total": {
    "score": 3,
    "of": 10
   },
   "test_built": false,
   "scores": {
    "initial_html_by_default": {
     "value": 2,
     "evidence": "Agents receive server-rendered HTML with no JavaScript dependency. Not test-built: it is sold on an enterprise contract. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://helpcenter.scrunchai.com/en/articles/12845899-how-axp-serves-content-to-ai-agents",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": "n/a",
     "evidence": "Depends on the origin and the mirror. Not test-built: it is sold on an enterprise contract. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://helpcenter.scrunchai.com/en/articles/12845899-how-axp-serves-content-to-ai-agents",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 0,
     "evidence": "Not used by design. Not test-built: it is sold on an enterprise contract. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://helpcenter.scrunchai.com/en/articles/12845899-how-axp-serves-content-to-ai-agents",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 0,
     "evidence": "Not used. Not test-built: it is sold on an enterprise contract. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://helpcenter.scrunchai.com/en/articles/12845899-how-axp-serves-content-to-ai-agents",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 0,
     "evidence": "Routing is by user agent, not by Accept header. Not test-built: it is sold on an enterprise contract. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://helpcenter.scrunchai.com/en/articles/12845899-how-axp-serves-content-to-ai-agents",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 1,
     "evidence": "Optimised pages can carry structured data; not documented in detail. Not test-built: it is sold on an enterprise contract. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://scrunch.com/platform/agent-experience",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": "n/a",
     "evidence": "Content mirror. Not test-built: it is sold on an enterprise contract. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://helpcenter.scrunchai.com/en/articles/12845899-how-axp-serves-content-to-ai-agents",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": "n/a",
     "evidence": "Content mirror. Not test-built: it is sold on an enterprise contract. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://helpcenter.scrunchai.com/en/articles/12845899-how-axp-serves-content-to-ai-agents",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Medium: CDN routing rules plus review of the optimised mirror; enterprise contract.",
     "evidence": "Needs CDN setup. Not test-built: it is sold on an enterprise contract. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://helpcenter.scrunchai.com/en/articles/12845899-how-axp-serves-content-to-ai-agents",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "vercel-markdown",
   "name": "Vercel markdown handling",
   "type": "edge-product",
   "type_label": "Edge or plugin product",
   "operator": "Vercel",
   "one_line": "Vercel serves its own blog, changelog and docs as markdown on Accept: text/markdown and publishes the Next.js recipe; it is a pattern, not a toggle.",
   "page": "https://agentreadyhtml.com/platforms/vercel-markdown/",
   "total": {
    "score": 8,
    "of": 16
   },
   "test_built": false,
   "scores": {
    "initial_html_by_default": {
     "value": 2,
     "evidence": "Recipe assumes server-rendered Next.js pages. Not test-built: it needs a Vercel account to deploy; the Next.js build tests the same rewrite pattern locally. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://vercel.com/blog/making-agent-friendly-pages-with-content-negotiation",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": 1,
     "evidence": "Guide recommends real 404s and 429 with Retry-After; enforcement is the developer's. Not test-built: it needs a Vercel account to deploy; the Next.js build tests the same rewrite pattern locally. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://vercel.com/kb/guide/make-your-site-readable-by-ai-agents",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 0,
     "evidence": "Not a product feature. Not test-built: it needs a Vercel account to deploy; the Next.js build tests the same rewrite pattern locally. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://vercel.com/kb/guide/make-your-site-readable-by-ai-agents",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 1,
     "evidence": "Guide recommends linking from footer or link rel alternate. Not test-built: it needs a Vercel account to deploy; the Next.js build tests the same rewrite pattern locally. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://vercel.com/kb/guide/make-your-site-readable-by-ai-agents",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 1,
     "evidence": "A recipe the developer implements. Not test-built: it needs a Vercel account to deploy; the Next.js build tests the same rewrite pattern locally. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://vercel.com/blog/making-agent-friendly-pages-with-content-negotiation",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 1,
     "evidence": "Guide recommends JSON-LD with facts repeated in visible text. Not test-built: it needs a Vercel account to deploy; the Next.js build tests the same rewrite pattern locally. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://vercel.com/kb/guide/make-your-site-readable-by-ai-agents",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": 1,
     "evidence": "Guide recommends a linked openapi.json. Not test-built: it needs a Vercel account to deploy; the Next.js build tests the same rewrite pattern locally. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://vercel.com/kb/guide/make-your-site-readable-by-ai-agents",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": 1,
     "evidence": "Guide recommends fenced, language-tagged code. Not test-built: it needs a Vercel account to deploy; the Next.js build tests the same rewrite pattern locally. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://vercel.com/kb/guide/make-your-site-readable-by-ai-agents",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Medium: write the rewrite and handler and keep markdown in sync with pages.",
     "evidence": "Recipe, not toggle. Not test-built: it needs a Vercel account to deploy; the Next.js build tests the same rewrite pattern locally. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://vercel.com/blog/making-agent-friendly-pages-with-content-negotiation",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "firecrawl-llmstxt",
   "name": "Firecrawl llms.txt generator",
   "type": "edge-product",
   "type_label": "Edge or plugin product",
   "operator": "Firecrawl",
   "one_line": "Crawl-based generator that writes llms.txt and llms-full.txt for any URL; the hosted /llmstxt endpoint is deprecated in favour of an open-source script.",
   "page": "https://agentreadyhtml.com/platforms/firecrawl-llmstxt/",
   "total": {
    "score": 3,
    "of": 6
   },
   "test_built": false,
   "scores": {
    "initial_html_by_default": {
     "value": "n/a",
     "evidence": "A generator, not a host. Not test-built: it needs a Firecrawl account and API key. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.firecrawl.dev/features/alpha/llmstxt",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": "n/a",
     "evidence": "A generator. Not test-built: it needs a Firecrawl account and API key. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.firecrawl.dev/features/alpha/llmstxt",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 2,
     "evidence": "The product itself, from a crawl. Not test-built: it needs a Firecrawl account and API key. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.firecrawl.dev/features/alpha/llmstxt",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 0,
     "evidence": "The site owner publishes and links the output. Not test-built: it needs a Firecrawl account and API key. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.firecrawl.dev/features/alpha/llmstxt",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": "n/a",
     "evidence": "A generator. Not test-built: it needs a Firecrawl account and API key. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.firecrawl.dev/features/alpha/llmstxt",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": "n/a",
     "evidence": "A generator. Not test-built: it needs a Firecrawl account and API key. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.firecrawl.dev/features/alpha/llmstxt",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": "n/a",
     "evidence": "A generator. Not test-built: it needs a Firecrawl account and API key. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.firecrawl.dev/features/alpha/llmstxt",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": 1,
     "evidence": "Output is crawled markdown; code fences depend on the source HTML. Not test-built: it needs a Firecrawl account and API key. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://docs.firecrawl.dev/features/alpha/llmstxt",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Medium: run, edit the summary and sections, host and link the result, and rerun when content changes.",
     "evidence": "One-off output. Not test-built: it needs a Firecrawl account and API key. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://github.com/firecrawl/create-llmstxt-py",
     "read_date": "2026-11-04"
    }
   }
  },
  {
   "id": "wordpress-llmstxt-plugins",
   "name": "Yoast and other WordPress llms.txt plugins",
   "type": "edge-product",
   "type_label": "Edge or plugin product",
   "operator": "Yoast; All in One SEO; plugin authors",
   "one_line": "Plugins that write llms.txt on WordPress (Yoast, AIOSEO, Website LLMs.txt) and, in some cases, markdown twins; each picks different pages.",
   "page": "https://agentreadyhtml.com/platforms/wordpress-llmstxt-plugins/",
   "total": {
    "score": 3,
    "of": 8
   },
   "test_built": true,
   "scores": {
    "initial_html_by_default": {
     "value": "n/a",
     "evidence": "Plugins do not change rendering. Not test-built: the key does not apply to a plugin; the WordPress build is on its own profile. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://developer.yoast.com/features/llms-txt/functional-specification/",
     "read_date": "2026-11-04"
    },
    "real_status_codes": {
     "value": "n/a",
     "evidence": "Plugins do not change status handling. Not test-built: the key does not apply to a plugin; the WordPress build is on its own profile. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://developer.yoast.com/features/llms-txt/functional-specification/",
     "read_date": "2026-11-04"
    },
    "llms_txt_generation": {
     "value": 1,
     "evidence": "Test build, Yoast SEO 28.8, 2026-11-04: /llms.txt returned 404 after activation because the wpseo option enable_llms_txt was false; after it was set to true the file returned 200 text/plain with an H1, a Categories section and an Optional section.",
     "source_url": "https://developer.yoast.com/features/llms-txt/functional-specification/",
     "read_date": "2026-11-04"
    },
    "llms_txt_linking": {
     "value": 0,
     "evidence": "Test build: with the file enabled, the home page HTML did not link /llms.txt.",
     "source_url": "https://developer.yoast.com/features/llms-txt/functional-specification/",
     "read_date": "2026-11-04"
    },
    "markdown_negotiation": {
     "value": 0,
     "evidence": "Test build: Yoast added no markdown negotiation; Accept: text/markdown returned text/html.",
     "source_url": "https://joost.blog/markdown-alternate/",
     "read_date": "2026-11-04"
    },
    "jsonld_output": {
     "value": 2,
     "evidence": "Test build: Yoast added a JSON-LD schema graph (class yoast-schema-graph) to the pages, with no setup.",
     "source_url": "https://developer.yoast.com/features/schema/",
     "read_date": "2026-11-04"
    },
    "openapi_exposure": {
     "value": "n/a",
     "evidence": "CMS plugins. Not test-built: the key does not apply to a plugin; the WordPress build is on its own profile. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://developer.yoast.com/features/llms-txt/functional-specification/",
     "read_date": "2026-11-04"
    },
    "fenced_code": {
     "value": "n/a",
     "evidence": "Not affected. Not test-built: the key does not apply to a plugin; the WordPress build is on its own profile. Score from the documentation page cited, read 2026-11-04.",
     "source_url": "https://developer.yoast.com/features/llms-txt/functional-specification/",
     "read_date": "2026-11-04"
    },
    "manual_work_needed": {
     "value": "Low to medium: switch the llms.txt feature on, choose what it lists, remove any older static llms.txt, and add a footer link.",
     "evidence": "Based on the test build above: the feature is off by default and the home page does not link the file.",
     "source_url": "https://developer.yoast.com/features/llms-txt/functional-specification/",
     "read_date": "2026-11-04"
    }
   }
  }
 ]
}
