Skip to main content
Glama

Proxy Mail QA

Check that no email arrives

expect_no_email

Watches the address for up to 30 seconds and passes if no matching email arrives, for checks such as "an unsubscribed user gets nothing" or "a second reset request is rate-limited". Answers as soon as one does arrive, saying when and from whom (passed: false), never what it says. Pass since as the time the action happened. For longer, pass until (up to 60 minutes after since) and call again with the same since and until while done is false.

Input Schema

NameRequiredDescriptionDefault
testNoWith run_id: the test or step this call belongs to, shown beside what it saw in the report.
typeNoOnly emails with a code, or with a link.
sinceNoOnly email received at or after this time, such as when the test submitted the form.
untilNoWith since: the end of a longer window, up to 60 minutes after since. Each call still watches up to 30 seconds; done says when the window is over.
run_idNoA run from start_run: what this call sees is added to its report.
addressYesA test address in this project. A variant works too (capitals, or a +tag such as name+o'brien@…): it acts on the plain address, and a wait on a +tag variant only finds mail sent to it.
serviceNoOnly email from this sender, by service name or domain.
subtypeNoWith type, comma-separated: otp or coupon for codes; verify, magic_signin, invite, reset, other, unsubscribe or list_unsubscribe for links; or any (for links, the sign-in kinds and other).
categoryNoOnly sign-in emails (auth), receipts and notices (transactional), or offers and newsletters (marketing). For "an unsubscribed user gets no marketing", use marketing: receipts should still arrive.
timeout_secondsNoHow long to watch. 0 checks once.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / category
      Added value: +{
      +  "description": "Only sign-in emails (auth), receipts and notices (transactional), or offers and newsletters (marketing). For \"an unsubscribed user gets no marketing\", use marketing: receipts should still arrive.",
      +  "enum": [
      +    "auth",
      +    "transactional",
      +    "marketing"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / subtype / description
      Previous value: -"With type, comma-separated: otp or coupon for codes; verify, magic_signin, invite, reset or other for links; or any."New value: +"With type, comma-separated: otp or coupon for codes; verify, magic_signin, invite, reset, other, unsubscribe or list_unsubscribe for links; or any (for links, the sign-in kinds and other)."
    • addedInput schema / properties / until
      Added value: +{
      +  "description": "With since: the end of a longer window, up to 60 minutes after since. Each call still watches up to 30 seconds; done says when the window is over.",
      +  "format": "date-time",
      +  "type": "string"
      +}
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, the description discloses the watch duration, early return behavior, what is reported when an email arrives, that content is never revealed, and the polling protocol for longer windows. This is exactly the behavioral detail an agent needs for a timed negative check.

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 description is dense but front-loaded and every sentence carries operational meaning. A few phrases are packed tightly, such as 'Pass since as the time the action happened,' but there is little wasted text.

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?

For a complex timed check with ten parameters and no output schema, the description supplies the critical return and polling semantics. Combined with the fully documented schema, it is complete enough for an agent to invoke and interpret the tool correctly.

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 schema already documents all parameters. The description adds useful meaning beyond the schema by explaining how to set since, how until extends the window, and how to poll with the same since and until while done is false.

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: it watches an address and passes if no matching email arrives. It also gives concrete example use cases, which makes its purpose distinct from sibling tools like check_email, wait_for_code, and wait_for_link.

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 clearly explains when to use the tool, including examples such as an unsubscribed user receiving nothing or a rate-limited reset request. It also explains the longer-window polling pattern, though it does not explicitly name an alternative sibling tool for comparison.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources