Skip to main content
Glama

Verify a list of email addresses (spends money)

create_email_verification_job
Destructive

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. An address costs one verification credit when the first provider rejects it outright and two when both providers answer, so budget two credits per address in the list. 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. The job runs in the background: its state reaches done when every address has a verdict, and the verdicts are then available per address.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "name": "<name>",
      "emails": "<emails>"
    },
    "name": "create_email_verification_job"
  }
}

Input 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. Changed1 schema field changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. Added

TDQS

A4.6/5.0
Behavior5/5

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

Goes far beyond annotations (readOnlyHint=false, destructiveHint=true, openWorldHint=true, idempotentHint=false) by quantifying the money: one credit when the first provider rejects, two when both answer, budget two per address. It also discloses dedup/invalid handling before charge, the invalid_emails return, unbilled unknown results when the monthly allowance runs out mid-job, and asynchronous completion semantics — none of which appear in the 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-loads the highest-stakes fact ('SPENDS MONEY') and proceeds in a logical order: cost, scope, billing arithmetic, preconditions, mid-job degradation, async lifecycle. It is dense and long for a 2-parameter tool, but nearly every sentence carries operational consequences; the closing background-state sentence is the weakest, mildly redundant with earlier 'per-address verdict' wording.

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 metered, non-idempotent, open-world mutation with no output schema, the description supplies everything an agent needs before committing: cost model, subscription and trial gates with error codes, partial-failure behavior, and the fact that results are retrieved later per address. Nothing material is left to guesswork.

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% and both params are documented, so the baseline is 3. The description still adds meaning: the billed total is based on post-dedup, post-validation addresses rather than what was submitted, and 'name' is framed as an in-app label — context the schema strings alone do not convey.

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 (creates a verification job over a submitted list) and immediately bounds it: 'does NOT create or send a campaign — it verifies a list on its own.' The distinction from campaign-creating siblings and the deliverable ('per-address verdict you can download as CSV') let an agent identify the tool without opening the schema.

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 clear when-to-use framing (standalone list verification rather than a campaign), plus gating conditions: active/trialing subscription required, past_due refused with subscription_not_active, trialing capped at 100 addresses with trial_allowance_exceeded. It stops short of pointing at the follow-up tools (get_email_verification_job / list_email_verification_results) for retrieving results, leaving that step inferred from 'runs in the background'.

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