Model Context Protocol (MCP) server for ValidKit email validation - works with Claude Code, Cursor, Windsurf, and any MCP-compatible AI assistant
ValidKit MCP server has clear, well-structured tool definitions with proper schemas and descriptions. All three tools are registered with Zod schemas, descriptions, and input validation. However, output schemas are not documented (tools return raw JSON.stringify of API responses), and error handling, while present, lacks actionable recovery guidance. Parameter descriptions are adequate but minimal. No tool annotations (readOnlyHint, idempotentHint) despite all tools being read-only. Tool names follow verb_noun convention (validate_*, check_*) and are unambiguous. The server demonstrates solid fundamentals but lacks polish in output documentation and error messaging.
Check your ValidKit API usage stats for the current period. Returns total requests, valid/invalid counts, average response time, and rate limit.
Validate a single email address. Returns deliverability status, syntax/DNS/MX checks, disposable/role/free detection, and typo suggestions.
Validate multiple email addresses in a single request (up to 1000). Returns individual results and a summary with valid/invalid/unknown counts.
Output schemas not documented. Tools return raw JSON.stringify(data) without specifying what fields the LLM should expect. This forces LLMs to parse unstructured responses and prevents confident downstream tool chaining.
Error messages lack actionable recovery guidance. Errors like 'API error (429): Rate limited' do not tell the LLM what to do next (retry delay, fallback, etc.). Per pattern:recovery-guide, errors should guide the agent's next step.
Tool annotations missing. All three tools are read-only (no side effects), but readOnlyHint is not set in tool registration. This prevents clients from optimizing caching and parallelization.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Parameter descriptions are minimal. 'Email address to validate' and 'Array of email addresses to validate' lack context on format expectations, constraints, or when to use bulk vs single. Per pattern:tool-description, descriptions should state WHAT, WHEN, and any prerequisites.
No pagination or result limits documented. validate_emails_bulk accepts up to 1000 emails but does not specify output structure (e.g., does it return all results or paginated?). Per pattern:paginated-result, large result sets should include pagination metadata.