Lint your website for AI search readiness. Audit AI crawler access, llms.txt, structured data and citability for ChatGPT, Perplexity, Claude & co.
Five tools with complete schemas and descriptions. Naming is clear and verb-driven (audit_url, generate_llms_txt, list_rules, list_ai_bots, compare_urls). Descriptions are substantive (100 - 200 chars), explaining what each tool does and when to use it. All parameters have types and descriptions. Output schemas are documented in code. Error handling uses toolError() wrapper. Main gaps: no enum constraints on category/only/ignore parameters; no explicit pagination guidance for list_rules and list_ai_bots; descriptions could mention prerequisites or dependencies more explicitly.
Audit a URL for AI-search readiness: GEO score (0–100), grade, per-category scores and findings (AI crawler access, llms.txt, structured data, citability, technical).
Audit two URLs and compare them: score delta plus findings added in B and resolved vs A.
Crawl a site and generate a spec-conformant llms.txt document listing its pages, grouped by top-level section.
List known AI crawler/fetcher user-agent tokens: vendor, purpose (training/search/user-fetch/mixed), documented robots.txt behavior, retired flag.
List geolint audit rules (id, category, severity, title, description).
category, only, and ignore parameters accept arrays but lack enum constraints or validation guidance. LLMs may pass invalid rule IDs or category names.
list_rules and list_ai_bots lack pagination parameters (limit, offset, cursor). If rule or bot lists grow, responses could exceed context limits.
Descriptions do not explicitly state prerequisites or dependencies. E.g., audit_url should mention that it normalizes URLs and follows redirects; generate_llms_txt should note crawl limits.
Output schema for list_rules and list_ai_bots not explicitly documented in visible code. Inferred from function names but not shown in schema definitions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2025-06-18+ | v2 |
timeout parameter (in ms) lacks explicit bounds documentation. Should state min/max to prevent absurd values (e.g., 1ms or 1 year).