Docs/Scores

Agent Readiness

What the Agent Readiness score measures and how to improve it.

What Agent Readiness measures

Weight: 30% of the AI Readiness Score

Agent Readiness answers the question: can AI agents act on your content?

Where Crawlability measures whether content is visible, Agent Readiness measures whether that content is structured, discoverable, and actionable for an AI system that needs to understand, summarize, or use your site programmatically.

The score is normalized to 0–100 before entering the composite formula.

A1 — Structured Data Completeness

Checks how complete your metadata is for AI systems that consume page-level signals.

| Signal | |---| | og:title, og:description, and og:image all present | | og:type present | | Schema.org JSON-LD with at least 3 non-boilerplate properties | | Schema.org Product or SoftwareApplication with offers, or a pricing table in the HTML | | twitter:card and twitter:title present | | Canonical <link rel="canonical"> present |

To improve:

<head>
  <!-- OpenGraph -->
  <meta property="og:title" content="Your Page Title">
  <meta property="og:description" content="A clear description.">
  <meta property="og:image" content="https://example.com/og-image.png">
  <meta property="og:type" content="website">

  <!-- Twitter Card -->
  <meta name="twitter:card" content="summary_large_image">
  <meta name="twitter:title" content="Your Page Title">

  <!-- Canonical -->
  <link rel="canonical" href="https://example.com/this-page">

  <!-- Schema.org -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "name": "Your Company",
    "url": "https://example.com",
    "description": "What you do.",
    "sameAs": ["https://twitter.com/yourco"]
  }
  </script>
</head>

A2 — Content Negotiation

Checks whether your server can deliver content in formats that AI agents prefer, beyond HTML.

| Signal | |---| | Server returns Markdown when Accept: text/markdown is requested | | /llms.txt is present and accessible | | Page links to a JSON feed or API documentation (/api, /docs, or <link rel="alternate" type="application/json">) |

To improve — llms.txt:

Create a /llms.txt file at your domain root that describes your site for AI systems. See llmstxt.org for the format.

# Example Company

> A one-line description of your product.

## Docs
- [API Reference](https://example.com/docs/api): Full API documentation.
- [Quickstart](https://example.com/docs/quickstart): Get started in 5 minutes.

To improve — Markdown negotiation:

Configure your server (or a middleware/edge function) to return Markdown when the request includes Accept: text/markdown. This allows AI agents to skip HTML parsing entirely.

A3 — Machine-Actionable Data

Checks whether your key facts — pricing, features, contact info, and CTAs — are accessible in structured HTML or Schema.org, not just rendered visually.

| Signal | |---| | Pricing data in an HTML <table> or Schema.org offers/price/telephone/email | | Page has a clear heading hierarchy (<h1> + at least one <h2>) | | Page has discoverable CTAs (sign up, get started, pricing, docs, api, contact, free trial, or demo in link text or href) | | Bot-view has at least 50% of the text present in the rendered view |

To improve:

Put pricing in an actual <table> element. Use descriptive text in CTA links rather than generic labels.

<!-- Avoid -->
<a href="/signup">Click here</a>

<!-- Prefer -->
<a href="/signup">Get started free</a>
<a href="/pricing">See pricing</a>

For pricing structured data:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Starter Plan",
  "offers": {
    "@type": "Offer",
    "price": "29",
    "priceCurrency": "USD",
    "priceSpecification": {
      "@type": "UnitPriceSpecification",
      "billingDuration": "P1M"
    }
  }
}
</script>

A4 — Standards Adoption

Checks adoption of emerging AI-specific standards and discovery mechanisms.

| Signal | |---| | robots.txt includes explicit rules for AI bots (GPTBot, ClaudeBot, PerplexityBot, etc.) | | robots.txt exists with User-agent: * (but no explicit AI bot rules) | | robots.txt includes a Content-Signal: directive | | sitemap.xml returns 200 with XML content type | | sitemap.xml returns 200 with non-XML content type | | Link response header includes a discovery relation (api-catalog, describedby, service-doc, alternate, canonical) | | /.well-known/mcp/server-card.json returns 200 | | /.well-known/api-catalog returns 200 | | /.well-known/oauth-authorization-server or /.well-known/openid-configuration returns 200 |

To improve — robots.txt:

User-agent: GPTBot
Allow: /

User-agent: ClaudeBot
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: Google-Extended
Allow: /

User-agent: *
Allow: /

Sitemap: https://example.com/sitemap.xml

To improve — MCP Server Card:

If your site exposes an MCP (Model Context Protocol) server, create /.well-known/mcp/server-card.json. See contentsignals.org for format details.

Need Help?

Can't find what you're looking for? Reach out and we'll help.