See what GPTBot, ClaudeBot and other crawlers get from a site: robots.txt checks and AI scans.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional for check_robots. Required for scans: Bearer wwai_... key from https://whywontai.com/dashboard
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Read a site's robots.txt and report, for 17 search and AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, PerplexityBot, Googlebot, Bingbot, CCBot, Google-Extended and more), whether each may fetch the home page and an optional path, and which rule decides. Uses RFC 9309 matching. Works without an API key (limited per day).
Site or page address, e.g. example.com or https://example.com/pricing
Optional path to check as well, e.g. /blog/post. Defaults to the path in url.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http ai-visibility https://mcp.whywontai.com/
Headers
Authorization (optional, not in the config above): Optional for check_robots. Required for scans: Bearer wwai_... key from https://whywontai.com/dashboardRead a site's robots.txt and report, for 17 search and AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, PerplexityBot, Googlebot, Bingbot, CCBot, Google-Extended and more), whether each may fetch the home page and an optional path, and which rule decides. Uses RFC 9309 matching. Works without an API key (limited per day).
| Argument | Type | Description |
|---|---|---|
| url* | string | Site or page address, e.g. example.com or https://example.com/pricing |
| path | string | Optional path to check as well, e.g. /blog/post. Defaults to the path in url. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Site or page address, e.g. example.com or https://example.com/pricing"
},
"path": {
"type": "string",
"description": "Optional path to check as well, e.g. /blog/post. Defaults to the path in url."
}
},
"additionalProperties": false
}Status, progress and summary of a scan: overall score and band, category scores, technical health, Domain Rating, rendering mode, platform and the top issues. Set wait_seconds (up to 25) to wait for a running scan to finish.
| Argument | Type | Description |
|---|---|---|
| scan_id* | string | scan_id from scan_site or list_scans |
| wait_seconds | integer | Wait up to this long for the scan to complete. Default 0. |
{
"type": "object",
"required": [
"scan_id"
],
"properties": {
"scan_id": {
"type": "string",
"description": "scan_id from scan_site or list_scans"
},
"wait_seconds": {
"type": "integer",
"maximum": 25,
"minimum": 0,
"description": "Wait up to this long for the scan to complete. Default 0."
}
},
"additionalProperties": false
}All issues found by a completed scan, most severe first, with details and example URLs. Filter by minimum severity or category.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Default 25. |
| scan_id* | string | |
| category | string | e.g. body_copy, crawl_render, intent_match, internal_linking, demand_capture, ai_citability |
| min_severity | string | Only issues at this severity or worse. |
{
"type": "object",
"required": [
"scan_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Default 25."
},
"scan_id": {
"type": "string"
},
"category": {
"type": "string",
"description": "e.g. body_copy, crawl_render, intent_match, internal_linking, demand_capture, ai_citability"
},
"min_severity": {
"enum": [
"critical",
"high",
"medium",
"low",
"info"
],
"type": "string",
"description": "Only issues at this severity or worse."
}
},
"additionalProperties": false
}The API key owner's recent scans, newest first, with score and status.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Default 10. |
| domain | string | Only scans of this domain. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Default 10."
},
"domain": {
"type": "string",
"description": "Only scans of this domain."
}
},
"additionalProperties": false
}Start a full scan of a website: each page is requested separately as Googlebot, Bingbot, GPTBot, ClaudeBot, PerplexityBot and CCBot, compared with a rendered browser view, and scored across six SEO, AEO and GEO categories, with technical health and Domain Rating. Uses the API key owner's plan quota. Returns a scan_id; then call get_scan with wait_seconds.
| Argument | Type | Description |
|---|---|---|
| url* | string | Site to scan, e.g. example.com |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Site to scan, e.g. example.com"
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 2, 2026.