AI agent readiness

AI agents increasingly visit sites instead of people β€” reading, comparing, checking out. Enter a domain and in about ten seconds see what an agent finds on yours, what it misses, and how to fix it.

No sign-up21 checksReady-made implementation prompts
We check 21 signals: robots.txt, Content Signals, llms.txt, sitemap, markdown output and more. A domain is enough β€” https is added automatically.
Free, no sign-up Β· 60 of 60 checks left today

What we check

Start hereA few lines in two service files: who you are, where you let agents go, and what they may do with your words.Step 1
Allow or refuse AI training on your texts
What this gives you

robots.txt answers exactly one question: may a bot open this page. But "may it read" and "may it train a model on this" are entirely different things, and you have never answered the second one. Here you answer three questions separately: may models be trained on your content, may you appear in search, and may your text be retold inside chatbot answers. The usual business call: allow search and answers (they bring customers), refuse training.

What you have now

β€”

What to do

Add a line to robots.txt like "Content-Signal: ai-train=no, search=yes, ai-input=yes". Here ai-train is model training, search is appearing in search, ai-input is your text being retold in an AI answer. yes allows, no refuses. The line applies to the User-agent block it sits in.

Serve language models text without the markup
What this gives you

To a person your page is a menu, banners, pop-ups and some text in the middle. An AI assistant receives all of it mixed together and has to guess which part matters. It guesses wrong exactly where it costs most: it takes the struck-through price, or the heading of the block next door. Serve the same material as plain text on request and the ambiguity disappears. Ordinary visitors notice nothing β€” they still get the normal page.

What you have now

β€”

What to do

Teach the server to tell who is asking. When a request carries "Accept: text/markdown", return the text version and label it text/markdown. Always add "Vary: Accept" β€” otherwise a cache will one day hand the bare text to a live visitor.

Crawl rules β€” the robots.txt file
What this gives you

This is the first thing any bot asks for. Until the file exists you control nothing: staging sections, service pages and drafts are open to everyone. A particular nuisance is serving an ordinary error page at this address instead of a file β€” the bot reads the rules as broken and crawls everything, as though you had forbidden nothing at all.

What you have now

β€”

What to do

Put robots.txt at the site root so it opens at yoursite.com/robots.txt. Inside: User-agent blocks with Allow and Disallow rules, plus a Sitemap line with the full sitemap address. Serve it as plain text. Check that unknown addresses return a 404 rather than quietly serving the homepage.

Sitemap β€” the list of all your pages
What this gives you

A sitemap is a ready-made inventory of everything you have. Without one an assistant follows links and sees only what someone already linked to. New things suffer most: a fresh product, a recent article, a page buried one link deep in a menu. Formally they are on the site; for the assistant they do not exist.

What you have now

β€”

What to do

Create sitemap.xml listing all public pages and declare its full address in robots.txt with a "Sitemap:" line. Past 50,000 pages, split it into several files behind one index. Nearly every CMS can do this for you β€” often it is a setting or a plugin away.

Separate rules for AI bots
What this gives you

robots.txt usually holds a single rule "for everyone" β€” the asterisk. It catches the search engine, the image scraper and the AI bot all at once. Which means you never made a decision about AI: one happened by default. And the decisions differ. A bot that brings you customers out of a chatbot is welcome. A bot hoovering up your catalog to train someone else's model, less so. You can only tell them apart by naming them β€” and those names the vendors do honour.

What you have now

β€”

What to do

Add separate User-agent blocks to robots.txt for specific bots with their own rules. The main ones: GPTBot (OpenAI training), OAI-SearchBot and ChatGPT-User (showing and referring from ChatGPT), ClaudeBot, Google-Extended (Google training), PerplexityBot, CCBot. Keep the asterisk rule last as a fallback.

Preparing the siteHelping an assistant find your data and understand how to open an account on a customer's behalf.Step 2
A list of your programmatic services
What this gives you

This one matters only if you have a public API β€” a way to get your data programmatically. Then an assistant needs to learn it exists and where its description lives. Otherwise it scrapes data off pages while an exact, ready-made route sits right there. No API? Skip this without a second thought.

What you have now

β€”

What to do

Publish a small file at /.well-known/api-catalog with links to your API description and its documentation.

