Find out whether AI assistants can read your site, and what to fix.
More and more people find businesses through ChatGPT, Claude and Perplexity, and those assistants fetch pages with their own crawlers. A robots.txt line written years ago, a page that only renders with JavaScript or a missing llms.txt can keep a site out of their answers. The check reads the site the way those bots do and tells you which ones are blocked, what they can see, and the few fixes that matter.
What you get back
- score 0-100, grade A-F and a pass/fail list of 10 checks with points
- robots.txt verdict per AI crawler (allowed, partial, blocked) for 19 bots, grouped as search, assistant (user-fetch) and training, plus Content-Signal lines
- llms.txt and llms-full.txt, sitemap (URL count, last modified)
- home page: reachable without a browser, words of server-rendered text, needs-JavaScript flag, title and description, schema.org types, noindex/noai meta tags
- agent endpoints: MCP server card, A2A agent card, x402, OpenAPI, ai-plugin.json
- recommendations in plain language, most important first
Call it from your code or agent
Same input and the same JSON answer everywhere. You're only charged when the call succeeds. Want to see the output first?
Your key gives 20 free calls a day on this tool, then uses prepaid credit. No key yet? Send X-Exepal-Trial: 1 instead, or get one free at exepal.com/key.
curl -X POST https://api.exepal.com/v1/agent-ready \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_KEY" \
-d '{"domain":"exepal.com"}'Your key gives 20 free calls a day on this tool, then uses prepaid credit. No key yet? Send X-Exepal-Trial: 1 instead, or get one free at exepal.com/key.
const res = await fetch("https://api.exepal.com/v1/agent-ready", {
method: "POST",
headers: { "Content-Type": "application/json", Authorization: "Bearer YOUR_KEY" },
body: JSON.stringify({
"domain": "exepal.com"
}),
});
const data = await res.json();Your key gives 20 free calls a day on this tool, then uses prepaid credit. No key yet? Send X-Exepal-Trial: 1 instead, or get one free at exepal.com/key.
import requests
r = requests.post(
"https://api.exepal.com/v1/agent-ready",
headers={"Authorization": "Bearer YOUR_KEY"},
json={
"domain": "exepal.com"
},
timeout=120,
)
print(r.json())Add Exepal once and your assistant can call agent_ready by itself. More clients on the integrate page.
# Claude Code
claude mcp add --transport http exepal "https://api.exepal.com/mcp?key=YOUR_KEY"
# Cursor, Windsurf, Claude Desktop and most clients (mcp.json)
{
"mcpServers": {
"exepal": { "url": "https://api.exepal.com/mcp?key=YOUR_KEY" }
}
}No key at all: an agent with a wallet pays per call in USDC on Base. npm i @x402/fetch @x402/evm viem. How x402 works.
import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";
const pay = wrapFetchWithPaymentFromConfig(fetch, {
schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(privateKeyToAccount(process.env.WALLET_KEY)) }],
});
const res = await pay("https://api.exepal.com/v1/agent-ready", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"domain": "exepal.com"
}),
});Questions
- Does blocking GPTBot or ClaudeBot hurt my score?
- No. Those are training crawlers, and opting out of training is a fair choice. The score only drops when the search and assistant bots (OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User, Googlebot, Bingbot and others) are blocked, because those are the ones that fetch pages to answer users and cite sources.
- How is this different from the AI brand visibility tool?
- This checks whether assistants can reach and read the site at all, for $0.005. AI brand visibility asks the assistants buyer questions and measures whether they actually recommend the brand, from $0.50. Fix readiness first, then measure visibility.
- Does it follow robots.txt rules exactly?
- Yes, it follows RFC 9309: a group naming the bot wins over *, the longest matching rule wins, and Allow wins a tie. A firewall or bot-protection page that blocks non-browser clients shows up as an unreachable home page.