RankPath SEO analysis MCP server. Provides access to project data, crawl results, and SEO issues.
RankPath MCP server defines 5 tools with explicit schema definitions using schemars::JsonSchema. All tools have descriptions and input parameters with type annotations. However, there are meaningful gaps: (1) Parameter descriptions are minimal and lack actionable constraints or examples. (2) No output schemas are documented, responses are JSON-serialized API payloads without field documentation. (3) Missing enum constraints for optional filter parameters (severity, status). (4) No error handling guidance, api_error() returns raw error messages without recovery hints. (5) No pagination cursors despite get_crawl_history accepting limit/offset. The tool naming is adequate (all verb-noun style), and descriptions succinctly state what each tool does, but fall short of LLM-optimized descriptions that explain WHEN to use and WHAT to expect.
Get paginated crawl history for a RankPath project
Get SEO issues for a RankPath project, optionally filtered by severity (critical/warning/info) or status (open/acknowledged/ignored)
Get the latest crawl result with full SEO analysis for a RankPath project
Get details for a specific RankPath project by its UUID
List all RankPath projects for the authenticated user
Output schemas not documented. No structured response field documentation for any tool, forcing LLMs to parse unstructured JSON without knowing what fields to expect.
get_issues accepts 'severity' and 'status' as free-form optional strings. Descriptions list valid values (critical/warning/info, open/acknowledged/ignored) but JSON Schema lacks enum constraint. LLMs will hallucinate invalid values.
Parameter descriptions lack actionable constraints. get_crawl_history description says limit is '1 - 100, default: 10' but this constraint is only in English text, not in JSON Schema minValue/maxValue. LLM cannot programmatically validate.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Error handling returns raw error text without recovery guidance. api_error() function does not categorize errors as retryable/user-fixable/fatal, and does not suggest next steps.
get_crawl_history accepts limit and offset parameters but does not return pagination metadata (total_count, next_cursor, or has_more). Agents cannot reliably iterate over large result sets.
No tool annotations present. Tools have no readOnlyHint, destructiveHint, or idempotentHint metadata. All 5 tools are read-only but this is not machine-readable.