Email Spam Tester

Cursor

Fix the email template in the same window that found the problem

Add a short block to mcp.json and the Cursor agent can test the mail your code sends, then open the file that needs changing.

Copy the config

42 checks · No key · No account

Some of what fails is a header,
and that header is in a file you have open.

What to ask

Test what the code sends

Find where we send the password reset email, trigger it to a test address and read the report.

Found it in auth/reset.ts. Sending to the test address now.

Patch the headers

The report says List-Unsubscribe is missing. Add it to our mailer and test again.

Header added. Testing with a fresh address.

Explain a failure

Open this report and explain why DMARC failed when SPF passed: [report link]

SPF passed for the bounce domain, which differs from your From domain.

Add it to mcp.json

Use .cursor/mcp.json for one project or ~/.cursor/mcp.json for all of them.

https://email-spam-tester.com/mcp
{  "mcpServers": {    "email-spam-tester": {      "url": "https://email-spam-tester.com/mcp"    }  }}

Four tools arrive with the connection

Some of what fails in a transactional email is decided in code: a missing List-Unsubscribe header, a From domain that does not match, an HTML part with no text part. Cursor already has that code open.

Cursor
/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.

Can I commit the config?

Yes. There is nothing secret in it, so .cursor/mcp.json is safe to keep in the repo.

The tools do not show up. What now?

Check that the JSON is valid, then start a new chat.

Which Cursor plan do I need?

Cursor sets that. The server itself asks for no key and no account.

Send one real email and read what came back

Copy the config