AISeeWhy API and MCP server
Send one POST with a URL to https://api.aiseewhy.com/v1/audit and get a JSON report: findings with priority,
evidence and ready-to-paste fixes, in any of 30 languages. AI agents connect to https://api.aiseewhy.com/mcp over MCP and call
audit_url. Without a key you get five audits per hour.
How do I call the API?
curl -s https://api.aiseewhy.com/v1/audit \
-H 'content-type: application/json' \
-d '{"url": "https://example.com/pricing", "language": "en", "markdown": false}'
Fields: url (required; https:// is added when missing), language (report
language code, default en), bots (optional list of crawler names), markdown
(add a Markdown report). With a key, send x-api-key: …; sitemap batches use
POST /v1/sitemap with {"sitemap_url": …, "max_urls": 50} and need a key.
The OpenAPI description is at https://api.aiseewhy.com/v1/docs.
How do I connect an AI agent over MCP?
Add a remote MCP server with the URL https://api.aiseewhy.com/mcp (streamable HTTP). Tools: audit_url,
audit_sitemap (up to 10 pages) and explain_finding. The
Model Context Protocol documentation explains how clients add servers.
{
"mcpServers": {
"aiseewhy": { "type": "http", "url": "https://api.aiseewhy.com/mcp" }
}
}
What does a finding look like?
{
"id": "access.blocked", "priority": "P1", "bot": "OAI-SearchBot", "bot_class": "search",
"title": "OAI-SearchBot is blocked",
"evidence": { "status": 403, "control_status": 200, "waf": "cloudflare" },
"fixes": [ { "kind": "cloudflare", "title": "Let OAI-SearchBot through in Cloudflare", "body": "…" } ]
}
Priorities: P1 means AI answers cannot read or cite the page, P2 is important, P3 is nice to have or a policy choice (for example, blocking a training crawler). robots.txt is read as defined in RFC 9309.
What are the limits?
| Access | Limit |
|---|---|
| No key (website, API, MCP) | 5 audits per hour and 20 per day per network |
| API key | No per-network limit; sitemap batches up to 50 URLs |
| Batch audits by sitemap | Up to 5,000 URLs per run, paid per audited URL |
Requests to private or internal addresses are refused. Pages that cannot be audited are reported with a
fetch.error or fetch.status finding.