Methodology

The AgentFix AI-agent readiness checklist

Every signal we look for when we scan a site, grouped by category, with the reason it matters. This is our single source of truth - one page updates when the checklist grows.

TL;DR

AgentFix runs 34 signals across 7 categories, grades A-F on pass ratio, and generates a fix pack for whatever's missing. This page lists every check with the reason it matters - so long-lived content on our blog, GitHub README, and third-party listings can link here instead of hard-coding a number that changes.

On this page

Discoverability · 5 signals

The files AI crawlers hit first to figure out what your site is and where the rest of the content lives.

  1. robots_txt_exists

    robots.txt file present

    robots.txt is the first file AI crawlers request. Missing or empty means every crawler has to guess your policy, which many read as `disallow`.

  2. sitemap_linked

    sitemap.xml present and referenced

    A sitemap gives agents the full URL list without walking every internal link. Reference it in robots.txt with `Sitemap:` and expose /sitemap.xml.

  3. llms_txt_exists

    llms.txt file present

    llms.txt is the emerging AI equivalent of robots.txt: it tells agents where the human-readable primary content lives, in the order you want them to read it.

  4. llms_full_txt_exists

    llms-full.txt file present

    llms-full.txt is your whole site as clean markdown in a single fetch. Modern LLM context windows fit it easily; agents that can load it skip crawling.

  5. syndication_feed

    RSS / Atom / JSON Feed declared in <head>

    Feed subscribers (Perplexity Pages, Feedly AI, custom GPTs with web access) prefer a feed over re-crawling. Declared via `<link rel="alternate">`.

AI Policy · 3 signals

Explicit signals in robots.txt about which AI crawlers may fetch your content and how it may be used.

  1. content_signals_declared

    AI Content Signals in robots.txt

    The Cloudflare Content-Signal directive tells AI systems your preferences for search, training, and AI input separately. Skipped = crawler guesses.

  2. gptbot_declared

    GPTBot rule in robots.txt

    An explicit User-agent block for GPTBot (allow or disallow) is a clear intent signal to OpenAI's crawler. Silence is treated as ambiguous.

  3. claudebot_declared

    ClaudeBot rule in robots.txt

    Same principle for Anthropic: naming ClaudeBot / anthropic-ai explicitly avoids the crawler having to fall back to generic User-agent: * rules.

Content · 9 signals

How your primary content is structured and served - the signals AI agents use to parse and cite it.

  1. markdown_content_negotiation

    Markdown content negotiation

    Returning `text/markdown` when the client asks for it (via Accept header) lets agents pull clean content without HTML stripping.

  2. semantic_html5

    Semantic HTML5 structure

    `<main>`, `<article>`, `<section>`, `<nav>` help agents identify the primary content region and skip chrome. Divs-only pages force fragile heuristics.

  3. h1_present

    Single H1 heading

    A clear single H1 gives agents the primary topic. Multiple or missing H1s confuse outline extractors and citation systems.

  4. meta_description

    Meta description present

    A concrete description helps agents summarize the page without reading full content. Also used for AI-answer snippets.

  5. canonical_url

    Canonical URL declared

    Canonical tags resolve duplicate-URL ambiguity (trailing slash, www, query params). Without them, AI crawlers may split authority across variants.

  6. ssr_pre_rendered

    Content visible without JavaScript

    Most AI crawlers do not execute JS. Client-side-rendered SPAs look empty to them. SSR / SSG / ISR fixes this in one build-config change.

  7. lang_attribute

    <html lang> set with a valid BCP 47 code

    Agents route users to language-correct answers based on the root `lang` attribute. Missing = fallback to English; wrong = wrong-language served.

  8. heading_hierarchy

    Heading hierarchy doesn't skip levels

    Jumping H1 → H3 breaks outline extraction. Keep heading levels monotonic: descend by one at a time so agents build a valid table of contents.

  9. image_alt_coverage

    Image alt text coverage ≥ 80%

    AI vision models augment classifier output with alt text. Sites with mostly bare `<img>` tags expose only filenames - rarely meaningful to agents.

Schema · 5 signals