Pointers to your data in the server response
What this gives you

An assistant does not always download the whole page β€” often it asks only for the service part of the response, where the server briefly describes itself. Put pointers to what matters there β€” a description, a catalog, a feed β€” and even those who never parse the page will see them. It is the cheapest way to say: look over here.

What you have now

β€”

What to do

Configure the homepage to send Link headers pointing at what matters: describedby (description), service-desc (API description), alternate (other versions), api-catalog. This is done at the web server level, no application code involved. Plumbing links like stylesheets and icons do not count β€” everyone has those and they tell an assistant nothing.

Instructions for an assistant: how to register and sign in
What this gives you

This matters if you have customer accounts and an assistant should act inside one on a customer's behalf: check orders, renew a service, download documents. A normal help page will not do β€” it is written for a human and scattered across sections. What is needed is a short text at a fixed address saying, point by point: register like this, sign in like that, these are the limits.

What you have now

β€”

What to do

Put an auth.md file at the site root. In plain text describe: how to register, how to sign in, whether access keys are needed and where to get them, how many requests per minute are acceptable. Check that the file is served as text and not as a styled page.

Full participationWhen an assistant does not just read the site but signs in and gets things done instead of a person.Step 3
Automatic sign-in configuration
What this gives you

The machine-readable sequel to the previous item. For an assistant to sign in on a customer's behalf it needs the technical addresses of your login system. Either a developer types them in by hand for every integration, or you publish one file and the connection configures itself. Only worth doing if you genuinely have a login system β€” the file alone opens nothing.

What you have now

β€”

What to do

Publish /.well-known/oauth-authorization-server (or openid-configuration) with your login system's addresses and the required issuer field.

Access rules for restricted areas
What this gives you

An assistant should know up front which pass a restricted area needs. Otherwise it works it out by trial: knocks, gets refused, tries another way. For you that is wasted load and odd spikes of rejections in the logs; for the customer, an assistant that "somehow cannot get in".

What you have now

β€”

What to do

Publish /.well-known/oauth-protected-resource listing which areas are restricted and which passes work for them. Pairs with the previous item.

A calling card for your own AI assistant
What this gives you

This item and the next two matter only if you run your own AI assistant on the site β€” a chatbot, a consultant, a product picker. Then other assistants need to find it and understand what it can be asked. The card is its profile: what it is called, what it does, where to reach it. No assistant of your own? Skip all three.

What you have now

β€”

What to do

Publish /.well-known/agent-card.json with your assistant's name, description, capability list and contact address.

The list of jobs your assistant can do
What this gives you

The card says who your assistant is. The skills list says what it concretely does: pick a product, quote shipping, process a return. Without it another assistant sees a counterpart but has no idea what to come to it with β€” so it does not come.

What you have now

β€”

What to do

Publish a list of skills: each with a name, a clear description, and the data needed to call it.

Direct access to your functions for language models
What this gives you

The deepest level: instead of reading your site, a model calls your functions directly β€” "find the product", "check stock", "create a request". The data is always right because it comes from your system rather than being read off a page. This is real development work: a running server is required, a file is not enough.

What you have now

β€”

What to do

Stand up an MCP server with the functions you want to expose and publish its card at /.well-known/mcp.json.

Signatures for the bots you run
What this gives you

This item is not about who visits you but about who you send out: your own scraper, price monitor, aggregator. Publishing your keys lets other sites confirm a request really came from you rather than from someone hiding behind your name. If you run no bots, this does not apply β€” it is not a shortcoming.

What you have now

β€”

What to do

Publish a key set at /.well-known/http-message-signatures-directory and sign your bots' outbound requests.

Your site's actions as buttons for an assistantComing soon
What this gives you

An assistant working inside your customer's browser currently pokes at your markup blindly: hunting for the search field, guessing at the button. Declare your site's actions explicitly β€” "search", "filter", "add to cart" β€” and it starts using the site deliberately instead of guessing clicks.

What you have now

β€”

What to do

Declare the main interface actions as tools for an assistant. Start with search and filtering β€” the most common flows.

Publishing assistants through your domain settings
What this gives you

A way to announce your AI assistants in the domain settings so they can be found before anyone visits the site. Faster than a file, with one condition: without a signed domain, anyone on the path of the request can forge that record. So signing is not a nicety here, it is part of the job.

