Skip to main content
Glama

Find a verified work email

generate_email

Find and verify a work email. BILLABLE — about $0.02 per VALID email found (a miss is free) (Tier 0 list price; your account may pay a different rate — call get_balance for your real prices, and read cost.amount_charged in every response for what was actually spent). Identify the person by lead_id (best), LinkedIn URL, or first+last+domain. candidates resolves several people in one call; more than 10 is routed to an async bulk job instead, which returns a job_id for get_bulk_job.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
domainNoCompany domain without protocol, e.g. "stripe.com" (name+domain mode).
lead_idNoGenerect lead id from search / preview / enrich results — the cheapest and most accurate identifier.
last_nameNoLast name (name+domain mode).
candidatesNoBatch mode. Each entry uses the same identifier rules as the single-person form.
first_nameNoFirst name (name+domain mode).
timeout_msNoRequest timeout in milliseconds.
middle_nameNoMiddle name (optional, improves pattern matching).
linkedin_urlNoLinkedIn profile URL.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
jobNo
costNo
modeNo
droppedNo
resultsNo
next_stepNo
requestedNo
submittedNo
test_modeNo
test_mode_noticeNo
vocabulary_warningsNo
deprecated_params_ignoredNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • removedInput schema / additionalProperties
      Removed value: -false
    • removedInput schema / properties / candidates / items / additionalProperties
      Removed value: -false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / properties / deprecated_params_ignored / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / results / items
      Added value: +{}
    • addedOutput schema / properties / vocabulary_warnings / items
      Added value: +{}
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "cost": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "amount_charged_usd": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "billed": {
      +          "type": "string"
      +        },
      +        "note": {
      +          "type": "string"
      +        },
      +        "operation": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "deprecated_params_ignored": {
      +      "additionalProperties": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "dropped": {
      +      "type": "number"
      +    },
      +    "job": {},
      +    "mode": {
      +      "type": "string"
      +    },
      +    "next_step": {
      +      "type": "string"
      +    },
      +    "requested": {
      +      "type": "number"
      +    },
      +    "results": {
      +      "type": "array"
      +    },
      +    "submitted": {
      +      "type": "number"
      +    },
      +    "test_mode": {
      +      "type": "boolean"
      +    },
      +    "test_mode_notice": {
      +      "type": "string"
      +    },
      +    "vocabulary_warnings": {
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Changed12 schema fields changed
    • changedInput schema / properties / candidates / description
      Previous value: -"Batch mode: resolve many people in one call. Each needs first_name, last_name, domain (middle_name optional)."New value: +"Batch mode. Each entry uses the same identifier rules as the single-person form."
    • addedInput schema / properties / candidates / items / description
      Added value: +"One of: {lead_id} | {linkedin_url} | {first_name,last_name,domain}"
    • addedInput schema / properties / candidates / items / properties / lead_id
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / candidates / items / properties / linkedin_url
      Added value: +{
      +  "type": "string"
      +}
    • removedInput schema / properties / candidates / items / required
      Removed value: -[
      -  "first_name",
      -  "last_name",
      -  "domain"
      -]
    • changedInput schema / properties / domain / description
      Previous value: -"Company domain without protocol, e.g. \"generect.com\" (required in single-person mode)."New value: +"Company domain without protocol, e.g. \"stripe.com\" (name+domain mode)."
    • changedInput schema / properties / first_name / description
      Previous value: -"First name (single-person mode)."New value: +"First name (name+domain mode)."
    • changedInput schema / properties / last_name / description
      Previous value: -"Last name (single-person mode)."New value: +"Last name (name+domain mode)."
    • addedInput schema / properties / lead_id
      Added value: +{
      +  "description": "Generect lead id from search / preview / enrich results — the cheapest and most accurate identifier.",
      +  "type": "string"
      +}
    • addedInput schema / properties / linkedin_url
      Added value: +{
      +  "description": "LinkedIn profile URL.",
      +  "type": "string"
      +}
    • changedInput schema / properties / middle_name / description
      Previous value: -"Middle name (optional)."New value: +"Middle name (optional, improves pattern matching)."
    • changedInput schema / properties / timeout_ms / description
      Previous value: -"Request timeout in milliseconds"New value: +"Request timeout in milliseconds."
  4. Changed6 schema fields changed
    • addedInput schema / properties / candidates
      Added value: +{
      +  "description": "Batch mode: resolve many people in one call. Each needs first_name, last_name, domain (middle_name optional).",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "domain": {
      +        "type": "string"
      +      },
      +      "first_name": {
      +        "type": "string"
      +      },
      +      "last_name": {
      +        "type": "string"
      +      },
      +      "middle_name": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "first_name",
      +      "last_name",
      +      "domain"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / domain / description
      Previous value: -"Company domain without protocol (e.g., generect.com)"New value: +"Company domain without protocol, e.g. \"generect.com\" (required in single-person mode)."
    • changedInput schema / properties / first_name / description
      Previous value: -"First name of the person"New value: +"First name (single-person mode)."
    • changedInput schema / properties / last_name / description
      Previous value: -"Last name of the person"New value: +"Last name (single-person mode)."
    • addedInput schema / properties / middle_name
      Added value: +{
      +  "description": "Middle name (optional).",
      +  "type": "string"
      +}
    • removedInput schema / required
      Removed value: -[
      -  "first_name",
      -  "last_name",
      -  "domain"
      -]
  5. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond annotations by disclosing cost semantics (~$0.02 per VALID email, misses free), that pricing is tier/list-dependent with a pointer to get_balance, and that cost.amount_charged in each response is the ground truth. Also discloses the async-routing threshold behavior, which no annotation conveys.

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 sentences, front-loaded with purpose then billing then identifier modes, and every clause carries information. The stacked parentheticals around pricing ('(a miss is free) (Tier 0 list price; ...)') are dense and slightly hard to parse, costing a point on structure.

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 values need no explanation, and the description nonetheless covers pricing, every identifier mode, batch behavior, and async escalation. For an 8-parameter, 0-required tool this is complete enough for correct invocation.

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 baseline is 3, but the description adds real value by ranking identifiers ('lead_id (best)'), naming the three valid modes, and explaining the candidates batch threshold. It still doesn't reconcile the 0-required-parameter situation (exactly one mode must be chosen) at the top level beyond the identifier list.

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 ('Find and verify a work email') immediately, and the identifier/batch details make it clearly distinguishable from siblings like validate_email (which verifies an existing address) and find_phone. An agent can route here vs. elsewhere 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 explicit identifier preference ('lead_id (best), LinkedIn URL, or first+last+domain') and an explicit alternative path for batches over 10 ('routed to an async bulk job ... job_id for get_bulk_job'). It stops short of stating when NOT to use it (e.g., 'if you already have the address, use validate_email'), so it's strong but not fully exhaustive.

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.