Email Spam Tester

GitHub Copilot

Let Copilot test the email before the pull request does

Add one server in VS Code and Copilot in agent mode can run a real spam test on the mail your project sends.

Copy the config

42 checks · No key · No account

What to ask

Check before review

Test the invoice email changed in this branch and list anything that got worse.

One check got worse: the text part is now empty.

Fix the failures

Work through the failed checks in this report and change what can be changed in code: [report link]

Two fixes are in code. The third is a DNS record for you.

Add it to CI

Add the Email Spam Tester GitHub Action to our workflow for changes under templates/.

Workflow added. It needs three repository secrets.

Add the server in VS Code

The file goes in the root of the workspace, so the whole team gets it with the repo.

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

Already using .vscode/mcp.json?

That file has its own format. The top key is servers.

{
  "servers": {
    "email-spam-tester": {
      "type": "http",
      "url": "https://email-spam-tester.com/mcp"
    }
  }
}

Code review reads the diff.
Nobody reads the headers.

Four tools arrive with the connection

Nothing in a test suite fails when DMARC alignment stops holding. With the server in the repo's config, everyone on the project has the same test a prompt away, and nobody has to set up a key for it.

GitHub Copilot
/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.

Does the file need secrets?

No. The server takes no key, so the config can be committed.

Does VS Code ask before running tools?

Yes, tool calls go through VS Code's usual confirmation unless you have allowed them.

And for a check on every push?

Use the GitHub Action. It fails the job when authentication fails or the score drops.

Send one real email and read what came back

Copy the config