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.
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
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.
β
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
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.
β
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
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.
β
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
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.
β
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
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.
β
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
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.
β
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
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.
β
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
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.
β
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
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.
β
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
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".
β
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
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.
β
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
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.
β
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
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.
β
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
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.
β
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
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.
β
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
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.
β
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
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.
β
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
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.
β
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
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.
β
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
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.
β
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
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.
β
Install a handler that answers protected addresses with status 402 and a payment header. You will need a facilitator address and a wallet.
How it works
- 1
Enter a domain
A full URL works too β we strip the extra parts ourselves.
- 2
Wait for the scan
We probe the site and its DNS; this usually takes about ten seconds.
- 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.
Technical SEO
Indexing, crawlability, markup
PDF tools
Convert and edit PDF files
Search visibility
Search and AI answer visibility
Ready for the full toolkit?
Free checks, rank tracking and AI visibility β start free and add paid features as you grow.