MCP server exposing GEO (Generative Engine Optimization) audit tools to AI agents.
mcp-geo has 4 tools with basic descriptions and minimal parameter documentation. All tools accept a single 'url' parameter with minimal type info. Descriptions are present but generic (10-60 chars), below the 50-200 char LLM-optimized baseline. No output schemas documented. No error handling guidance. No parameter validation rules or constraints. Tools lack verb-noun naming clarity (e.g., 'check_llms_txt' vs 'validate_llms_txt'). No idempotency hints, no permission gates, no audit trail. Composition is reasonable (single responsibility per tool), but parameter descriptions are trivial.
Check robots.txt for AI crawler allow/block rules.
Check if a URL/domain has an llms.txt file per the llmstxt.org spec.
Full GEO audit combining llms.txt, robots.txt, and schema checks.
Validate JSON-LD schema.org markup on a page.
No output schemas documented. LLMs cannot predict response structure or plan downstream calls. Each tool returns unstructured JSON with no type hints.
Parameter descriptions are trivial (1-5 words). 'URL to check' and 'URL to audit' do not explain format, constraints, or when to use each tool. LLMs cannot distinguish between similar tools.
No error handling guidance. Code catches exceptions and returns generic error strings. LLMs receive no recovery hints (e.g., 'Try a different domain' or 'Check if URL is accessible').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2026-07-28+ | v2 |
Tool names lack clarity. 'check_llms_txt' vs 'validate_schema' use inconsistent verbs (check vs validate). 'geo_audit' is vague, does not signal it combines three checks. Naming should follow verb_noun pattern consistently.
No input validation or constraint documentation. 'url' parameter accepts any string; no format validation, no enum constraints, no length limits. LLMs can pass invalid URLs without guidance.