{"name":"io.github.serg-tanichev/email-spam-tester","slug":"serg-tanichev-email-spam-tester","title":null,"description":"Test an email before it goes out: a disposable address, 41 checks with RFC citations, a fix plan.","url":"https://mcp.market/server/serg-tanichev-email-spam-tester","rating":null,"grade":"B","score":79,"certified":false,"status":"active","category":"email","tags":["email"],"presence":{"score":20,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-09-18T06:59:44.000Z","license":"NOASSERTION"},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/serg-tanichev/email-spam-tester-mcp","website":null,"version":"1.0.0","remotes":[{"type":"streamable-http","url":"https://email-spam-tester.com/mcp"}],"packages":[],"tools":[{"name":"get_message_source","description":"The message exactly as it was received: headers, both bodies, source.\n\n    Useful when a finding points at a header and the agent needs to see what it\n    actually sent rather than what it believes it sent.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"description":"The slug of a test whose message has already arrived.","title":"Slug","type":"string"}},"required":["slug"],"title":"get_message_sourceArguments"}},{"name":"get_report","description":"Read an existing report by its slug, without waiting.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"description":"The slug of a test, the last part of the report URL.","title":"Slug","type":"string"}},"required":["slug"],"title":"get_reportArguments"}},{"name":"get_test_address","description":"Reserve a single-use address to send a draft message to.\n\n    Returns the address and the URL its report will appear at. The address\n    accepts exactly one message and expires after an hour.\n\n    lang is the language the fix plan will be written in, as an ISO code\n    (\"de\", \"pt-BR\"). Set it to the language the person you are working for\n    reads: it decides the plan and the per-check findings on the page they\n    open, and it has to be decided now because the message arrives minutes\n    later over SMTP, which carries no hint of who is waiting for it. Unknown\n    codes fall back to English rather than failing.\n\n    What you get back from wait_for_report stays English whatever you set: the\n    check lines it quotes come from the report's `summary` field, which is\n    English by design so a script reading it reads the same words every time.\n    The person following report_url sees their own language.\n    ","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"lang":{"default":"en","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\". Unknown codes fall back to English.","title":"Lang","type":"string"}},"title":"get_test_addressArguments"}},{"name":"wait_for_report","description":"Wait until the message arrives and has been analysed, then summarise it.\n\n    Blocks rather than returning \"not ready yet\": an agent told to poll writes a\n    sleep loop and usually gives up before the analysis finishes.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"description":"The slug get_test_address returned, the last part of the report URL.","title":"Slug","type":"string"},"timeout_seconds":{"default":150,"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.","maximum":600,"minimum":5,"title":"Timeout Seconds","type":"integer"}},"required":["slug"],"title":"wait_for_reportArguments"}}],"scan":{"score":79,"grade":"B","scanned_at":"2026-09-19T00:26:04.610Z","report":{"scannerVersion":"0.1.3","scannedAt":"2026-09-19T00:26:04.487Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1098ms"]},"poisoning":{"score":15,"max":15,"notes":["4 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 1 write-action tools with no auth"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":6,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://email-spam-tester.com/mcp","reachable":true,"authRequired":false,"latencyMs":1098,"serverInfo":{"name":"email-spam-tester","version":""}}],"packages":[],"repo":{"found":true,"owner":"serg-tanichev","repo":"email-spam-tester-mcp","archived":false,"pushedAt":"2026-09-18T06:59:44Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/328659248?v=4","ownerCreatedAt":"2026-09-13T08:09:56Z","license":"NOASSERTION"},"icon":{"url":"https://email-spam-tester.com/icon.svg","source":"site"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"NOASSERTION","lastPushAt":"2026-09-18T06:59:44.000Z","score":20}}}},"grade_history":[{"kind":"restore","fromGrade":"D","toGrade":"B","reason":"score 79: Write-action tools reachable without authentication","createdAt":"2026-09-19T00:26:05.860Z"}],"reviews":[]}