Skip to main content
Glama

Server Details

Test an email before it goes out: a disposable address, 41 checks with RFC citations, a fix plan.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.7% over 41 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
serg-tanichev/email-spam-tester-mcp
GitHub Stars
0

TDQS

A4.1/5.0

Scored across 4 tools

Disambiguation4/5

Each tool has a fairly distinct role in the send-and-check workflow: get_test_address reserves an address, wait_for_report blocks for analysis, get_report reads the current report, and get_message_source retrieves the raw message. The only mild overlap is between wait_for_report and get_report, but their descriptions clearly differentiate blocking-summary versus immediate-read behavior.

Naming Consistency4/5

Three of four tools follow a clean get_<noun> pattern (get_message_source, get_report, get_test_address), with wait_for_report the single deviation using a different verb. This is a minor, readable break rather than a chaotic mix.

Tool Count4/5

Four tools cleanly map to one coherent lifecycle (reserve address, wait for analysis, read report, inspect raw source), so each earns its place. It is on the lean side but not thin enough to feel incomplete for the workflow.

Completeness4/5

The surface covers the full loop of reserving a test address, sending, awaiting analysis, reading the report, and inspecting the raw message source. Minor gaps exist (e.g. no listing/history of past reports or a way to re-trigger a check), but core workflows are covered.

Available Tools

4 tools
get_message_sourceRead the received messageA
Read-onlyIdempotent
Inspect

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.
NameRequiredDescriptionDefault
slugYesThe slug of a test whose message has already arrived.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly/idempotent/non-destructive, and the description adds genuinely new lifecycle facts: one-hour retention, deletion afterward, and that anyone holding the slug can read it during that window. That is real context beyond the structured fields, though nothing is said about size limits or what the output looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with what the tool returns, then the use case, then the retention constraint. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return shape need not be described; the description still covers the critical behavioral constraint (one-hour window) an agent needs before calling. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single slug parameter is documented as 'a test whose message has already arrived'; the description adds no format or syntax detail beyond that. Baseline 3 is appropriate when the schema carries the parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names the verb+resource precisely and enumerates what the payload contains (headers, both bodies, source). It implicitly separates itself from the report sibling ('after that only the report remains') but never names get_report explicitly, so sibling differentiation is only implied.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete trigger: when a finding points at a header and the agent needs the actual sent bytes rather than its assumption. Strong context, but no explicit 'do not use for X' or named alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reportRead a reportA
Read-onlyIdempotent
Inspect

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.
NameRequiredDescriptionDefault
slugYesThe slug of a test, the last part of the report URL.

Output Schema

NameRequiredDescription
viewYesWhich card to draw.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered. The description adds that the report stays at its link permanently and anyone with the link can read it, which is useful permission context, but it omits error behavior (e.g. unknown slug) and response format details already covered by the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, with the core action front-loaded and the content list following. The 'provider placement so far' phrase is slightly awkward and the preamble is a bit longer than necessary, but there is no real waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, has a rich set of annotations, and an output schema, so the description needn't explain return values. It covers purpose, permanence, and access. A small missing piece is what happens when the slug is unknown, but overall it is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the slug parameter is fully documented in the schema as 'the last part of the report URL'. The description only restates 'by its slug', adding no syntax or format details beyond what the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and resource (report by slug), and the 'without waiting' phrase differentiates it from the sibling wait_for_report. The enumerated content (checks, score, fix plan, subject/sender) makes the return value concrete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'without waiting' implies this is the right call when the report already exists, positioning it against wait_for_report. However, no explicit when-not-to-use or naming of the alternative is given, so the contrast is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_test_addressGet a test addressAInspect

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.
NameRequiredDescriptionDefault
langNoISO 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_placementNoAlso 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.

Output Schema

