MCP server for Marketing Miner API providing keyword research, search volume, website analytics, and competitor analysis tools
Server defines 5 tools with complete input schemas and descriptions. All tools follow verb_noun naming (search_volume, keyword_suggestions, website_stats). Descriptions are present (avg ~80 chars) but lack actionable context for LLM selection. Parameters are typed with enums for language/type fields, but descriptions are minimal (avg ~40 chars). No output schemas documented. Error handling exists (MmApiError class) but lacks recovery guidance. No tool annotations (readOnlyHint, etc.). Token resolution is secure (env-based, not exposed as params). Composition is sound, tools are single-purpose and chainable.
Get keyword suggestions including questions, new keywords, and trending keywords for a given keyword
Get search volume for a single keyword in a specific language and country
Get search volumes for multiple keywords in batch (up to 100 keywords per request)
Get website statistics including traffic, keywords, and other metrics for a domain, subdomain, prefix, or exact URL
Get historical website statistics over a date range including traffic trends and competitor analysis
Output schemas not documented. LLMs cannot infer what fields to expect from responses, forcing them to guess at downstream field names and risk broken tool chains.
Parameter descriptions are minimal (avg 40 chars). E.g., 'language' is described as 'Language/country code' without explaining what data it controls or when to use each option. Descriptions should be 50-200 chars and explain WHAT, WHEN, and WHY.
Tool descriptions lack actionable context. E.g., 'Get search volume for a single keyword' does not explain WHEN to use search_volume vs search_volume_batch, or what the return value represents. Descriptions should guide LLM selection.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2025-06-18+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only, but this is not declared in the tool definition. Annotations help agents reason about safety and retry logic.
Error messages from MmApiError are generic. E.g., 'Marketing Miner API error (HTTP 422)' does not tell the LLM what to do next or which parameter is invalid. Errors should include the invalid value and the constraint violated.