What we check
The 41 checks behind every AI readiness audit. Each one explains what it means, why an AI system cares, how we detect it, and how to fix it.
AI Access
Whether AI systems can reach your content at all. Everything below is moot if these fail.
- Homepage responds successfully homepage-http-error Checks that your homepage returns a successful response to an AI crawler.
- No bot challenge blocks AI systems bot-challenge-blocking-agents Checks whether your homepage answers an identified bot with a challenge or a refusal rather than your content.
- Homepage redirects resolve quickly redirect-chain-excessive Checks how many redirects a crawler follows before reaching your homepage.
- GPTBot can reach your site gptbot-blocked Checks whether your robots.txt denies GPTBot, the crawler operated by OpenAI, access to your site.
- OAI-SearchBot can reach your site oai-searchbot-blocked Checks whether your robots.txt denies OAI-SearchBot, the crawler operated by OpenAI (ChatGPT search), access to your site.
- ClaudeBot can reach your site claudebot-blocked Checks whether your robots.txt denies ClaudeBot, the crawler operated by Anthropic, access to your site.
- PerplexityBot can reach your site perplexitybot-blocked Checks whether your robots.txt denies PerplexityBot, the crawler operated by Perplexity, access to your site.
- Google-Extended can reach your site google-extended-blocked Checks whether your robots.txt denies Google-Extended, the crawler operated by Google (Gemini), access to your site.
- robots.txt is published robots-txt-missing Checks whether a robots.txt is served at your domain root.
- robots.txt is parseable robots-txt-invalid Checks that your robots.txt contains directives a crawler can actually act on.
AI Discovery
Whether the content you care about can be found, rather than stumbled upon.
- llms.txt is reachable llms-txt-missing Checks whether a file is served at /llms.txt on your domain root.
- llms.txt follows the spec llms-txt-invalid Checks that your llms.txt has the structure the llmstxt.org spec defines: an H1 title, a blockquote summary, and at least one section of links.
- llms.txt lists enough entry points llms-txt-too-few-links Checks that your llms.txt links to at least three pages.
- llms.txt is lightweight llms-txt-oversized Checks that your llms.txt is small enough to be cheap to fetch and parse — under 50KB.
- llms-full.txt companion is published llms-full-txt-missing Checks for an optional llms-full.txt containing your full content in one file.
- A sitemap is reachable sitemap-missing Checks that an XML sitemap is reachable, either declared in robots.txt or at the conventional /sitemap.xml.
- The sitemap declared in robots.txt resolves sitemap-unreachable Checks that the Sitemap: URL declared in your robots.txt actually resolves.
- robots.txt declares your sitemap sitemap-not-declared-in-robots Checks that robots.txt contains a Sitemap: line pointing at your sitemap.
- Homepage declares a canonical URL canonical-missing Checks for a <link rel="canonical"> on your homepage.
- llms.txt links resolve llms-txt-links-broken Samples the links in your llms.txt and checks that they resolve.
- llms.txt covers your key pages key-pages-missing-from-llms-txt Compares the top-level pages in your sitemap against the links in your llms.txt.
Content Understanding
Whether your pages state what they are in ways a machine reads rather than infers.
- Homepage has a descriptive title title-tag-weak Checks that your homepage has a <title> that identifies what the site is.
- Homepage has a meta description meta-description-missing Checks for a <meta name="description"> on your homepage.
- Homepage has exactly one H1 h1-missing-or-duplicated Checks that your homepage has exactly one <h1>.
- Heading levels descend in order heading-hierarchy-broken Checks that heading levels on your homepage descend without skipping — an h2 does not jump straight to an h4.
- Page uses semantic landmarks semantic-html-missing Checks that your homepage uses semantic landmark elements — main, header, nav, footer or article — rather than only div and span.
- Page carries readable text thin-content Checks that your homepage contains a meaningful amount of readable text, rather than carrying its message entirely in images or video.
- Article declares an author authorship-missing Checks that a page presenting itself as an article names its author in machine-readable form.
- Article declares a publication date publish-date-missing Checks that a page presenting itself as an article carries a machine-readable publication date.
Machine-Readable Data
Whether your structured data says who you are, unambiguously and validly.
- Homepage publishes JSON-LD structured data jsonld-missing Checks for at least one valid JSON-LD block on your homepage.
- Structured data parses schema-invalid-syntax Checks that every JSON-LD block on your homepage is valid JSON.
- Organization schema is declared organization-schema-missing Checks for an Organization (or LocalBusiness) JSON-LD block on your homepage.
- Organization schema is complete schema-missing-recommended-fields Checks that your Organization schema carries the fields that make it useful — url, logo and sameAs.
- Article pages declare Article schema article-schema-missing Checks that a page presenting itself as an article also declares Article, BlogPosting or NewsArticle schema.
- Product schema declares an offer and a price product-schema-invalid Checks that any Product schema on the page includes an offers block carrying a price and a currency.
- FAQ content is marked up as FAQPage faq-schema-opportunity Checks whether a page that reads like a list of questions declares FAQPage schema.
- Open Graph tags are present open-graph-missing Checks for og:title, og:description and og:image on your homepage.
Answer Readiness
Whether your content can be quoted safely, and whether agents can act on it.
- An MCP endpoint is declared mcp-endpoint-missing Checks whether your site declares a Model Context Protocol endpoint that AI agents can call to take actions.
- Canonical URL is stable unstable-urls Checks that your canonical URL carries no session identifiers or campaign tracking parameters.
- Article content cites its sources source-attribution-missing Checks whether a page presenting itself as an article links out to any source at all.
- Content is present in the initial HTML content-client-rendered Compares the content in your HTML as delivered against what a browser produces after running your JavaScript.