MCP server exposing SEO automation tools for keyword research, content queue, rank tracking, and backlink prospects - integrated with a Next.js application backend serving tools via HTTP MCP transport
DispatchSEO exposes 9 SEO-focused tools via HTTP MCP. Tool naming follows verb_noun convention (check_serp, suggest_keywords, get_rankings), which is strong. However, schema visibility is severely limited: the source code provided shows tool names and descriptions but does NOT expose complete JSON Schema definitions for input parameters or output structures. The code references 'src/app/api/[transport]/route.ts' but that file is not included. Descriptions are present and contextual (50-120 chars), meeting minimum standards, but parameter schemas are only partially visible (keyword, seed, domain, projectId as strings; array for track_keywords). Output schemas are entirely undocumented, no evidence of return type definitions, pagination support, or field listings. Error handling strategies are not visible in the provided excerpts. The two write-capable tools (track_keywords) lack dry-run or confirmation patterns. Composition is reasonable, tools are single-purpose, but chaining is unclear because output fields are not documented.
Localized SERP with 49 metrics per result - paste a keyword, screenshot page 1
Brand visibility inside ChatGPT and AI search - open the dashboard, read a report. Tracks citations across ChatGPT, Claude, and Google AI Overview
Backlink opportunities for a domain - search a domain, review the link list
SEO metrics overview of a site - paste a URL, read the summary. Domain rank equivalent (DR), referring domains, backlinks, and spam score
Current ranking positions for tracked keywords - part of the rank tracking workflow, filled by nightly cron
Search Console stats and traffic metrics - reviewed pipeline tier with daily updates
Real search-volume ranges from Google's own ad auction - extended keyword research with volume data
Output schemas are completely undocumented. No evidence of return type definitions, field lists, or pagination structures for any of the 9 tools. LLMs cannot plan downstream tool calls or extract relevant fields when return structures are invisible.
Input parameter schemas are only partially visible. The source code snippet shows parameter names and descriptions (keyword, seed, domain, projectId, days) but does not expose complete JSON Schema definitions with type declarations, enums, constraints, or ranges. Schema completeness cannot be verified.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | 2026-07-28+ | v2 |
Keyword ideas and volume ranges pulled from Google's ad auction - type a seed word in, read the list
Add keywords to the tracking list for rank monitoring - part of the weekly rank tracking workflow
track_keywords is the only write operation but lacks dry-run, confirmation, or idempotency guarantees. No evidence of error handling for partial failures (e.g., 1 keyword accepted, 5 rejected). Agents cannot safely retry.
No pagination parameters (page, limit, offset, cursor) visible for list/search tools (suggest_keywords, keyword_ideas, get_backlink_prospects, check_serp). If these return dozens or hundreds of results, context window blowout is likely.
No evidence of error handling guidance in tool descriptions. How does the LLM know what to do if a domain doesn't exist, an API key is invalid, or a rate limit is hit? Descriptions lack recovery instructions.
get_site_stats has an optional 'days' parameter (default 28) but no description of acceptable range (1 - 365?), and no explicit documentation of what 'default' means if omitted. Unbounded numeric parameters invite absurd values.
No evidence of tool annotations (readOnlyHint, destructiveHint, idempotentHint) in the provided code. Eight tools are read-only and should be marked as such; track_keywords is destructive and should be annotated.