MCP server providing SEO research capabilities including Google competitors, topics, entities, AI citations, content gaps, and search questions analysis for AI agents
SEO Researcher has 6 tools with basic naming and descriptions, but significant gaps in schema completeness and parameter documentation. All tools follow verb_noun naming (seo_research_*), which is good. Descriptions are present but brief (10-50 chars), below the 50-200 char baseline for LLM-optimized docs. Critical issue: input schemas lack type information for most parameters. The 'research_type' parameter in seo_research_start has no enum constraint despite accepting only 'standard' or 'deep'. Parameter descriptions are minimal or absent. No output schemas documented. Error handling and recovery guidance are not visible in the provided code. Tools are read-only except seo_research_start, which is appropriate for risk classification.
Get the current connection status and account identity
Retrieve the results of a completed research job
List existing research jobs with optional limit parameter
Start a new SEO research job with specified parameters
Get the status of a specific research job
Check current research usage and remaining units
seo_research_start 'research_type' parameter lacks enum constraint. Accepts 'standard' or 'deep' but no formal enum definition, inviting hallucinated values.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., job_id from seo_research_start response).
Tool descriptions are 10-50 characters, well below the 50-200 char baseline. Lack context for when/why to select each tool. E.g., 'Get the current connection status and account identity' does not explain when to call this vs other tools.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2025-06-18+ | v2 |
seo_research_list 'limit' parameter has no min/max bounds. Unbounded numeric parameters let LLMs pass absurd values (e.g., limit=999999) that may break pagination or timeout.
No error handling or recovery guidance visible. Tools do not document what happens on failure (e.g., invalid job_id, rate limits, auth failure) or how LLMs should respond.