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 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
serg-tanichev/email-spam-tester-mcp
GitHub Stars
0

TDQS

A4/5.0

Scored across 4 tools

Disambiguation4/5

Each tool maps to a distinct step: reserving an address, waiting for analysis, reading a report, and fetching raw source. The only mild overlap is between get_report and wait_for_report (both surface report data), but the descriptions clearly separate 'read now' from 'block until ready'.

Naming Consistency4/5

Three of four tools use a clean get_<noun> pattern (get_message_source, get_report, get_test_address), with wait_for_report as a sensible verb deviation for a blocking operation. Convention is consistent and readable.

Tool Count4/5

Four tools cleanly model the test lifecycle (reserve address → send → wait → read report, plus source retrieval). It is a bit lean but every tool earns its place with no redundancy.

Completeness4/5

The core workflow is fully covered: obtaining a test address, waiting for the SMTP-delivered message to be analysed, reading the resulting report, and inspecting raw source. Minor gaps like listing or deleting past reports exist, but agents can work around them via slugs.

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, or to find the
confirmation link in a welcome letter.
ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe slug of a test or a series letter whose message has already arrived.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety and side-effect profile is fully covered by structured data. The description adds that the payload is the raw received message (headers plus both bodies), which is a mild extra. With an output schema present and annotations doing the heavy lifting, no further behavioral disclosure is required, so this sits at baseline.

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?

Three short sentences, front-loaded with the return payload before the usage rationale. Every sentence contributes either content or a routing cue, with no filler. Minor verbosity in the second sentence's clause structure keeps it from a 5.

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?

For a single-parameter read tool with full annotation coverage and an output schema, the description supplies the needed purpose and two usage scenarios. Return values need not be explained since an output schema exists. The only gap is the absence of guidance on failure cases, such as what happens if no message has arrived.

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?

Only one parameter (slug) and schema description coverage is 100%, so the schema already documents that it must be a test or series letter whose message has arrived. The description adds no syntax, format, or constraint detail about the slug. Baseline 3 is appropriate when the schema fully carries 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?

The description states what the tool returns concretely: the message as received, including headers, both bodies, and source. This is specific enough to distinguish it from siblings like get_report or get_series_letters, which deal with reports and letters rather than raw received message source. It is phrased as a noun clause rather than a verb+resource, which slightly blunts the action, but the resource is unambiguous.

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?

Two concrete when-to-use scenarios are given: when a finding points at a header and the agent needs to verify what was actually sent, and when hunting a confirmation link in a welcome letter. These are clear triggering conditions. It does not name alternatives or state when not to use it, but the context is strong enough for an agent to route correctly.

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.

Works for one-hour tests and for letters in the person's series mailboxes.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe slug of a test or of a letter in a series mailbox, the last part of the report URL.

Output Schema

ParametersJSON Schema
NameRequiredDescription
viewYestest, report, mailbox, mailboxes, series or error

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, non-destructive and closed-world, so the bar is lower; the description adds genuinely useful behavior the annotations don't encode — it returns immediately rather than blocking, and results may be partial ('so far'), which warns the agent about incomplete placement data.

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, front-loaded with the action and the key non-blocking property. No waste, though the second sentence's phrasing is slightly awkward rather than maximally crisp.

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 values need not be described; the description supplies the valid scope (one-hour tests, series-mailbox letters) and the non-blocking/partial-result behavior. Together with the annotations, an agent has everything needed to call it correctly.

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 description coverage is 100% and the single slug parameter is fully documented in the schema, including the 'last part of the report URL' hint. The description adds nothing beyond 'by its slug', so the baseline 3 applies.

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?

States a specific verb (read) and resource (report) keyed by slug, and the 'without waiting' clause implicitly separates it from the sibling wait_for_report. The phrase 'with provider placement so far' is cryptic and adds little clarity, but the core purpose is unambiguous.

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

Usage Guidelines3/5

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

'Without waiting' hints at the non-blocking alternative (wait_for_report) but never names it or states an explicit condition for choosing one over the other. The scope note ('one-hour tests' and 'letters in the person's series mailboxes') does tell the agent what kinds of slugs are valid.

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.
ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
viewYestest, report, mailbox, mailboxes, series or error

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false, openWorldHint=true, idempotentHint=false. The description adds far more: the address is single-use, accepts exactly one message, expires after an hour, and the resulting report covers 42 named check categories plus a fix plan. It also discloses a non-obvious behavioural split -- wait_for_report always quotes check lines in English while report_url renders the recipient's language.

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?

It is front-loaded with the core action and constraint, and most sentences carry non-obvious information. It is nonetheless long for a two-parameter tool and a few asides (e.g. 'which carries no hint of who is waiting for it', 'half the checks read what that platform adds') could be tightened without losing meaning.

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 values need not be spelled out, and the safety profile is covered by annotations. What the description does supply -- what the address accepts, its expiry, the sender requirement, report contents, and language behaviour -- is everything an agent needs to call this correctly within 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 coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema for lang: it must be chosen at reservation time because the later SMTP delivery carries no language hint, and it affects the report page rather than the wait_for_report output. include_placement is left to the schema, which already documents it thoroughly.

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 gives a specific verb and resource -- 'Reserve a single-use address to send a draft email to, for a full check' -- and immediately clarifies scope (one message, one hour TTL). It is clearly distinguishable from the siblings, since the actual report retrieval is routed to wait_for_report and report_url.

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 states the usage condition clearly: the person must send the email themselves, from the platform or mailbox they really send from, because half the checks read what that platform adds. It also names the division of labour with wait_for_report. There is no explicit 'when not to use this' case, so it stops short of a 5.

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.
ParametersJSON Schema
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

ParametersJSON Schema
NameRequiredDescription
viewYestest, report, mailbox, mailboxes, series or error

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly, idempotent, non-destructive, but the description adds genuinely non-obvious behavior: it blocks rather than returning a not-ready signal, it returns partial results past the timeout, and provider placement keeps filling in for up to 30 minutes afterward. This is the kind of context annotations cannot convey.

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-loaded with the core action, then rationale and the sibling pointer. Slightly more prose than strictly needed, but each sentence carries a distinct piece of information (precondition, blocking rationale, post-report window).

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 values need not be explained. Combined with 100% schema coverage and rich annotations, the description covers the sequencing, blocking behavior, and timeout outcome — nothing an agent needs to call this correctly 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 description coverage is 100%, so both parameters are already fully documented, including the slug's provenance and the timeout semantics. The description adds only marginal restatement (slug comes from get_test_address), so the baseline of 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 and resource ('wait until the message arrives and has been analysed') and explicitly distinguishes itself from the sibling get_report ('get_report reads the latest'). An agent can tell this is the blocking wait rather than the non-blocking read without inspecting either schema.

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?

Gives an explicit precondition — call it after the email has been sent to the address returned by get_test_address — and names the alternative (get_report) plus the polling failure mode it is designed to prevent. Both when-to-use and the sibling relationship are spelled out.

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. 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."
  2. 5 tool updates
    • Removedclose_series_mailbox
    • Removedget_series_letters
    • Removedlist_series_mailboxes
    • Removedopen_series_mailbox
    • Removedwrite_fix_plan
  3. 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
  4. 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
  5. 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
    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
    61 npm
    2
    MIT
  • A
    license
    A
    quality
    C
    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
    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
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides email verification as an MCP tool, checking format, disposable domains, and mail server availability with structured results.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.