DataSEO MCP provides SEO research tools for backlinks, keywords, traffic, SERP difficulty, competitor analysis, and AI search query planning.
Server has 9 tools with consistent naming (verb_noun pattern) and complete input schemas. All tools have descriptions (10-100 chars, mostly adequate). However, descriptions are terse and lack context for LLM selection. Parameter descriptions are minimal or absent. Output schemas are not documented. No error handling guidance visible. No tool annotations (readOnlyHint, etc.). Composition is sound, each tool has one responsibility. Missing: pagination guidance, output field documentation, recovery hints.
Generate AI-powered search queries categorized by intent.
Find competitor backlink sources not present in the target sample.
Compare 2-5 domains using backlink and traffic summaries.
Get backlink and traffic summary for one domain.
Get backlink overview and top backlinks for a domain.
Check estimated search traffic for a domain or URL.
Output schemas not documented. LLMs cannot infer what fields to expect from responses, forcing them to guess at downstream tool chaining and data extraction.
Parameter descriptions are minimal or missing. E.g., 'country' param lacks format guidance (is it 'us' or 'US'? ISO 3166-1 alpha-2?). 'mode' enum is present but not explained in description.
No error handling guidance. Code shows error returns (e.g., 'error' field in ai.py response_data) but no recovery hints. LLMs cannot determine if errors are retryable or require user intervention.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
Get keyword difficulty and SERP data.
Get keyword ideas for a seed keyword.
Build an SEO content brief from SERP data and AI search queries.
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint metadata. LLMs cannot determine which tools are safe to retry or have side effects.
Pagination not addressed. Tools returning lists (keyword_generator, compare_domains) lack limit/offset or cursor parameters. Large result sets risk context window exhaustion.