MailTester MCP server
Endpoint: https://app.mailtester.com/mcp · Authentication: No auth
Verify email addresses and inspect deliverability signals through MailTester.
How do I authenticate?
Add the endpoint directly in your client. The catalog records no authentication requirement; no OAuth sign-in or API key is configured in this setup. The live server may change.
Authentication and connection guideConnection specification
- Remote endpoint
https://app.mailtester.com/mcp- Browser access
- Not yet measured
- Declared MCP transport
- Streamable HTTP
- Live-validated MCP transport
- Streamable HTTP — Observed by the latest catalog validation
- Declared authentication
- No authentication
- Detected authentication
- No authentication detected or retained from publisher evidence
- Alternative authentication
- API key
- Protocol lifecycle
- Stateful MCP · 2024-11-05
- Required header
Authorization— Optional credential alternative to public access.- Category
- Communication
Product documentation · Source repository · Official listing documentation · Official MCP Registry record
Provider guidance
- Keyless verification has a small shared trial allowance. Register through the publisher for a private API key and account quota.
More Communication MCP servers · Browse all MCP servers · Test this endpoint in the MCP Playground
Connect it
Live-validated endpoint: https://app.mailtester.com/mcp · Streamable HTTP. No authentication is required by the catalog listing.
Agent prompt for Claude Code or Codex
Add the MailTester MCP server to my MCP client configuration and verify that it works. What it is: Verify email addresses and inspect deliverability signals through MailTester. Server URL: https://app.mailtester.com/mcp Transport: Streamable HTTP (remote MCP server, no local install). Authentication: none. The server accepts connections without credentials. Tools (9, as last observed by mcptest): estimate_cost, explain_result, get_api_key, get_batch_status, get_credit_balance, get_list, list_lists, verify_batch, verify_email. Reference: https://mcptest.io/servers/mailtester/ Steps: 1. Work out which MCP client I use (Claude Code, Codex, Cursor, VS Code or another) and add the server under the name "mailtester" in that client's MCP configuration, user scope unless I ask otherwise. Claude Code: claude mcp add --transport http --scope user 'mailtester' 'https://app.mailtester.com/mcp' Codex: codex mcp add 'mailtester' --url 'https://app.mailtester.com/mcp' Other clients: use the setup for that client on the reference page. 2. Never write a credential value into a file that could be committed; reference an environment variable or the client's secret store, and ask me for any value you need. 3. Verify: connect to the server and call tools/list. Confirm the tools above are listed, and report any sign-in step I still have to complete.
Claude Code setup
Run in a terminal. This user-scoped entry is available across projects.
claude mcp add --transport http --scope user 'mailtester' 'https://app.mailtester.com/mcp'Codex CLI setup
Run in a terminal; Codex stores the entry in ~/.codex/config.toml.
codex mcp add 'mailtester' --url 'https://app.mailtester.com/mcp'Cursor setup
Add to .cursor/mcp.json for this project, or ~/.cursor/mcp.json for all projects.
{
"mcpServers": {
"mailtester": {
"url": "https://app.mailtester.com/mcp"
}
}
}VS Code setup
Add to .vscode/mcp.json, or run “MCP: Open User Configuration” for a private user-level entry.
{
"servers": {
"mailtester": {
"type": "http",
"url": "https://app.mailtester.com/mcp"
}
}
}Claude setup
Add the endpoint above in Claude:
- Customize > Connectors > Add custom connector
- Team/Enterprise: Organization settings > Connectors > Add > Custom > Web
Claude Desktop setup
Add the endpoint above in Claude Desktop:
- Remote: Customize > Connectors (same as claude.ai)
- Local: Settings > Developer > Edit Config, or Settings > Extensions for .mcpb files
~/Library/Application Support/Claude/claude_desktop_config.json(macOS) or%APPDATA%\Claude\claude_desktop_config.json(Windows), local servers only
ChatGPT setup
Add the endpoint above in ChatGPT:
- ChatGPT web: Plugins > Add custom MCP server, then configure authentication and accept the risk warning
Windsurf setup
Add the endpoint above in Windsurf:
~/.config/devin/mcp_config.json(%APPDATA%\devin\mcp_config.jsonon Windows),serverUrlorurl- Cascade panel > ... > MCPs > Open MCP config file
Gemini CLI setup
Add the endpoint above in Gemini CLI:
gemini mcp add --transport http <name> <url>~/.gemini/settings.json(user) or.gemini/settings.json(project),mcpServers
MCP SDK setup
Add the endpoint above in MCP SDK:
- Programmatic:
new Client(...).connect(new StreamableHTTPClientTransport(url))
Notes for every client
- Optional api key alternative: Store MAILTESTER_API_KEY in your operating system keychain, secret manager, or protected environment; never commit the value. The Authorization header syntax is Bearer <MAILTESTER_API_KEY>.
- Provider guidance: Keyless verification has a small shared trial allowance. Register through the publisher for a private API key and account quota.
Client compatibility
| Client | Status | Why |
|---|---|---|
| Claude Code | Supported | Claude Code supports Streamable HTTP servers and servers without authentication or API key headers. |
| Codex | Supported | Codex supports Streamable HTTP servers and servers without authentication or API key headers. |
| Cursor | Supported | Cursor supports Streamable HTTP servers and servers without authentication or API key headers. |
| VS Code | Supported | VS Code supports Streamable HTTP servers and servers without authentication or API key headers. |
| Claude | Supported | Claude supports Streamable HTTP servers and servers without authentication or API key headers. |
| Claude Desktop | Supported | Claude Desktop supports Streamable HTTP servers and servers without authentication or API key headers. |
| ChatGPT | Partial | Stateful routing needs operational care: ChatGPT can preserve MCP sessions, but the deployment must route a session consistently and retain its state. |
| Windsurf | Supported | Windsurf supports Streamable HTTP servers and servers without authentication or API key headers. |
| Gemini CLI | Supported | Gemini CLI supports Streamable HTTP servers and servers without authentication or API key headers. |
| MCP SDK | Supported | MCP SDK supports Streamable HTTP servers and servers without authentication or API key headers. |
Computed from this server's validated transport, protocol and authentication against documented client support. Checks the catalog has not observed are not counted.
Latest validation evidence
- Validation status
- Online when last tested
- Validation checked at
- Oct 26, 2026 at 11:07 AM
- Validation detail
- Negotiated stateful MCP 2024-11-05 at https://app.mailtester.com/mcp; detected transport streamable-http; authentication none
Tool inventory
What the catalog validator observed on at https://app.mailtester.com/mcp without credentials. The live server may have changed since; connect in the Playground for the current list.
Tools provided by MailTester 9
Some details were sanitized for public display.
estimate_costNo outputSchemaEstimate the credit cost of a verification before running it, and whether the user can afford it. Provide either a count of emails, a list_id to re-verify, or an operation ('single'/'finder'). Always quote this before proposing anything billable.
Input
emails?: integer, list_id?: integer, operation?: stringemails?: integeroptionalNumber of emails to verify (1 credit each).
list_id?: integeroptionalEstimate re-verifying an existing list by its id.
operation?: stringoptionalOperation type: bulk/single (1 credit) or finder (3 credits).
explain_resultNo outputSchemaExplain what a verification status or reason means in plain English, with a send recommendation. Covers valid, invalid, catch-all/accept-all, unknown, greylisted, disposable, role, free, spam-trap, abuse, do-not-mail, no-mx, disabled, and network. Use when a user asks what a result means.
Input
term: stringterm: stringrequiredThe status/reason to explain, e.g. 'catch-all', 'GREYLISTED', 'unknown', 'role'. Case-insensitive.
get_api_keyNo outputSchemaGet your own free API key for this server (no account needed; 25 email verifications per day). Optional: the verification tools already work without a key on a shared trial. Returns the key once — reconnect with 'Authorization=[REDACTED] <api_key>' for your own quota and the list tools.
Input
contact?: string, name?: string, purpose?: stringcontact?: stringoptionalOptional operator email or URL.
name?: stringoptionalYour agent's name.
purpose?: stringoptionalWhat you verify emails for.
get_batch_statusNo outputSchemaGet the progress and status of a bulk verification list/job by id.
Input
list_id: integerlist_id: integerrequired
get_credit_balanceNo outputSchemaGet the current credit balance and a short usage summary for the account.
Input No parameters
get_listNo outputSchemaGet the details of a single bulk verification list by its id.
Input
list_id: integerlist_id: integerrequiredThe id of the bulk verification list.
list_listsNo outputSchemaList the user's bulk verification lists/jobs, most recent first.
Input
limit?: integerlimit?: integeroptionalMaximum number of lists to return.
verify_batchNo outputSchemaVerify a batch of email addresses (up to 25 per call with an agent key). Returns per-email verdicts and saves a list. Costs 1 credit per email.
Input
emails: array, name?: stringemails: arrayrequiredEmail addresses to verify.
name?: stringoptionalOptional label for the saved list.
verify_emailNo outputSchemaVerify the deliverability of a single email address. Returns a verdict (valid, invalid, risky, unknown). Costs 1 credit.
Input
email: stringemail: stringrequiredThe email address to verify.