Optimizes semantic keyword placements using Semrush AIO guidelines
This MCP server exposes a single tool, optimize_keywords, with significant quality gaps. The tool has a reasonable description (85 chars), but the input schema lacks parameter descriptions, a critical flaw. The schema defines target_keywords as list[str] and page_copy as string, but neither parameter has a description field explaining what values are expected, constraints, or use cases. The output schema is entirely undocumented; there is no specification of the returned fields (optimized_copy, semrush_keyword_overlap_score, status) or their types. The implementation logic is simplistic (substring matching for overlap calculation) and does not align with real Semrush AIO optimization practices. No error handling is present, the tool will silently fail or return misleading results if target_keywords is empty or page_copy is null. No input validation guards against edge cases. The tool design does not follow the verb_noun naming pattern strongly (optimize_keywords is acceptable but generic), and it lacks guidance on when to use it or what constitutes success.
Optimizes semantic keyword placements using Semrush AIO guidelines. Analyzes target keywords within page copy and returns optimized content with keyword overlap score.
Missing parameter descriptions in input schema. target_keywords and page_copy are defined with types but lack description fields explaining their purpose, constraints, format, or acceptable values.
Output schema is entirely undocumented. The tool returns optimized_copy, semrush_keyword_overlap_score, and status, but no schema documentation specifies field types, ranges, or meaning. LLMs cannot plan downstream actions.
No error handling or input validation. The tool does not validate that target_keywords is non-empty, page_copy is non-null, or handle edge cases like empty strings or very long inputs. No recovery guidance is provided.
Algorithmic quality concern: keyword overlap is calculated via substring matching (kw.lower() in copy_lower), which does not reflect real semantic optimization. This is prone to false positives (partial matches) and false negatives (synonyms, morphological variants). The tool does not deliver the claimed 'Semrush AIO semantic optimization.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
Tool description (85 chars) is adequate in length but lacks critical details: When should an LLM call this? What does a score of 0.5 mean? How is 'semantic' optimization defined? What does 'fully_optimized' vs 'needs_semantic_update' tell the user? The description does not answer: What does it do? When should I use it? What should I do with the result?