Structured data (JSON-LD) that gives agents machine-readable identity, hierarchy, and provenance for your content.

  1. schema_organization

    Organization schema.org markup

    Organization JSON-LD tells agents who runs the site, contact info, and social profiles - the identity block behind citations.

  2. schema_website

    WebSite schema.org markup

    WebSite JSON-LD signals name, URL, and optional SearchAction. It's the top-level fact agents use to name your site in an answer.

  3. open_graph

    Open Graph meta tags

    og:title / og:description / og:image drive rich previews and give agents a canonical title / summary pair per URL.

  4. schema_faq_breadcrumb

    FAQPage or BreadcrumbList schema

    FAQPage gets your Q&A cited verbatim in AI Overviews. BreadcrumbList locates the page in your hierarchy so agents can suggest the parent category.

  5. article_metadata_complete

    Article schema includes author + datePublished

    For pages that declare Article / BlogPosting, AI citation engines need at minimum author + datePublished to attribute the quote. dateModified lifts weight.

Agent Protocols · 3 signals

The new `/.well-known/*` files that let AI agent frameworks discover your site's capabilities directly, without scraping the UI.

  1. mcp_server_card

    MCP Server Card (.well-known/mcp/server-card.json)

    MCP Server Cards (SEP-2127) let Claude Desktop, Cursor, Windsurf, and other MCP clients discover which capabilities your site exposes.

  2. agent_skills_index

    Agent Skills index (.well-known/agent-skills/index.json)

    Agent Skills declare what discrete actions an agent can perform on your site - separate from Server Card, focused on invocable operations.

  3. agent_card

    Agent Card (.well-known/agent-card.json)

    Google's Agent-to-Agent (A2A) protocol advertises your site to cross-platform agent frameworks. Sits alongside MCP; different discovery mesh.

Browser UX · 6 signals

Signals a browser-driving agent (Operator, Claude Computer Use, an internal agent stack) needs to interact with your site reliably.

  1. aria_labels

    Interactive elements have ARIA labels

    aria-label / aria-labelledby / title / visible text on buttons and inputs - how a browser agent identifies what to click.

  2. tap_targets

    Tap targets ≥ 24×24px

    Small targets cause browser agents to miss or misfire clicks, especially on mobile viewports. 24×24px is the WCAG minimum.

  3. no_blocking_overlays

    No full-screen blocking overlays

    Cookie banners and interstitials that cover the viewport on first load stop browser agents from reaching main content until they solve the modal.

  4. low_cls

    Cumulative Layout Shift < 0.1

    High CLS causes agents to click wrong elements as the page shifts under them. Stabilize layout with image dimensions and no late-injected chrome.

  5. descriptive_title

    Descriptive page title

    A unique, descriptive `<title>` helps browser agents disambiguate tabs and reference the page back to the user.

  6. shadow_dom_accessible

    Content accessible to AI crawlers (no closed shadow DOM)

    Closed shadow roots are invisible to AI crawlers. Prefer open shadow roots or declarative shadow DOM so component content ships in HTML source.

AI Visibility · 3 signals

The homepage-level signals that determine whether an AI crawler can even reach the rest of your content.

  1. no_anti_bot_block

    No anti-bot challenge on the homepage

    Cloudflare Turnstile, hCaptcha, reCAPTCHA, DataDome, Kasada, Akamai Bot Manager, PerimeterX on the homepage - AI crawlers hit the challenge and silently drop the site from their index. Fine on /signup or /admin; not on the entry page.

  2. real_anchor_navigation

    Navigation uses real <a href> links

    SPAs that use `<button onClick={navigate}>` for internal links have no hrefs for crawlers to follow. The rest of the site becomes invisible.

  3. homepage_indexable_by_ai

    Homepage isn't blocked from AI search by meta robots

    `noindex`, `noai`, `noimageai`, `nosnippet` on the homepage removes you from AI search - sometimes carried over from staging by accident.

How we score

Every scan runs the whole checklist. Each signal returns pass, fail, partial, or skipped. Partial and skipped count against the denominator - no vanity 100% for signals we couldn't evaluate.

GradePass ratioMeaning
A≥ 85%Agent-native. Ready to be cited.
B≥ 70%Solid. A few high-leverage gaps.
C≥ 55%Partially discoverable. Missing structured signals.
D≥ 40%Mostly invisible. Basics need to land first.
F< 40%Not agent-readable in current form.

We publish grade and pass count on every scan and on the public certificate. Rescan and the certificate updates.

Changelog

  • 2026-07-10 · v1
    Methodology page live. Initial checklist: 34 signals across 7 categories.

This list will grow as the AI-agent web matures. Notable directions on our roadmap: checkout / signup readiness (autocomplete hints, well-known flow schemas), agent-friendly SSO, and declarative content negotiation across feed formats. When a category is added, this page updates in one place.

See where your site stands

Run the whole checklist against your homepage in about 30 seconds. Free.

Scan my site →