Multi-server MCP implementation for SEO content management, including Notion integration for tracking SEO progress, Ghost CMS integration for content management, and Frase.io integration for SERP analysis and content optimization
24 tools across 3 servers (Notion, Ghost, Frase). Most tools have descriptions (18/24 present, avg 85 chars), but many lack depth and actionable guidance. Schemas are present but inconsistent: some parameters undescribed (e.g., 'properties' object in update_page_properties has no field-level schema). No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Error handling and recovery guidance absent. Naming is generally verb-noun compliant, but some tools conflate multiple concerns (e.g., create_seo_report generates multiple report types in one tool). Output schemas not documented. No pagination guidance for list tools. Critical: tool definitions appear inferred from code rather than explicitly registered with full schemas, cannot verify actual MCP registration.
Add a comment to a Notion page
Analyze top-ranking competitor content for optimization insights
Analyze long-tail keywords using Frase SERP analysis - your main workflow automation
Analyze SEO content progress across pages
Research multiple long-tail variations and analyze their SERP potential
Create comprehensive optimization report with actionable recommendations
update_page_properties accepts generic 'properties' object with no field-level schema or validation guidance. LLM cannot infer valid property names or types without calling get_database_schema first.
create_optimization_report has empty input schema (no parameters documented). Description is 40 chars ('Create comprehensive optimization report with actionable recommendations'), too vague. LLM cannot determine what data to pass or when to call it.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. LLM cannot distinguish safe read-only tools from destructive ones (create_post, update_post, add_comment, update_page_properties). Agents may retry destructive operations, causing duplicates.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
Create a new post in Ghost
Create a comprehensive SEO progress report
Filter database entries using simple property-value criteria (much easier than get_database_entries)
Generate SEO content brief from SERP analysis
Get entries from a Notion database
Get the complete schema/structure of a Notion database including all properties and their types
Get the complete, untruncated content of a Ghost post in both HTML and plaintext formats
Get detailed content of a specific Notion page
Get detailed content and metadata for a specific post with content preview
Get posts filtered by their publication status
Get detailed SERP analysis for a specific keyword - competitor insights and ranking factors
Get basic information about the Ghost site
List all accessible Notion databases with their IDs and titles
Optimize your content based on SERP analysis and competitor insights
Search for Notion pages by title or content
Search for posts by title, content, or other criteria
Update properties of a Notion page
Update an existing post
List/search tools (search_notion_pages, search_posts, get_database_entries, filter_database_entries) lack pagination parameters (limit, offset, cursor) and output schema documentation. No guidance on result caps or how to handle large datasets.
No error handling or recovery guidance in any tool description. Descriptions state WHAT the tool does but not WHEN to use it, what can go wrong, or how to recover. LLM cannot self-correct on failures.