Email Spam Tester

Claude Code

Your templates get tested while you work on them

One command in the terminal. After that Claude Code can send a transactional template through your relay, read what the receiver saw, and change the template or tell you which record to fix.

Copy the command

42 checks · No key · No account

One command, then ask

The server is hosted, so nothing gets installed and no key goes into your environment.

https://email-spam-tester.com/mcp
claude mcp add --transport http email-spam-tester https://email-spam-tester.com/mcp

Or install the plugin

Same server, plus a skill that tells the agent how to run the loop.

/plugin marketplace add serg-tanichev/email-spam-tester-mcp
/plugin install email-spam-tester@email-spam-tester

What to ask

Test a template

Send templates/welcome.html through our staging mailer to a test address and tell me what fails.

DKIM passes, but d= is the relay's domain, so DMARC does not align.

Find the header

Get the message source for this slug and show me which header our code should be setting: [slug]

List-Unsubscribe-Post is missing. It belongs in mailer.ts, line by line below.

Compare two runs

Fix what the report names, test again with a fresh address and compare the two scores.

Second run done. I will put both scores side by side.

The template compiled.
That says nothing about the inbox.

Four tools arrive with the connection

A template change, a test run, a report naming the header that went wrong, all in the session where the code is already open.

Claude Code
/mcp
  • get_test_address

    Reserves a one-hour address. With placement switched on, you also get a list of mailboxes at different providers.

  • wait_for_report

    Holds until the checks finish, then returns the scores, the failed and warned checks with their evidence, and the fix plan.

  • get_report

    Reads an existing report by its slug, including how far the folder check has got.

  • get_message_source

    Returns the email as it arrived, headers in wire order, for an hour after delivery.

Questions

Why does it want a real email instead of pasted text?

About half of the checks read what the sending platform adds: the DKIM signature, the path through its servers, the unsubscribe headers. Pasted text has none of those, so the model would be guessing.

What can the server see?

What you send to the test address. The raw message stays for an hour after it arrives and then only the report remains, at a link anyone with the slug can open. Test mail you would be fine showing a colleague, and read the privacy policy for the rest.

Is the score the same as on the website?

Yes. It is the same analysis and the same report page, so a run from a chat can be compared with one from the home page.

Should it use the production relay?

Yes, when you can. A staging relay usually signs with another key and sends from another IP, so the checks would describe the wrong setup.

Will the project config need secrets?

No. The server takes no key, so .mcp.json holds only the address.

What is the difference between the plugin and the command?

The command adds the tools. The plugin adds the same tools and a skill, so the agent also knows that skip does not mean pass.

Send one real email and read what came back

Copy the command