> ## Documentation Index
> Fetch the complete documentation index at: https://docs.peec.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Agent readiness

> Audit whether AI agents can reach, find, read and act on your site, and see which fixes move you up a level.

**Agent Readiness** shows whether AI agents can successfully access and interact with your website. Peec AI requests your pages the same way AI agents do, checks the responses, and places your domain on a **five-level scale**, ranging from **Reachable** to **Transactable**. Each level has specific checks, and your domain must pass all scored checks at that level and every level below it to qualify.

You can find Agent Readiness under **Agent Analytics**, alongside Crawlability and Crawl Insights. While [Crawlability](https://docs.peec.ai/crawlability.md) checks your `robots.txt` file to identify which of the 40+ AI bots are allowed or restricted, Agent Readiness goes a step further. It evaluates your sitemap, rendered HTML, structured data, and additional machine-readable resources that AI agents rely on to access and interact with your website.

> [!NOTE]
>
> Results are based on Peec AI's own audit requests and do not reflect actual AI crawler activity. To see which AI bots requested your website and what they encountered, visit [Crawl Insights](https://docs.peec.ai/crawl-insights.md).

## Run an audit

Your project must have a primary domain to run an audit. If one hasn't been added yet, go to **Settings → Brands** to set it up.

Use the domain picker in the top-left corner to select a domain from your own brand or competitors, then click **Run audit**. If the domain has already been audited, select **Run again** to start a new audit. The header also displays the date of the domain's most recent audit.

You don't need to run audits manually. Peec AI automatically audits every tracked domain daily, so any domain that hasn't been audited in over 24 hours will be picked up in the next scheduled run. However, if you've recently made changes to your website, you can run an audit manually to check the results without waiting.

While an audit is running, its status is displayed on the page. If a previous report exists, it remains visible until the new audit is complete, so you can continue viewing your results. If an audit fails, you can retry it using the same button. Any ongoing audit will be cancelled if the project changes during the process.

> [!NOTE]
>
> Reports older than 90 days are no longer considered the latest audit. After this period, the domain will appear as though it has never been audited.

## What gets audited

The audit samples selected pages from your website rather than crawling the entire site. This includes your homepage, a representative page from each of your largest URL patterns, and a few pages linked from your homepage. Click **Pages audited** in the report to see the exact URLs included in the audit.

The audit selects pages from your sitemap, so if your sitemap isn't accessible, the audit may only cover your homepage. Page-level checks are based on the sampled pages. This means that if an issue affects multiple pages using the same template, it will be reported once as a representative issue for all pages using that template.

Most audit requests use `PeecAudit/1.0`. Peec AI also requests your homepage four additional times, using the published user-agent strings of **GPTBot, OAI-SearchBot, ClaudeBot, and PerplexityBot** to check whether your website treats them differently. These requests still originate from Peec AI's IP addresses, not from the AI bots themselves.

## Your level

| Level | Name | Question |
| - | - | - |
| 1 | Reachable | Can AI agents access your website? |
| 2 | Findable | Can AI agents discover your content? |
| 3 | Readable | Can AI agents read and extract your content? |
| 4 | Operable | Can AI agents take action on your website? |
| 5 | Transactable | Can AI agents make purchases? |

Levels are achieved in order. Your domain qualifies for the highest level where all scored checks at that level, and every level below it, pass.

For example, if your domain fails even one scored check at **Level 2**, it remains at **Level 1**, regardless of how many Level 3 checks it passes.

If your domain fails any scored check at **Level 1**, it won't qualify for any level and will be marked as **Turned away** in the report.

At the top of the report, you'll see your domain's current level and what it means for AI agents. Below, the **Unlock Level N** section highlights the scored checks preventing your domain from reaching the next level. Since these are the only checks that affect your level, prioritize fixing them first.

> [!NOTE]
>
> Levels 4 and 5 don't have scored checks yet, so **Level 3 is currently the highest level** a domain can achieve. Checks for Levels 4 and 5 still run and appear in your report, but they don't affect your domain's overall level.

## Reading a check

Each check is classified as either **Scored** or **Optional**.

* **Scored:** These checks determine your domain's level. You must pass every scored check at a level to qualify for it.
* **Optional:** These checks don't affect your level but are still worth addressing. Some cover essential website best practices, while others focus on emerging standards.

Each check has one of the following results:

| Result | What it means |
| - | - |
| Passing | The check found what it was looking for. |
| Missing | Nothing was found. |
| Failing | Found, but malformed enough to be unusable. |
| Partial | Found and usable, with something about it wrong. A scored check reads Failing instead. |
| Blocked | The audit was refused. |
| Restricted | Refused on a check you may have restricted on purpose. It doesn't change your level. |
| Not in place | An optional check for something you haven't published. |
| Not checked | The audit couldn't get a clear answer, usually because an earlier request failed. |
| Doesn't apply | The check doesn't apply to your site. |

Some checks evaluate settings you may have intentionally configured, such as blocking an AI agent in `robots.txt` or marking a page as `noindex`. Rather than treating these choices as mistakes, the audit explains their impact and suggests possible fixes without assuming changes are necessary.

Open any check to see which level it belongs to, why it matters, how to fix it, the evidence collected during the audit, and which pages failed. The impact of each failed check is displayed alongside it, showing either a specific page path, the number of affected URLs, or **All pages** for domain-wide issues.

When a check runs across multiple pages, the most severe result takes priority in this order: **Failing → Blocked → Missing → Passing → Not checked → Doesn't apply**.

This means a page the audit couldn't read won't override a page that passed the check.

## Compare with a competitor

Competitor domains in your project are also audited daily. Select a competitor from the picker to compare their **Agent Readiness** with yours, including your respective levels and the scored checks that only one of you passes.

The comparison is divided into two tabs:

* **Only you pass:** Scored checks your domain passes but your competitor fails.
* **Only they pass:** Scored checks your competitor passes but your domain fails. Use this tab to identify gaps and prioritize improvements.

Within each check, **Passing competitors** shows which audited competitor domains pass it, ordered by their visibility in AI answers, with the most visible appearing first.

## The checks

Checks are grouped by the level they contribute to. Use the **Needs work** filter to hide checks that are already passing and focus on those that need attention.

### Level 1: Reachable

**Can AI agents access your website?** These checks come first, as agents must be able to request and retrieve your pages before they can interact with anything else on your site.

Scored checks:

* **robots.txt is valid:** Peec AI requests `/robots.txt` and checks that it's a valid robots.txt file rather than HTML, with correctly formatted `User-agent`, `Allow`, and `Disallow` rules. Compliant crawlers read this file first to understand which pages they can access and where to find your sitemap. A server error (5xx) is worse than having no file, as compliant crawlers may treat it as a site-wide block.
* **AI agents aren't blocked:** Peec AI checks your `robots.txt` file for rules that block AI search or user-query agents. Training crawlers are intentionally excluded because blocking them doesn't prevent your website from appearing in AI-generated answers. Only restrictions affecting search or user-query agents count toward this check.

Also checked:

| Check | Why it matters |
| - | - |
| AI bot requests get through | Firewalls and bot-management rules can turn AI bots away before they see a page, even when your `robots.txt` allows them. A block can also mean your firewall correctly refuses requests that only claim to be a bot, so check which it is. |
| Content signals | Declares your search, AI-input, and AI-train preferences in `robots.txt`. It's Cloudflare's implementation for letting publishers direct how their content may be used, and automated systems may ignore it. |
| AIPREF Content usage | The IETF's draft standard for content usage preferences, meant to let publishers direct how their content is collected and processed for AI model development, deployment, and use. The directives may be ignored, and the standard may still evolve. |
| Web Bot Auth keys | Lets verified agents prove who they are instead of being guessed from a user agent string. Only relevant if you run your own bot or agent. |

### Level 2: Findable

**Can AI agents discover your content?** Once agents can access your website, the next step is ensuring they can find the rest of your pages and trust the information they retrieve.

Scored checks:

* **Pages allow indexing:** Peec AI checks the `meta` robots tag and `X-Robots-Tag` header for `noindex` or `none` directives, including those targeting specific bots. While `robots.txt` controls whether a page can be fetched, these directives determine whether it can be included in an index, potentially reducing its chances of appearing in AI-generated answers. However, they don't prevent the page from being used for AI model training.
* **Sitemap is declared and valid:** Peec AI looks for a `Sitemap:` directive in your `robots.txt` file, then requests and validates the sitemap it points to. If no sitemap is declared, it checks `/sitemap.xml` instead. While crawlers typically discover pages by following links, a sitemap helps them find pages that may not be accessible through your internal linking structure. This makes it easier for crawlers to discover your website's pages. Peec AI also uses your sitemap to select pages for the audit.
* **Missing pages return 404:** Peec AI requests a URL path that doesn't exist and checks whether the server returns a `404` or `410` status code. AI agents can construct URLs as well as follow existing links. If a missing page returns a `200` status code or redirects to the homepage, an agent may incorrectly assume the page exists and treat the returned information as its content.
* **Navigation works without JavaScript:** Peec AI compares the navigation links in your rendered website with those in the raw HTML sent by your server, requiring at least **80% overlap**. Crawlers that don't execute JavaScript can only follow links available in the server's HTML. This means navigation links added after JavaScript loads may not be visible to them.

Also checked:

| Check | Why it matters |
| - | - |
| Pages aren't soft 404s | A live page returning 200 whose content is an error or empty state stays indexed, so it can be retrieved and cited while holding nothing usable. |
| Sitemap dates are real | A real `lastmod` tells a crawler which pages changed since its last visit, so it recrawls those first. |
| One canonical URL | Tells an engine which URL to cite when the same page is reachable at several. |
| llms.txt | Lets you state your own summary and entry points in clean text at `/llms.txt`, rather than leaving an agent to infer both from your site structure. Still a community proposal, so it's reported rather than scored. |
| Agent-useful Link headers | Points an agent from any page to its machine-readable twin, so it doesn't have to guess the URL. |

### Level 3: Readable

**Can AI agents read and extract your content?** Finding a page is only the first step. These checks determine whether AI agents can access and extract the information on it.

Scored checks:

* **Content renders without JavaScript:** Peec AI compares the words in your server-rendered HTML with those displayed after JavaScript runs, requiring at least **80% overlap**. Most AI crawlers retrieve HTML without executing JavaScript. This means they may only see part of your page, while important information, such as pricing tables or product specifications, remains hidden. As a result, AI agents may generate answers based on incomplete information without recognizing that content is missing.
* **JSON-LD parses:** Peec AI parses every `application/ld+json` block on your page and checks that at least one includes a `schema.org` context. JSON-LD provides structured facts about your content, allowing AI agents to understand information directly rather than infer it from text. The markup must be valid to be parsed successfully. Even a small syntax error, such as a trailing comma, can invalidate an entire block. While the page may still display correctly and the markup remains in the source code, AI agents may have to rely on interpreting the page's text instead.
* **Organization identity:** Peec AI checks for an `Organization` or `WebSite` node containing a name and URL. AI answer engines and agents rely on entities to identify businesses, not just domain names. This structured data helps them understand which organization your website belongs to and distinguish your official website from resellers or third-party sites mentioning your brand.
* **Content sits in a main landmark:** Peec AI checks whether your page contains a `<main>` or `<article>` element, or an equivalent ARIA role. AI agents receive the entire page and need to identify where the main content is located. These landmarks help agents recognize the primary content directly, rather than relying on the page's layout or text density.

Also checked:

| Check | Why it matters |
| - | - |
| Pages allow snippets | Snippet rules set how much of a page an engine may quote. `nosnippet` and `max-snippet:0` stop it quoting you at all, even where it can still index you. |
| Heading hierarchy | Retrieval splits documents into chunks on headings. A clean hierarchy gives chunks that each cover one thing and carry their heading as context; without it the split falls back to arbitrary length. |
| Pages have a title | The one line stating what a page is, in a place every client reads. It usually travels with each chunk, marking which page a fragment came from. |
| Meta description | A short summary in the page head. Mostly used by search engines, with signs it reaches LLMs too through the snippet they receive alongside the title. |
| Open graph | Title, description, and image in a format built for sharing. It sits in the head, so it survives even when the page body needs JavaScript to render. |
| Page type is declared | The type is what tells an engine what the rest of your structured data describes. Product says to expect a price; Article an author and a date. |
| Language is declared | States the page's language rather than leaving it inferred, which is weak on pages that are mostly specs, names, and numbers. The common failure is one template hard-coded to `en` serving every market. |
| Images have alt text | Most agents never see your images, only the markup around them. Alt text is the only description of the image they get. |
| Articles carry dates | Much of what people ask is implicitly about now. Without a date, a page can't be preferred when a question wants something recent, or set aside when it's years out of date. |
| Links say where they go | An agent choosing where to go next has the link text and little else. A page where every link says "Learn more" forces it to guess, or to open pages to find out which is which. |
| Brand entity is linked | `sameAs` links your brand to the profiles engines already know, and the `@id` lets your other pages point at it, so the whole site resolves to one entity. |
| llms-full.txt | Your full text content in one file, so an agent takes a whole documentation set in one request with nothing to strip out of the HTML. An observed convention rather than part of the llms.txt specification. |
| Markdown on request | Provides agents with the same page content without the surrounding markup or navigation. This helps agents retrieve the full content without truncation while preserving the structure of tables and lists. |
| .md versions of pages | The same saving as markdown negotiation, at a fixed URL rather than behind a header. Agents guess `/page.md` far more often than they negotiate, so it reaches a different audience. |

### Level 4: Operable

**Can AI agents take action on your website?** These checks evaluate whether agents can go beyond reading your content and interact with your website through APIs, your MCP server, or your own agent.

These checks are currently **optional and not scored**, meaning they highlight opportunities for improvement but don't affect your domain's overall level.

| Check | Why it matters |
| - | - |
| API catalog | An agent that needs to act either drives your interface or calls your API. `/.well-known/api-catalog` is the one fixed path where it learns which APIs you expose, without a person reading your developer portal first. |
| MCP server card | Lets a client learn what your server is and where to connect before opening a session, so an IDE or agent pointed at your domain configures itself instead of someone pasting a URL into a config file. |
| A2A agent card | A2A is how one agent hands work to another. The card at `/.well-known/agent-card.json` lets an outside agent find yours, see which tasks it handles and how to authenticate, and delegate without anyone wiring the two together. |
| Agent skills index | A skill is written instructions for using your service correctly. An agent that loads one gets the task right the first time instead of working it out by trial and error, and the index is how it finds the ones you publish. |
| auth.md | OAuth assumes a developer registered an application with you in advance. An agent acting for a user at runtime hasn't. `/auth.md` describes how it registers, gets a credential tied to that user, and how you revoke it. |
| ARD capability manifest | One file at `/.well-known/ard.json` listing your agentic resources, whether that's an MCP server, an A2A agent, or something else, so a client finds all of it in one request instead of probing each convention separately. |
| OAuth discovery | Most of what an agent could usefully do on your site needs a signed-in account. This is how it learns where to authenticate and what it can ask for, before it holds any credential. Without it, the only route to an authenticated action is someone building an integration by hand. |
| OAuth protected resource | An agent that hits a protected endpoint without a token gets a 401 pointing here, learns which authorization server issues tokens and what scopes exist, completes the flow, and retries. Authentication becomes something a client works out rather than something a person configures. |

### Level 5: Transactable

**Can AI agents make purchases?** This level evaluates whether AI agents can complete transactions on your website. Currently, **no domain can achieve Level 5**, as there are no scored checks yet.

The available check only applies to websites with e-commerce signals, which Peec AI identifies through `Product` JSON-LD, a `product:price:amount` tag, Shopify or WooCommerce indicators, or a UCP `Link` header.

For websites without these signals, the check is marked as **Doesn't apply**.

| Check | Why it matters |
| - | - |
| Universal Commerce Protocol | When an AI agent makes a purchase on behalf of a customer, it needs a machine-readable way to complete checkout. Without a profile at `/.well-known/ucp`, the agent must either navigate your website's checkout interface or complete the purchase through another platform that supports it. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.