Keyword difficulty scoring and content brief MCP server - zero dependencies
Three tools with complete schemas and basic descriptions, but significant gaps in parameter documentation, output schema clarity, and error handling. Tool names lack action verbs (keyword_difficulty, opportunity_score, content_brief are noun-heavy). No parameter descriptions at all, LLMs cannot infer what 'keywords' array should contain or what 'difficulty' and 'monthly_volume' represent. Output schemas are undocumented; responses are JSON-stringified text blobs rather than structured objects. No error handling, validation, or recovery guidance. Descriptions are adequate length (50-100 chars) but lack WHEN/WHY context. This is a typical community server with functional but incomplete definitions.
Generate a structured article brief: H2 outline, word-count target, FAQ suggestions, and schema type recommendation.
Estimate keyword difficulty (0-100) from SERP signal inputs: number of words, presence of brand terms, and commercial intent markers.
Blend difficulty and monthly volume into a single 0-100 opportunity score (70% inverse difficulty, 30% log volume).
Tool names lack action verbs. 'keyword_difficulty', 'opportunity_score', 'content_brief' are noun-heavy and do not convey what action the tool performs. Should be 'estimate_keyword_difficulty', 'calculate_opportunity_score', 'generate_content_brief'.
Zero parameter descriptions. The 'keywords' array, 'difficulty' number, 'monthly_volume' number, and 'topic' string have no descriptions. LLMs cannot infer parameter meaning from names alone, a 'difficulty' param could be 0-100, 0-1, or categorical.
Output schemas are undocumented. Responses are JSON-stringified text blobs (e.g., 'text': json.dumps(...)) rather than structured objects. LLMs cannot parse or chain results. Should return typed objects with documented fields.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
No error handling or validation. Invalid inputs (empty keywords array, negative volume, empty topic) are not validated. No error messages guide recovery. Agents cannot self-correct on failure.
Descriptions lack WHEN/WHY context. 'Estimate keyword difficulty' does not explain when to call this vs. other tools, what prerequisites exist, or how the result is used downstream. Descriptions should guide tool selection.