Email Authentication MCP Server
scan.mx speaks the Model Context Protocol over the Streamable HTTP transport, so an AI agent can check email deliverability as a native tool. No key, no signup.
European by default. Scanning server in the Netherlands, reports stored in an EU database. How the data is handled.
Tools
ToolChecksInput
check_domain
Full graded report (all sections)
domain, include_smtp?
check_mx
MX records and provider
domain
check_spf
SPF record
domain
check_dmarc
DMARC policy
domain
check_dkim
DKIM keys (probe or exact selector)
domain, selector?
check_blacklist
Spamhaus, SpamCop, GBUdb, PSBL listings
domain
How it works
- Read-only. Every tool is a diagnostic that only reads public DNS and (for check_domain with include_smtp) probes mail servers. Nothing is sent on your behalf.
- Cached. Results are keyed by domain and cached (up to 30 days), so repeated calls are fast and cheap.
- Live SMTP, poll by re-calling. The SMTP probe is
non-blocking.
check_domainwithinclude_smtpstarts the probe and returns immediately; whilesmtp_statusispendingorrunning, call it again (apoll_after_secondshint says how long to wait) until it iscompleteand the SMTP checks appear inchecks. The domain is the durable handle, so no session is needed. - Rate-limited. No key is needed. Calls are rate-limited per client for abuse prevention.
Connect your client
Claude Code
claude mcp add --transport http scanmx https://api.scan.mx/mcp
Cursor, Windsurf, Claude Desktop (MCP config)
{ "mcpServers": { "scanmx": { "url": "https://api.scan.mx/mcp" } } }
VS Code (GitHub Copilot)
code --add-mcp '{"name":"scanmx","type":"http","url":"https://api.scan.mx/mcp"}'Gemini CLI (~/.gemini/settings.json)
{ "mcpServers": { "scanmx": { "httpUrl": "https://api.scan.mx/mcp" } } }
Codex (~/.codex/config.toml)
[mcp_servers.scanmx]
url = "https://api.scan.mx/mcp"Raw protocol
Stateless JSON-RPC 2.0 over a single POST. List the tools:
curl -s https://api.scan.mx/mcp \ -H 'Content-Type: application/json' \ -H 'Accept: application/json, text/event-stream' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Spec and registry
The transport is Streamable HTTP, stateless (no
Mcp-Session-Id). Registry listing:
mx.scan/diagnostics. Manifest:
server.json.
HTTP API
Prefer plain HTTP?
The same checks return a graded JSON report over a key-less REST endpoint, with a live SMTP probe over Server-Sent Events.