AI Crawler Access Check
ai_crawler_accessResolve any URL path against robots.txt to see which AI crawlers can fetch it. Get allowed/blocked status, citation-critical bots, and enforceability notes.
Instructions
Resolve every known AI/LLM crawler against a site's robots.txt and report which may fetch a given path. Covers OpenAI (GPTBot, OAI-SearchBot, ChatGPT-User, OAI-AdsBot), Anthropic (ClaudeBot, Claude-User, Claude-SearchBot), Google (Google-Extended, Googlebot, Google-CloudVertexBot), Perplexity, Apple, Meta, Amazon, Mistral, Common Crawl, ByteDance and others.
Three things this gets right that a naive robots.txt reader does not:
Training vs citation. Blocking GPTBot stops training; blocking OAI-SearchBot stops you being cited in ChatGPT search. Most people want the first, not the second. Blocked citation-critical bots are called out separately.
Which blocks are actually enforceable. Perplexity-User, ChatGPT-User and meta-externalfetcher are documented by their own vendors as ignoring or possibly ignoring robots.txt. A "blocked" verdict for those is advisory, and is reported as such rather than as a clean block.
Vendor quirks. Apple documents that when robots.txt has no Applebot group but does have a Googlebot group, Applebot follows the Googlebot rules — so the effective verdict differs from the literal one.
Each crawler also carries its provenance: whether the token comes from first-party vendor documentation or only from community aggregators. Vendors that publish no crawler token at all (xAI/Grok, Microsoft Copilot) are listed separately, because absence of a rule cannot be read as allowed or blocked.
Args:
site (string): domain or any URL on it.
path (string): path to test (default '/').
include_deprecated (boolean): include retired tokens (default false).
response_format ('markdown' | 'json'): output format (default 'markdown').
Returns: { crawlers[{token, vendor, purpose, allowed, via_wildcard, matched_rule, respects_robots_txt, compliance_note, provenance, quirk}], allowed_count, blocked_count, blocked_citation_critical[], unenforceable_blocks[], undocumented_vendors[], findings[] }.
Example: "Can ChatGPT and Perplexity crawl example.com?" -> ai_crawler_access(site="example.com").
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to test the rules against, e.g. '/blog/post'. Defaults to '/'. | / |
| site | Yes | Domain or any URL on it, e.g. 'example.com'. | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
| include_deprecated | No | Also resolve retired tokens (anthropic-ai, claude-web) for historical coverage. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| path | Yes | ||
| crawlers | Yes | ||
| findings | Yes | ||
| robots_found | Yes | ||
| allowed_count | Yes | ||
| blocked_count | Yes | ||
| undocumented_vendors | Yes | ||
| unenforceable_blocks | Yes | ||
| blocked_citation_critical | Yes |