Skip to main content
Glama

Verify a list of email addresses (spends money)

create_email_verification_job

SPENDS MONEY: every address checked adds metered usage to the workspace's next invoice. This does NOT use prospect credits and it does NOT create or send a campaign — it verifies a list on its own and gives back a per-address verdict you can download as CSV. Call get_email_verification_rates first for the current price: an address costs one verification credit when the first provider rejects it outright and two when both providers answer, so multiply your list size by perAddressCeilingUsd to budget. An address that gets no verdict is NOT billed and comes back with result unknown. Duplicates are removed and unparseable entries are returned in invalid_emails before anything is charged, so the total in the response is what will be billed against, not what you submitted. Needs an active or trialing subscription: a past_due workspace is refused with subscription_not_active, and a trialing workspace may submit up to 100 addresses in total across all its jobs, after which it is refused with trial_allowance_exceeded (the message says how many are left). If the workspace's monthly verification allowance runs out mid-job the job does not fail — the remaining addresses come back unknown, marked, still in the download, and unbilled. Poll get_email_verification_job until state is done, then read the results with list_email_verification_results.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesWhat to call this job in the app, e.g. 'Q3 conference list'
emailsYesThe addresses to verify, up to 50,000. Duplicates and unparseable entries are dropped before billing.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare openWorld/idempotent/destructive hints; the description carries far more: metered billing with per-address cost model (1 credit on first-provider rejection, 2 when both answer), no-verdict = unbilled, duplicates/unparseable dropped before billing, subscription state requirements, specific refusal codes (subscription_not_active, trial_allowance_exceeded), and mid-job allowance exhaustion behavior. This is exceptional disclosure beyond structured fields.

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 critical 'SPENDS MONEY' warning and organized around billing, eligibility, and next-steps. It is long and dense, but nearly every sentence carries unique billing/error behavior; only minor pruning (e.g., restating the duplicate drop already in the schema) would tighten it.

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?

With no output schema, the description fills the gap by explaining the full lifecycle: response gives a billed total, per-address verdicts downloadable as CSV, unknown results, and the poll-then-list follow-up. An agent has everything needed to invoke it correctly and safely.

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 both parameters (name, emails) are already documented in the schema, including the 50k cap and the duplicate/unparseable drop. The description restates the dedup/billing interaction but adds little parameter-specific syntax or semantics beyond the schema, so the 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+resource (create a verification job over a list) and explicitly contrasts with siblings: 'does NOT create or send a campaign — it verifies a list on its own.' An agent can distinguish it from cancel/get/list_email_verification_job and from campaign creation without reading any 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 explicit prerequisites and sequencing: call get_email_verification_rates first for pricing, then poll get_email_verification_job until state is done, then list_email_verification_results for results. Also states when it is refused (past_due, trial limits), which is a genuine usage boundary.

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