NameRequiredDescription
viewYesWhich card to draw.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations cover the safety profile (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false), and the description adds substantial behavioral detail beyond them: single-use, one-hour expiry, must be sent from the real sending platform, why lang must be chosen at reservation time (SMTP carries no locale hint), and the split between English check lines in wait_for_report versus the localized report page. No contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and constraints are front-loaded in the first two sentences, and the later paragraphs each add real information (expiry, send requirements, check coverage, language timing). It is somewhat longer than strictly necessary for a two-parameter tool, with some enumerations that could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the async, email-mediated flow, the description covers the lifecycle well and an output schema exists so return values need not be detailed. It does not explicitly name which sibling to poll for the finished report or the sequencing after the message is sent, which is the main remaining gap for an agent orchestrating the workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, and the description earns extra credit by explaining why lang is captured now rather than later and how it affects the two output surfaces. include_placement is not mentioned in the description at all, so it does not compensate for that gap, but the schema already documents it fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("Reserve a single-use address to send a draft email to") and defines the scope of the resulting check (42 checks, SPF through bulk-sender rules). It is clearly distinguishable from the siblings get_report, get_message_source, and wait_for_report, which it treats as downstream consumers of the address it creates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It establishes the workflow context (reserve here, send from your real platform, then read report_url or wait_for_report) and contrasts what wait_for_report returns versus what the report page shows. However, it never explicitly says when to choose this over the sibling tools or what happens if the address is used incorrectly beyond the one-message/one-hour constraints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_for_reportWait for the reportA
Read-onlyIdempotent
Inspect

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.
NameRequiredDescriptionDefault
slugYesThe slug get_test_address returned, the last part of the report URL.
timeout_secondsNoHow 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.

Output Schema

