QUICK WINS
Focus on these checks for the biggest score improvement.
No WebMCP signals found.
WebMCP Declarative API
HIGHWebMCP is the W3C proposal for exposing website functionality directly to AI agents. Declarative tool annotations on forms let agents perform actions (search, purchase, book) without screen scraping.
Implement WebMCP to let AI agents interact with your site. Declarative: add tool-name and tool-description attributes to <form> elements. Imperative: use navigator.modelContext.provideContext() to register tools.
<form tool-name="search" tool-description="Search products by keyword">
<input type="text" name="query" tool-param-description="Search query">
<button type="submit">Search</button>
</form>
No A2A Agent Card found at /.well-known/agent-card.json or /.well-known/agent.json.
A2A Agent Card
HIGHGoogle's Agent-to-Agent (A2A) protocol enables autonomous agent-to-agent communication. An Agent Card at /.well-known/agent-card.json (new) or /.well-known/agent.json (legacy) advertises your agent's capabilities to other AI systems.
Create an A2A Agent Card at /.well-known/agent-card.json with required fields: name, description, url, version, capabilities, supportedInterfaces.
{
"name": "My Agent",
"description": "An AI assistant for customer support",
"url": "https://ooooooooooooooooooooooooooo.carrd.co/agent",
"version": "1.0.0",
"capabilities": {
"streaming": true,
"pushNotifications": false
},
"supportedInterfaces": [
{
"url": "https://ooooooooooooooooooooooooooo.carrd.co/mcp",
"transport": "http",
"protocol": "MCP/2025-06-18",
"protocolBinding": "MCP",
"protocolVersion": "2025-06-18"
}
],
"preferredTransport": "MCP",
"skills": [
{"id": "support", "name": "Customer Support"}
]
}
No valid JSON-LD blocks with schema.org @context found.
JSON-LD present
HIGHJSON-LD is the preferred format for structured data by Google and AI search engines. It tells AI systems exactly what your page is about using a standardized vocabulary.
Add at least one <script type="application/ld+json"> block with "@context": "schema.org" describing your organization or page content. This gives agents an unambiguous, machine-readable description of your page and makes it eligible for rich results in search.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Your Company",
"url": "https://ooooooooooooooooooooooooooo.carrd.co",
"logo": "https://ooooooooooooooooooooooooooo.carrd.co/logo.png"
}
</script>
DETAILED RESULTS
Page returned HTTP 200 - accessible to bots.
AI crawlers and agents must be able to fetch your pages via HTTP. If bots are blocked, AI systems cannot index or interact with your content.
Valid robots.txt found at ooooooooooooooooooooooooooo.carrd.co/robots.txt.
robots.txt is the universal standard for telling crawlers what they can access. AI crawlers like GPTBot, ClaudeBot and Googlebot-Extended check this file first before crawling your site.
Wildcard Allow: / in robots.txt permits all crawlers including AI agents.
Major AI systems use dedicated crawlers (GPTBot, ClaudeBot, Amazonbot). Explicit directives signal whether you want your content included in AI training and search results.
Valid XML sitemap found at ooooooooooooooooooooooooooo.carrd.co/sitemap.xml.
Sitemaps help AI crawlers discover all your pages efficiently. Without one, crawlers may miss important content or waste time discovering your site structure.
No valid llms.txt found at /llms.txt.
llms.txt
HIGHllms.txt provides a curated entry point for AI agents — coding assistants, browsing agents, and task automation tools that fetch specific pages to complete tasks. Unlike crawlers that scrape everything, agents benefit from a structured overview of your most important pages.
Create an /llms.txt file with a markdown heading and relevant URLs to help LLMs understand your site.
# /llms.txt
# ooooooooooooooooooooooooooo.carrd.co
> ooooooooooooooooooooooooooo.carrd.co - your site description here.
## Docs
- [Getting Started](https://ooooooooooooooooooooooooooo.carrd.co/docs/getting-started)
- [API Reference](https://ooooooooooooooooooooooooooo.carrd.co/docs/api)
## Optional
- [Blog](https://ooooooooooooooooooooooooooo.carrd.co/blog)
- [Changelog](https://ooooooooooooooooooooooooooo.carrd.co/changelog)
Server returned HTML (content-type: text/html) when Accept: text/markdown was requested. No content negotiation support detected.
Content negotiation (text/markdown)
HIGHAI agents fetch pages programmatically and benefit from machine-readable formats. Serving Markdown via Accept: text/markdown allows agents to consume structured content without HTML parsing overhead, saving up to 80% of tokens while preserving headings, links, and emphasis.
Serve Markdown when AI agents request it via `Accept: text/markdown`. Add a `Vary: Accept` header so CDN caches serve format-appropriate responses.
# Express.js middleware
app.get('*', (req, res, next) => {
if (req.accepts('text/markdown')) {
res.set('Content-Type', 'text/markdown')
res.set('Vary', 'Accept')
return res.sendFile(markdownPath(req.path))
}
next()
})
# Phoenix / Plug
case get_req_header(conn, "accept") do
[accept | _] when accept =~ "text/markdown" ->
conn
|> put_resp_content_type("text/markdown")
|> put_resp_header("vary", "Accept")
|> send_resp(200, markdown_for(conn.request_path))
|> halt()
_ -> conn
end
# Test: curl -H "Accept: text/markdown" https://ooooooooooooooooooooooooooo.carrd.co/
No restrictive meta robots or X-Robots-Tag directives found.
Meta robots tags and X-Robots-Tag headers control per-page indexing. Restrictive directives like noindex or noai prevent AI systems from using your content.
Only HTTP Last-Modified header found. This is a server-level signal - add content-level dates (dateModified in JSON-LD or article:modified_time meta tag) for stronger freshness signals.
Content freshness signals
MEDIUMAI systems prefer recent content, and several engines surface newer pages more often. Clear date signals (dateModified, article:modified_time) help AI determine your content's recency.
Add a dateModified property to your JSON-LD structured data or an article:modified_time meta tag, so AI systems can read when the content was last updated.
<!-- Option 1: JSON-LD (preferred) -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Your Article Title",
"datePublished": "2026-01-15T09:00:00Z",
"dateModified": "2026-02-28T14:30:00Z"
}
</script>
<!-- Option 2: Open Graph meta tags -->
<meta property="article:published_time" content="2026-01-15T09:00:00Z">
<meta property="article:modified_time" content="2026-02-28T14:30:00Z">
<!-- Option 3: HTML time element -->
<time datetime="2026-02-28T14:30:00Z">Updated February 28, 2026</time>
<!-- Server-level: Ensure Last-Modified header is sent -->
# Nginx: add_header Last-Modified $date_gmt;
# Apache: FileETag MTime (default)
No Link response header found on the root page. Agents must parse HTML to discover related resources.
Link response headers
HIGHLink response headers (RFC 8288) tell agents about machine-readable resources at request time. Cloudflare's isitagentready.com and other scanners explicitly look for `api-catalog`, `service-desc`, `service-doc`, and `sitemap` rels to enable agent discovery without parsing HTML.
Add an RFC 8288 Link response header advertising your OpenAPI document, API catalog, and sitemap so agents can discover them at request time.
# Nginx
add_header Link '</.well-known/api-catalog>; rel="api-catalog", </openapi.json>; rel="service-desc", </sitemap.xml>; rel="sitemap"' always;
# Phoenix / Plug
plug :put_link_headers
defp put_link_headers(conn, _opts) do
put_resp_header(
conn,
"link",
"</.well-known/api-catalog>; rel=\"api-catalog\", " <>
"</openapi.json>; rel=\"service-desc\", " <>
"</sitemap.xml>; rel=\"sitemap\""
)
end
# Test: curl -I https://ooooooooooooooooooooooooooo.carrd.co/ | grep -i '^link:'
No Content-Signal directive found in robots.txt. AI crawlers cannot read your usage preferences.
Content Signals (robots.txt)
HIGHContent Signals is a draft IETF standard (draft-romm-aipref-contentsignals) for declaring AI content usage preferences in robots.txt. Compliant crawlers respect signals like `ai-train=no` (do not train on this content) or `search=yes` (use for search). It is part of Cloudflare's agent web stack and gates Level 2 on their readiness scanner.
Add a `Content-Signal:` line to robots.txt declaring your AI training, search, and ai-input preferences.
# Add to /robots.txt:
Content-Signal: ai-train=yes, search=yes, ai-input=yes
No valid AGENTS.md found at /AGENTS.md.
AGENTS.md agent guide
HIGHAGENTS.md is an emerging root-level guide that tells AI agents what your site offers and how to interact with it: endpoints, tools, auth, and etiquette. Agents increasingly probe /AGENTS.md as part of their discovery sequence, alongside llms.txt and the /.well-known manifests.
Add an /AGENTS.md guide describing what your site offers agents and how to connect (MCP, API, tools, auth).
# /AGENTS.md
# ooooooooooooooooooooooooooo.carrd.co: Agent Guide
This site welcomes AI agents. No authentication is required for read access.
## How to connect
- MCP: https://ooooooooooooooooooooooooooo.carrd.co/mcp
- JSON API (OpenAPI): https://ooooooooooooooooooooooooooo.carrd.co/openapi.json
## Etiquette
- Identify your agent with a descriptive User-Agent.
Missing required agent content contract(s): pricing.md. Found: none.
Agent content contracts
HIGHAgents need concise, stable contracts for high-friction product questions before they can act safely. auth.md explains authentication flows and token handling. pricing.md explains plan and billing constraints without forcing agents to scrape marketing pages.
Add pricing.md at the site root with concise markdown that explains auth, pricing, limits, and support paths for agents.
# /auth.md
# Authentication for agents
Use OAuth 2.0 authorization code with PKCE. Request the minimum scopes needed for the task.
# /pricing.md
# Pricing for agents
Public read operations are free. Paid actions require an authenticated account and user confirmation.
No valid JSON-LD blocks with schema.org @context found.
JSON-LD present
HIGHJSON-LD is the preferred format for structured data by Google and AI search engines. It tells AI systems exactly what your page is about using a standardized vocabulary.
Add at least one <script type="application/ld+json"> block with "@context": "schema.org" describing your organization or page content. This gives agents an unambiguous, machine-readable description of your page and makes it eligible for rich results in search.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Your Company",
"url": "https://ooooooooooooooooooooooooooo.carrd.co",
"logo": "https://ooooooooooooooooooooooooooo.carrd.co/logo.png"
}
</script>
No Organization or WebSite schema type found in JSON-LD.
Organization / WebSite schema
HIGHOrganization and WebSite schemas establish your brand identity in the knowledge graph. AI systems use these to attribute content, display rich results, and build entity relationships.
Add a JSON-LD block with @type "Organization" or "WebSite" including at least "name" and "url" properties.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Your Company",
"url": "https://ooooooooooooooooooooooooooo.carrd.co",
"logo": "https://ooooooooooooooooooooooooooo.carrd.co/logo.png",
"sameAs": [
"https://twitter.com/yourcompany",
"https://linkedin.com/company/yourcompany"
]
}
</script>
No high-value schema types found. We check for 17 recognized types including Article, Product, SoftwareApplication, FAQPage, LocalBusiness, VideoObject, and more.
High-value schema types
HIGHCertain schema types (Article, Product, FAQPage, etc.) trigger rich results in Google and Bing and give agents typed, unambiguous entities to extract instead of inferring from prose. Their effect on AI-search citations is indirect, via the search indexes that feed products like ChatGPT and Perplexity.
Add JSON-LD markup for content-appropriate types like Article, Product, SoftwareApplication, FAQPage, LocalBusiness, Service, Event, or VideoObject so agents and search engines can identify your content type and extract structured facts reliably.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Your App Name",
"operatingSystem": "Web",
"applicationCategory": "BusinessApplication",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
}
}
</script>
No FAQPage schema found. Without it, agents have to infer question/answer pairs from your prose instead of reading them directly.
FAQPage schema
HIGHFAQPage schema exposes your questions and answers as discrete, machine-readable Q&A pairs, so an agent can lift a direct answer without parsing it out of prose, and the page stays eligible for FAQ rich results in search.
Add FAQPage structured data with Question/Answer pairs covering common queries about your product or service, so agents can extract direct answers and the page qualifies for FAQ rich results.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is AI agent readiness?",
"acceptedAnswer": {
"@type": "Answer",
"text": "AI agent readiness measures how well a website can be discovered, understood, and interacted with by AI systems."
}
},
{
"@type": "Question",
"name": "How do I improve my AI readiness score?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Add structured data, ensure clean semantic HTML, allow AI crawlers in robots.txt, and implement agent protocols."
}
}
]
}
</script>
No author attribution found. Agents and search engines cannot tell who stands behind this content or link it to a known author entity.
Author attribution
HIGHAuthor attribution gives agents and search engines a clear, machine-readable signal of who stands behind the content and links it to a known entity. This supports trust and provenance (E-E-A-T) and lets systems attribute the content to its author.
Add author information using JSON-LD (preferred), <meta name="author">, or <a rel="author">. Clear authorship is a trust and provenance signal for agents and search engines.
<!-- Option 1: JSON-LD author in Article (preferred) -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Your Article Title",
"author": {
"@type": "Person",
"name": "Jane Smith",
"url": "https://ooooooooooooooooooooooooooo.carrd.co/team/jane-smith"
}
}
</script>
<!-- Option 2: Meta tag -->
<meta name="author" content="Jane Smith">
<!-- Option 3: Linked author -->
<a rel="author" href="https://ooooooooooooooooooooooooooo.carrd.co/team/jane-smith">Jane Smith</a>
Body contains 6867 characters of visible text (server-side rendered).
Neither AI crawlers nor AI agents execute JavaScript. They parse raw HTML to understand page content. Without server-side rendering, your content is invisible to both training crawlers and task-completing agents.
No headings found on the page.
Heading hierarchy
HIGHAI agents use headings to build a content outline and determine topic hierarchy. A clear h1→h2→h3 structure helps AI systems extract and summarize your content accurately.
Add a clear <h1> heading and use sequential heading levels (h1 -> h2 -> h3). Proper heading hierarchy helps AI agents understand page structure and content importance. See developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements for heading element documentation.
<h1>Page Title - One Per Page</h1>
<h2>Main Section</h2>
<h3>Subsection</h3>
<h3>Subsection</h3>
<h2>Another Section</h2>
<h3>Subsection</h3>
No semantic HTML elements found (<header>, <nav>, <main>, <article>/<section>, <footer>).
Semantic HTML elements
HIGHAI agents navigate pages using the accessibility tree, not visual layout. Semantic elements like <main>, <nav>, and <article> provide structural meaning that AI systems rely on to parse content.
Add missing semantic elements: article or section, header, nav, main, footer. Semantic HTML helps AI agents identify page regions and navigate content structure. See developer.mozilla.org/en-US/docs/Glossary/Semantics#semantics_in_html for semantic HTML documentation.
<body>
<header>
<nav><!-- primary navigation --></nav>
</header>
<main>
<article>
<h1>Page Title</h1>
<section><!-- content section --></section>
</article>
</main>
<footer><!-- site footer --></footer>
</body>
1 landmark regions (main) with ARIA enhancements (aria-labelledby).
Accessible landmarks & ARIA
MEDIUMARIA landmarks help AI agents identify page regions (navigation, main content, footer). This is the same API used by screen readers and is increasingly used by AI browsing agents.
Use semantic HTML elements to define page regions: <header>, <nav>, <main>, <footer>. These provide implicit ARIA landmarks without needing explicit role attributes. See w3.org/WAI/ARIA/apg/patterns/landmarks for the W3C landmarks pattern.
<!-- Semantic elements provide implicit ARIA landmarks -->
<header><!-- banner landmark -->
<nav aria-label="Primary"><!-- navigation landmark -->
<a href="/" aria-current="page">Home</a>
</nav>
</header>
<main><!-- main landmark -->
<article>...</article>
</main>
<footer><!-- contentinfo landmark --></footer>
All 1 images have alt attributes.
AI agents cannot see images. Alt text is the only way for AI systems to understand image content, context, and relevance to the surrounding text.
Valid language attribute found: lang="en".
The lang attribute tells AI agents what language your content is in, enabling correct text processing, translation, and language-specific understanding.
All 50 sampled links have descriptive text.
AI agents use link text to understand navigation and discover related content. Generic text like 'click here' provides no context about where the link leads.
403 interactive elements with proper keyboard accessibility.
AI agents navigate pages using keyboard-style interactions via the accessibility tree. Positive tabindex values break natural focus order, and missing focusable elements on interactive widgets prevent AI agents from discovering and operating controls.
Page title is very short (7 chars): "𔗢᯽𔗢 𔗢᯽𔗢".
Document title
MEDIUMAI agents use the <title> element as the primary label when citing, indexing, or summarizing a page. A missing, empty, or generic title makes your page unidentifiable in AI-generated responses and search results.
Write a unique, descriptive <title> that clearly identifies the page content (10-70 characters). AI agents use the title as the primary label when citing your page. See developer.mozilla.org/en-US/docs/Web/HTML/Element/title for documentation.
<!-- Bad: generic or missing title -->
<title>Home</title>
<title>Untitled</title>
<!-- Good: descriptive, unique title -->
<title>AI Agent Readiness Scanner - IsAgentReady.com</title>
<title>How ChatGPT Selects Sources to Cite | Blog</title>
All 402 buttons have accessible names.
AI agents invoke buttons by their accessible name in the accessibility tree. Without a discernible name, an AI agent cannot identify what a button does, making form submission and page interaction impossible.
No aria-hidden="true" usage found - no risk of accessibility tree corruption.
aria-hidden="true" removes elements from the accessibility tree. When applied to the <body> or to focusable elements, it corrupts the tree that AI agents navigate, causing them to miss content or encounter invisible controls.
No WebMCP signals found.
WebMCP Declarative API
HIGHWebMCP is the W3C proposal for exposing website functionality directly to AI agents. Declarative tool annotations on forms let agents perform actions (search, purchase, book) without screen scraping.
Implement WebMCP to let AI agents interact with your site. Declarative: add tool-name and tool-description attributes to <form> elements. Imperative: use navigator.modelContext.provideContext() to register tools.
<form tool-name="search" tool-description="Search products by keyword">
<input type="text" name="query" tool-param-description="Search query">
<button type="submit">Search</button>
</form>
No WebMCP manifest found at /.well-known/webmcp or /.well-known/webmcp.json.
WebMCP manifest
HIGHA WebMCP manifest at /.well-known/webmcp.json enables pre-navigation discovery - AI agents can learn what tools your site offers before even loading the page.
Create a WebMCP manifest at /.well-known/webmcp.json with your tool definitions to enable pre-navigation agent discovery. Discovery is an active area of discussion in the WebMCP spec.
{
"spec": "webmcp/0.1",
"tools": [
{
"name": "search",
"description": "Search products",
"url": "/search",
"method": "GET",
"parameters": [
{"name": "q", "type": "string", "description": "Search query"}
]
}
]
}
No A2A Agent Card found at /.well-known/agent-card.json or /.well-known/agent.json.
A2A Agent Card
HIGHGoogle's Agent-to-Agent (A2A) protocol enables autonomous agent-to-agent communication. An Agent Card at /.well-known/agent-card.json (new) or /.well-known/agent.json (legacy) advertises your agent's capabilities to other AI systems.
Create an A2A Agent Card at /.well-known/agent-card.json with required fields: name, description, url, version, capabilities, supportedInterfaces.
{
"name": "My Agent",
"description": "An AI assistant for customer support",
"url": "https://ooooooooooooooooooooooooooo.carrd.co/agent",
"version": "1.0.0",
"capabilities": {
"streaming": true,
"pushNotifications": false
},
"supportedInterfaces": [
{
"url": "https://ooooooooooooooooooooooooooo.carrd.co/mcp",
"transport": "http",
"protocol": "MCP/2025-06-18",
"protocolBinding": "MCP",
"protocolVersion": "2025-06-18"
}
],
"preferredTransport": "MCP",
"skills": [
{"id": "support", "name": "Customer Support"}
]
}
No MCP discovery document found at /.well-known/mcp.json, /.well-known/mcp/server-card.json, or /.well-known/mcp/server-cards.json.
MCP Discovery
HIGHThe Model Context Protocol (MCP) by Anthropic is the standard for connecting AI assistants to external tools and data. A discovery document lets AI systems find and connect to your MCP server. SEP-1649 (modelcontextprotocol PR 2127) defines the new server-card.json schema with serverInfo, transport, and capabilities fields.
Create an MCP server card at /.well-known/mcp/server-card.json following SEP-1649 (serverInfo.name, transport, capabilities).
{
"$schema": "https://modelcontextprotocol.io/schema/server-card.json",
"name": "My Server",
"serverInfo": {"name": "My Server", "version": "1.0.0"},
"transport": {"type": "streamable-http", "endpoint": "https://ooooooooooooooooooooooooooo.carrd.co/mcp"},
"capabilities": {"tools": {"listChanged": false}}
}
No OpenAPI or Swagger documentation found.
OpenAPI / API documentation
HIGHOpenAPI specifications let AI agents understand and call your API programmatically. AI coding assistants and agent frameworks use OpenAPI to generate correct API calls automatically.
Create an OpenAPI 3.x specification and serve it at /openapi.json or /.well-known/openapi to enable AI agents to discover and use your API.
{
"openapi": "3.1.0",
"info": {
"title": "My API",
"version": "1.0.0"
},
"paths": {
"/api/search": {
"get": {
"summary": "Search items",
"parameters": [
{"name": "q", "in": "query", "schema": {"type": "string"}}
]
}
}
}
}
No agents.json found at /.well-known/agents.json or /agents.json.
agents.json
HIGHagents.json provides a directory of AI agent endpoints on your site. It helps agent orchestration systems discover and connect to your available AI services.
Create an agents.json file at /.well-known/agents.json with your agent endpoint definitions.
{
"agents": [
{
"name": "Support Agent",
"description": "Handles customer inquiries",
"url": "https://ooooooooooooooooooooooooooo.carrd.co/agents/support",
"protocol": "a2a"
}
]
}
0/6 interactive surfaces covered by WebMCP tool annotations (0%). Forms: 0/0, Search: 0/0, Actions: 0/6, Filters: 0/0.
Interactive Surface Coverage
HIGHHigher coverage of interactive surfaces with WebMCP annotations means AI agents can perform more actions on your site without screen scraping or brittle heuristics.
Add tool-name and tool-description attributes to uncovered forms and interactive elements to increase agent coverage.
No API Catalog found at /.well-known/api-catalog.
API Catalog (RFC 9727)
HIGHAPI Catalog (RFC 9727 + RFC 9264 Linkset) gives agents a single discovery endpoint listing every API the site offers, with machine-readable links to OpenAPI specs (service-desc), human docs (service-doc), and health endpoints. Cloudflare's isitagentready.com scores this as part of Level 3 readiness.
Serve an RFC 9727 API Catalog at /.well-known/api-catalog with a linkset of service-desc, service-doc, and status links.
{
"linkset": [
{
"anchor": "https://example.com/api/v1",
"service-desc": [
{"href": "https://example.com/openapi.json", "type": "application/openapi+json"}
],
"service-doc": [
{"href": "https://example.com/docs", "type": "text/html"}
],
"status": [
{"href": "https://example.com/health", "type": "application/json"}
]
}
]
}
No Agent Skills index found at /.well-known/agent-skills/index.json or /.well-known/skills/index.json.
Agent Skills index
HIGHAgent Skills Discovery (cloudflare/agent-skills-discovery-rfc v0.2.0) lets sites publish a directory of agent-callable skills with SHA-256 verifiable SKILL.md content. Cloudflare's isitagentready.com checks this for Level 4-5 readiness.
Publish an Agent Skills index per cloudflare/agent-skills-discovery-rfc v0.2.0 with top-level "$schema" and each skill's name, type (skill-md or archive), description, url, and digest (sha256:{64-hex}).
{
"$schema": "https://raw.githubusercontent.com/cloudflare/agent-skills-discovery-rfc/main/schema/index.schema.json",
"version": "0.2.0",
"skills": [
{
"name": "search-products",
"type": "skill-md",
"description": "Search the product catalog",
"url": "https://example.com/.well-known/agent-skills/search-products/SKILL.md",
"digest": "sha256:abc123..."
}
]
}
Site is served over HTTPS with a valid SSL certificate.
HTTPS is the baseline for secure communication. AI agents and crawlers refuse to interact with insecure sites, and browsers mark HTTP sites as unsafe.
Strict-Transport-Security header is not set. Note: sites on the HSTS preload list may not send this header but are still protected via browser preloading.
HSTS header
HIGHHSTS prevents protocol downgrade attacks by telling browsers to always use HTTPS. AI agents that follow redirects benefit from HSTS as it eliminates insecure initial connections.
Add the Strict-Transport-Security header with max-age=31536000 (1 year) and includeSubDomains. If your site is on the HSTS preload list (hstspreload.org), the header is still recommended for first-visit protection.
# Nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
# Apache (.htaccess)
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Content-Security-Policy header is not set.
Content-Security-Policy
HIGHContent-Security-Policy prevents XSS and injection attacks. For AI agents that interact with your site, CSP ensures the page content hasn't been tampered with by malicious scripts.
Add a Content-Security-Policy header with directives like default-src, script-src, and style-src.
# Nginx
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'" always;
# Apache (.htaccess)
Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'"
X-Content-Type-Options header is not set.
X-Content-Type-Options
HIGHThis header prevents MIME type sniffing attacks. It ensures browsers and HTTP clients interpret your content exactly as intended, reducing the risk of content injection.
Add the header X-Content-Type-Options: nosniff to prevent MIME type sniffing.
# Nginx
add_header X-Content-Type-Options "nosniff" always;
# Apache (.htaccess)
Header always set X-Content-Type-Options "nosniff"
No frame protection found (neither X-Frame-Options nor CSP frame-ancestors).
Frame protection
HIGHFrame protection prevents your site from being embedded in malicious iframes (clickjacking). This protects users who interact with your site through AI-suggested links.
Add X-Frame-Options: DENY (or SAMEORIGIN) or use CSP frame-ancestors directive.
# Nginx
add_header X-Frame-Options "DENY" always;
# Or via CSP:
add_header Content-Security-Policy "frame-ancestors 'none'" always;
# Apache (.htaccess)
Header always set X-Frame-Options "DENY"
# Or via CSP:
Header always set Content-Security-Policy "frame-ancestors 'none'"
No Access-Control-Allow-Origin header detected. The browser's same-origin policy is enforced by default - this is the most secure configuration for websites that don't expose cross-origin APIs.
CORS controls which domains can make cross-origin requests to your site. Without a CORS header, browsers enforce the same-origin policy - the most secure default. Only add CORS headers when you intentionally need to allow cross-origin API access.
Referrer-Policy header is not set.
Referrer-Policy
HIGHReferrer-Policy controls what URL information is shared when users navigate away from your site. A strict policy protects user privacy and prevents leaking sensitive URL parameters.
Add a Referrer-Policy header (e.g., strict-origin-when-cross-origin or no-referrer).
# Nginx
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
# Apache (.htaccess)
Header always set Referrer-Policy "strict-origin-when-cross-origin"
No AI training protections detected. Your content may be freely used for AI model training.
Check timed out.
No training crawlers are blocked in robots.txt. All known AI training bots can access your content.
No TDMRep file found at /.well-known/tdmrep.json. The TDM Reservation Protocol (W3C) lets you declare whether you reserve text and data mining rights. See w3.org/community/reports/tdmrep/CG-FINAL-tdmrep-20240510 for the specification.
No ai.txt file found. ai.txt lets you declare AI usage preferences for your content.
No Web Bot Auth signature key directory found. Bots cannot prove their identity to origins via signed HTTP requests.
SCAN AND FIX FROM YOUR EDITOR
Install our MCP server to scan any website from your terminal. Pair it with AI agent skills to fix failing checks automatically.
- Scan any website directly from your terminal
- Fix failing checks with AI agent skills
- Re-scan to verify improvements
claude mcp add isagentready-mcp -- npx -y isagentready-mcp
codex mcp add isagentready-mcp -- npx -y isagentready-mcp
gemini mcp add isagentready-mcp -- npx -y isagentready-mcp
docker run -i --rm ghcr.io/bartwaardenburg/isagentready-mcp
/plugin marketplace add bartwaardenburg/isagentready-skills
git clone https://github.com/bartwaardenburg/isagentready-skills.git ~/.cursor/skills/isagentready-skills
git clone https://github.com/bartwaardenburg/isagentready-skills.git ~/.agents/skills/isagentready-skills
git clone https://github.com/bartwaardenburg/isagentready-skills.git ~/.codeium/windsurf/skills/isagentready-skills
git clone https://github.com/bartwaardenburg/isagentready-skills.git ~/.agents/skills/isagentready-skills
gemini skills install https://github.com/bartwaardenburg/isagentready-skills.git
git clone https://github.com/bartwaardenburg/isagentready-skills.git ~/.config/agents/skills/isagentready-skills
GET YOUR DETAILED REPORT
Receive a personalized report with actionable insights for improving your website's AI agent readiness.
- Detailed score breakdown per category
- Prioritized improvement recommendations
- Step-by-step implementation guide
FROM THE BLOG
Deep dives into AI agent protocols, citation mechanics, and optimization strategies.
Does Schema Markup Get You Cited by AI? What the Data Actually Shows
A 2026 Ahrefs study tracked 1,885 pages adding schema markup, and AI-search citations barely moved. We separate correlation from causation: what structured data is actually proven to do, what really drives citations, and where to spend your effort.
The Responsive Design Moment for AI Agents
The web is going through the same shift it went through with mobile. First separate m.dot sites, then responsive convergence. AI agent readiness is following the same arc: separate agent APIs today, one adaptive content layer tomorrow. We trace the parallels, the data, and what comes after convergence — the personal LLM layer.
Content Negotiation for AI Agents: Why Sentry Serves Markdown Over HTML
Sentry co-founder David Cramer shows how content negotiation — a 25-year-old HTTP standard — saves AI agents 80% of tokens. We break down the implementation: Accept headers, markdown delivery, authenticated page redirects, and what this means for every website preparing for agent traffic.
EXPLORE MORE
Most websites score below average. Find out where you stand.