What you have now

β€”

What to do

Add TXT records with your assistants' addresses in your domain settings and turn on DNSSEC β€” the domain signature. Requires access to your domain control panel.

SellingSo an assistant can see your products and prices, pay for access, and place an order.Optional
Your catalog for shopping assistants
What this gives you

When a customer asks an assistant to "find where it is cheaper", it walks the shops collecting prices off pages. That is slow, and it gets things wrong exactly where it must not: it takes the struck-through price, or misses that the item is out of stock. An open catalog fixes that β€” the assistant receives your range, prices and stock ready-made, straight from your system.

What you have now

β€”

What to do

Publish /.well-known/acp.json with your catalog addresses and the rules for using it. Only meaningful with a live product database behind it.

Letting an assistant place the order
What this gives you

The step after the catalog: the assistant not only found the product but carried it through to an order. The hard question here is not technical but one of trust β€” who confirms the purchase and when, so a customer is never charged for something they did not ask for. This is declared not as its own file but as a section inside your assistant's card.

What you have now

β€”

What to do

Add a payment section to the assistant card and state your role β€” merchant, for example. You need the card itself first.

Payment with no human present
What this gives you

Fits if what you sell is access rather than goods: exports, calculations, calls to your service. The assistant invokes the function and pays for it on the spot β€” nobody is present at the moment of the transaction. Useful when the price is pennies per call and issuing an invoice by hand makes no sense.

What you have now

β€”

What to do

Describe the payment terms in your API's technical description and install payment handling. You will need to connect it to your payment provider.

Paid access to your material
What this gives you

If some of your material is paid, an assistant has exactly two options: leave empty-handed, or look for a way around. Both are bad. A third appears once there is a clear rule: here is the price, here is how to pay, here is what opens afterwards. Then gated content starts earning from this side too.

What you have now

β€”

What to do

Publish /.well-known/ucp.json with your access terms and payment flow. It needs working payment collection behind it, or it stays a statement of intent.

Charging for each API call
What this gives you

There is no description file here β€” the rule lives in how the server behaves. To a paid request it answers "payment required", the assistant pays and repeats the request. Fits when the price is per call rather than per month: one-off calculations, lookups, exports on demand.

What you have now

β€”

What to do

Install a handler that answers protected addresses with status 402 and a payment header. You will need a facilitator address and a wallet.

Standard

How it works

  1. 1

    Enter a domain

    A full URL works too β€” we strip the extra parts ourselves.

  2. 2

    Wait for the scan

    We probe the site and its DNS; this usually takes about ten seconds.

  3. 3

    Work through the results

    Expand any item for why it matters, what we found, and how to implement it.

What the audit shows

Permissions on your content

robots.txt only answers "may you fetch this page". We check whether Content Signals are declared β€” separate permissions for model training, search, and use inside AI answers.

Rules for specific AI bots

We check whether GPTBot, ClaudeBot, Google-Extended, PerplexityBot and others are named explicitly, or whether everything is left to a wildcard rule that decides nothing about AI.

Clean text instead of markup

We request the homepage with Accept: text/markdown and show whether an agent receives readable prose or the same pile of tags it has to dig through.

Discovery documents

We walk the /.well-known paths: API catalog, agent card, skills index, MCP server, OAuth metadata. We parse the JSON and verify the required fields, not just the status code.

An honest check, not a 200

Single-page apps answer 200 for any path. A document only counts when it parses and carries the spec's fields β€” otherwise every SPA would score green across the board.

You can see how we checked

Every item expands into the audit trace: which address we requested, what came back, what we parsed, and why we concluded what we did.

A prompt for your coding agent

Each recommendation ships with a ready-made task: copy it, hand it to your coding agent, and re-scan here to confirm the fix landed.

Commerce only when it applies

If the site is not a store, the payment protocols are shown for reference and never count against the score. There is no sense scolding a blog for lacking an agent checkout.

Frequently asked questions

Every SEO tool in one place

Audits, conversion, rank tracking and AI visibility β€” the whole SiteVisor toolkit at hand.

Try for free

Ready for the full toolkit?

Free checks, rank tracking and AI visibility β€” start free and add paid features as you grow.