NameRequiredDescription
viewYesWhich card to draw.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnly/idempotent; the description adds the crucial blocking behavior, the 30-minute provider-placement window, and that it returns partial state after timeout. These are exactly the traits an agent cannot learn from the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then rationale, then sibling routing. The polling-explanation sentence is a touch long but its content is load-bearing rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return shape needs no explanation; the description covers everything else an agent needs: ordering, blocking semantics, timeout behavior, and where to go next (get_report).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns extra by tying slug provenance to get_test_address and clarifying the timeout trade-off (checks under a minute, fix plan ~another minute, then returns what it has). Slight redundancy with the schema's own timeout text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (wait) and resource (for the message/report), with the added twist that it summarises the analysed message. The polling-vs-blocking distinction and the 'call it after get_test_address' sequencing separate it cleanly from get_report and the other siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit ordering ('Call it after the email has been sent to the address from get_test_address') and an explicit alternative ('get_report reads the latest'), plus a when-not rationale: agents that poll a non-blocking call write sleep loops and give up. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changedget_report1 field changed
      • changedOutput schema / properties / view / description
        Previous value: -"test, report, mailbox, mailboxes, series or error"New value: +"Which card to draw."
    • Changedget_test_address1 field changed
      • changedOutput schema / properties / view / description
        Previous value: -"test, report, mailbox, mailboxes, series or error"New value: +"Which card to draw."
    • Changedwait_for_report1 field changed
      • changedOutput schema / properties / view / description
        Previous value: -"test, report, mailbox, mailboxes, series or error"New value: +"Which card to draw."
  2. 2 tool updates
    • Changedget_message_source1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"The slug of a test or a series letter whose message has already arrived."New value: +"The slug of a test whose message has already arrived."
    • Changedget_report1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"The slug of a test or of a letter in a series mailbox, the last part of the report URL."New value: +"The slug of a test, the last part of the report URL."
  3. 1 tool update
    • Changedget_test_address1 field changed
      • changedInput schema / properties / include_placement / description
        Previous value: -"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. Only set it when the person asked for placement and the message is not confidential; say so to them."New value: +"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."
  4. 5 tool updates
    • Removedclose_series_mailbox
    • Removedget_series_letters
    • Removedlist_series_mailboxes
    • Removedopen_series_mailbox
    • Removedwrite_fix_plan
  5. 9 tool updates
    • Addedclose_series_mailbox
    • Changedget_message_source1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"The slug of a test whose message has already arrived."New value: +"The slug of a test or a series letter whose message has already arrived."
    • Changedget_report7 fields changed
      • changedInput schema / properties / slug / description
        Previous value: -"The slug of a test, the last part of the report URL."New value: +"The slug of a test or of a letter in a series mailbox, the last part of the report URL."
      • addedOutput schema / additionalProperties
        Added value: +true
      • addedOutput schema / description
        Added value: +"What every tool returns for the card; `view` says which card."
      • removedOutput schema / properties / result
        Removed value: -{
        -  "title": "Result",
        -  "type": "string"
        -}
      • addedOutput schema / properties / view
        Added value: +{
        +  "description": "test, report, mailbox, mailboxes, series or error",
        +  "title": "View",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "result"
        -]New value: +[
        +  "view"
        +]
      • changedOutput schema / title
        Previous value: -"get_reportOutput"New value: +"Output"
    • Addedget_series_letters
    • Changedget_test_address11 fields changed
      • addedInput schema / properties / include_placement
        Added value: +{
        +  "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. Only set it when the person asked for placement and the message is not confidential; say so to them.",
        +  "title": "Include Placement",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / lang / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / lang / default
        Previous value: -"en"New value: +null
      • changedInput schema / properties / lang / description
        Previous value: -"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."New value: +"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."
      • removedInput schema / properties / lang / type
        Removed value: -"string"
      • addedOutput schema / additionalProperties
        Added value: +true
      • addedOutput schema / description
        Added value: +"What every tool returns for the card; `view` says which card."
      • removedOutput schema / properties / result
        Removed value: -{
        -  "title": "Result",
        -  "type": "string"
        -}
      • addedOutput schema / properties / view
        Added value: +{
        +  "description": "test, report, mailbox, mailboxes, series or error",
        +  "title": "View",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "result"
        -]New value: +[
        +  "view"
        +]
      • changedOutput schema / title
        Previous value: -"get_test_addressOutput"New value: +"Output"
    • Addedlist_series_mailboxes
    • Addedopen_series_mailbox
    • Changedwait_for_report6 fields changed
      • addedOutput schema / additionalProperties
        Added value: +true
      • addedOutput schema / description
        Added value: +"What every tool returns for the card; `view` says which card."
      • removedOutput schema / properties / result
        Removed value: -{
        -  "title": "Result",
        -  "type": "string"
        -}
      • addedOutput schema / properties / view
        Added value: +{
        +  "description": "test, report, mailbox, mailboxes, series or error",
        +  "title": "View",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "result"
        -]New value: +[
        +  "view"
        +]
      • changedOutput schema / title
        Previous value: -"wait_for_reportOutput"New value: +"Output"
    • Addedwrite_fix_plan
  6. 4 tool updates
    • Changedget_message_source1 field changed
      • addedInput schema / properties / slug / description
        Added value: +"The slug of a test whose message has already arrived."
    • Changedget_report1 field changed
      • addedInput schema / properties / slug / description
        Added value: +"The slug of a test, the last part of the report URL."
    • Changedget_test_address1 field changed
      • addedInput schema / properties / lang / description
        Added value: +"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."
    • Changedwait_for_report4 fields changed
      • addedInput schema / properties / slug / description
        Added value: +"The slug get_test_address returned, the last part of the report URL."
      • addedInput schema / properties / timeout_seconds / description
        Added value: +"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."
      • addedInput schema / properties / timeout_seconds / maximum
        Added value: +600
      • addedInput schema / properties / timeout_seconds / minimum
        Added value: +5
  7. 4 tool updates
    • First observedget_message_source
    • First observedget_report
    • First observedget_test_address
    • First observedwait_for_report

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Checks email deliverability: audits a domain's SPF (including the 10-lookup limit), DKIM, DMARC and MX records with ranked fixes, checks a sending IP's reverse DNS and blocklist listings, and tests email headers against Gmail and Yahoo bulk sender requirements.
    3
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Programmatic email deliverability testing for AI agents. Create inbox placement tests across Gmail, Outlook, Yahoo, Mail.ru, Yandex — get per-provider placement (Inbox/Spam/Promotions), SPF/DKIM/DMARC auth, Rspamd & SpamAssassin verdicts, DNS health (MX, PTR, DNSBL), and live SSE results.
    5
    110 npm
    2
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Verify email addresses in real time, without sending anything: a valid, risky, invalid or unknown status with a score, disposable, role-based and catch-all detection, and typo suggestions. Official local server of the MailProbe API, hosted in France.
    2
    39 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Keyless email validation: disposable/burner, role-account, and free-provider detection, MX checks, and typo suggestions. Tools: check_email, check_domain.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.