Email Spam Tester MCP
An MCP server for email deliverability testing that allows agents to reserve disposable addresses, send test emails, and retrieve detailed reports containing 42 technical checks with RFC citations, spam scores, and inbox placement data.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://email-spam-tester.com/mcpWhat its tools do
4 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (3)
Can change data (1)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Warning Does not report a server version
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Reserve a disposable email address for testing
- Retrieve a detailed spam score and technical check report
- Check inbox placement across major providers like Gmail and Outlook
- Analyze raw message headers and source code
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- email-spam-tester unreported
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 4 advertised
- Resources
- 1 advertised
- Resource templates
- 0 advertised
- Prompts
- 0 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
4 advertised
get_test_address — Get a test address
Reserve a single-use address to send a draft email to, for a full check. Returns the address and the URL its report will appear at. The address accepts exactly one message and expires after an hour. The email has to be sent by the person, from the platform or mailbox they really send from: half the checks read what that platform adds. The report covers 42 checks (SPF, DKIM, DMARC, reverse DNS, TLS, blocklists, content, links, the Gmail and Yahoo bulk-sender rules) and a plan of what to fix. lang is decided now because the message arrives minutes later over SMTP, which carries no hint of who is waiting for it. What wait_for_report returns quotes check lines in English whatever it is set to; the person following report_url sees their own language.
{
"type": "object",
"title": "get_test_addressArguments",
"properties": {
"lang": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Lang",
"default": null,
"description": "ISO code of the language the report and the fix plan are written in for the person who opens the report page, for example \"en\", \"de\" or \"pt-BR\". Defaults to the language of the conversation. Unknown codes fall back to English."
},
"include_placement": {
"type": "boolean",
"title": "Include Placement",
"default": false,
"description": "Also check which folder (inbox, spam, promotions) the email lands in at different mailbox providers, from the same send. The email then goes to a list of recipients instead of one address and needs a marker in the subject; both come back. Some provider inboxes are public test inboxes: the subject, the sender name and the folder are shown on a public web page, so it suits messages that are not confidential."
}
}
}{
"type": "object",
"title": "Output",
"required": [
"view"
],
"properties": {
"view": {
"type": "string",
"title": "View",
"description": "Which card to draw."
}
},
"description": "What every tool returns for the card; `view` says which card.",
"additionalProperties": true
}{
"title": "Get a test address",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}wait_for_report — Wait for the report
Wait until the message arrives and has been analysed, then summarise it. Call it after the email has been sent to the address from get_test_address. Blocks rather than returning "not ready yet": an agent told to poll writes a sleep loop and usually gives up before the analysis finishes. Provider placement keeps filling in for up to 30 minutes after the report; get_report reads the latest.
{
"type": "object",
"title": "wait_for_reportArguments",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"title": "Slug",
"description": "The slug get_test_address returned, the last part of the report URL."
},
"timeout_seconds": {
"type": "integer",
"title": "Timeout Seconds",
"default": 150,
"maximum": 600,
"minimum": 5,
"description": "How long to block waiting for the message and its analysis, in seconds. The checks are ready in well under a minute; the fix plan takes about another one. Past this the tool returns what it has."
}
}
}{
"type": "object",
"title": "Output",
"required": [
"view"
],
"properties": {
"view": {
"type": "string",
"title": "View",
"description": "Which card to draw."
}
},
"description": "What every tool returns for the card; `view` says which card.",
"additionalProperties": true
}{
"title": "Wait for the report",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_report — Read a report
Read a report by its slug without waiting, with provider placement so far. The report stays at its link for good and anyone with the link can read it: the checks, the score, the fix plan, and the subject and sender of the email.
{
"type": "object",
"title": "get_reportArguments",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"title": "Slug",
"description": "The slug of a test, the last part of the report URL."
}
}
}{
"type": "object",
"title": "Output",
"required": [
"view"
],
"properties": {
"view": {
"type": "string",
"title": "View",
"description": "Which card to draw."
}
},
"description": "What every tool returns for the card; `view` says which card.",
"additionalProperties": true
}{
"title": "Read a report",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_message_source — Read the received message
The message exactly as it was received: headers, both bodies, source. Useful when a finding points at a header and the agent needs to see what it actually sent rather than what it believes it sent. The message is kept for an hour after it arrives and then deleted; within that hour anyone with the slug can read it. After that only the report remains.
{
"type": "object",
"title": "get_message_sourceArguments",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"title": "Slug",
"description": "The slug of a test whose message has already arrived."
}
}
}{
"type": "object",
"title": "get_message_sourceOutput",
"required": [
"result"
],
"properties": {
"result": {
"type": "string",
"title": "Result"
}
}
}{
"title": "Read the received message",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
0 advertised
Resources
1 advertised
email-spam-tester-card — Email Spam Tester card
The test address, the report and provider placement.
ui://widget/email-spam-tester-v3.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 5698 ms
- 95th percentile latency
- 5698 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 5698 ms · metadata changed · 4 tool(s), 1 resource(s), 0 resource template(s), 0 prompt(s); warnings: Does not report a server version
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http email-spam-tester-mcp https://email-spam-tester.com/mcpCodex
codex mcp add email-spam-tester-mcp --url https://email-spam-tester.com/mcpCursor
{
"mcpServers": {
"email-spam-tester-mcp": {
"url": "https://email-spam-tester.com/mcp"
}
}
}Cline
{
"mcpServers": {
"email-spam-tester-mcp": {
"type": "streamableHttp",
"url": "https://email-spam-tester.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"email-spam-tester-mcp": {
"type": "http",
"url": "https://email-spam-tester.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http email-spam-tester-mcp https://email-spam-tester.com/mcpClaude Desktop
https://email-spam-tester.com/mcpWindsurf
{
"mcpServers": {
"email-spam-tester-mcp": {
"serverUrl": "https://email-spam-tester.com/mcp"
}
}
}Let your agent find its tools
Find servers like Email Spam Tester MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.