Skip to main content
Glama
bouncelens

BounceLens Email Check

Official
by bouncelens

BounceLens Email Check – MCP server

Lets Claude, Cursor and other MCP clients check email addresses before you send to them or save them. It finds:

  • Typos in the domain: jane@gmial.com → did you mean jane@gmail.com?

  • Disposable / throwaway domains (mailinator.com, 10minutemail and ~9,000 more)

  • Dead domains: the domain doesn't exist, has no mail server, or says it accepts no email (null MX)

  • Bad syntax, role addresses (info@, sales@), free providers, and duplicates (Gmail dot and +tag variants count as the same inbox)

  • The mail provider behind the domain (Google, Microsoft, Proofpoint, …)

Runs on your machine. No API key, no account, no sign-up. The only network calls are DNS lookups over HTTPS (Cloudflare 1.1.1.1). It uses the same checks as the free checker at bouncelens.com.

It never connects to the recipient's mail server, so it can't confirm that a mailbox exists. The best result is unconfirmed (format and domain OK). To check a whole CSV in your browser, use bouncelens.com.

Install

Requires Node.js 18 or newer. Also listed on Smithery.

Claude Code

claude mcp add bouncelens -- npx -y github:bouncelens/mcp-email-check

Claude Desktop, Cursor, Windsurf and other clients. Add this to the client's MCP config (claude_desktop_config.json, .cursor/mcp.json, …):

{
  "mcpServers": {
    "bouncelens": {
      "command": "npx",
      "args": ["-y", "github:bouncelens/mcp-email-check"]
    }
  }
}

From a clone

git clone https://github.com/bouncelens/mcp-email-check.git
cd mcp-email-check && npm install
# then use: "command": "node", "args": ["/path/to/mcp-email-check/index.js"]

Related MCP server: email-verify

Tools

Tool

Input

Returns

check_email

email (string)

One result

check_emails

emails (array, max 500)

summary with counts + one result per address, in input order

Each result (real output for a mistyped Outlook address):

{
  "input": "jane@outlok.com",
  "email": "jane@outlok.com",
  "status": "risky",
  "reasons": ["No MX record; mail would go to the website server", "Looks like a typo of outlook.com"],
  "flags": { "disposable": false, "role": false, "free": false, "duplicate": false, "gateway": false },
  "did_you_mean": "jane@outlook.com",
  "provider": null,
  "mx": null
}

status

Meaning

invalid

Will bounce: bad syntax, domain doesn't exist, no mail server, or null MX

risky

Disposable domain, likely typo, no MX record (mail would go to the web server), or the DNS lookup failed

unconfirmed

Format and domain OK. The mailbox itself isn't checked

Example prompts

  • "Check these sign-ups for fake or mistyped emails: …"

  • "Is jane@outlok.com a real address?"

  • "Clean this list: drop invalid and disposable addresses, fix the typos, remove duplicates."

Privacy

Addresses never leave your machine. Only the domain part is sent to Cloudflare's DNS-over-HTTPS resolver (1.1.1.1) to look up its MX/A records.

Development

npm install
npm test          # offline: DNS answers are faked

lib/engine.js and data/disposable.json are generated from the BounceLens main codebase, so change them there.

More from BounceLens

  • bouncelens.com – free email list checker in your browser (CSV in, clean list out)

  • Craft CMS plugin – blocks fake and mistyped emails in Craft forms

License

MIT. Disposable-domain list: disposable-email-domains (CC0).

Available Tools

2 tools
check_emailCheck one email addressA
Read-only

Check one email address for bad syntax, typos in the domain (gmial.com → gmail.com), disposable/throwaway domains, role addresses (info@, sales@) and domains that do not exist or have no mail server. status is "invalid" (will bounce: bad syntax, domain does not exist, no mail server), "risky" (disposable domain, likely typo such as gmial.com, no MX record) or "unconfirmed" (format and domain OK; the mailbox itself is not checked). did_you_mean holds the corrected address for typos.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesThe email address to check

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only declare readOnlyHint and openWorldHint, so the description carries the substantive behavioral load and does it well: it explains what each status means, that an 'unconfirmed' result means the mailbox itself was not verified, and how did_you_mean is populated. It stops short of noting rate limits, quota, or whether the check is real-time, but the core semantics are unusually well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each carrying distinct load: what is checked, what each status means, and what did_you_mean contains. The most important content (the checked categories) is front-loaded with no filler.

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 correctly compensates by documenting the return fields (status values and did_you_mean) and the meaning of the 'unconfirmed' outcome. Nothing an agent needs in order to call and interpret this tool 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?

There is a single parameter at 100% schema description coverage, so the schema already documents it fully. The description adds no format, normalization, or trimming detail beyond the schema, which puts it at the baseline for fully covered parameters.

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 opens with a specific verb and resource ('Check one email address') and enumerates exactly what is validated (syntax, domain typos, disposable domains, role addresses, non-existent domains). The singular 'one' implicitly separates it from the sibling check_emails, so an agent can pick correctly without opening a 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?

It defines the validation use case clearly and the three status outcomes give the agent a sense of when each result type applies. However, it never explicitly names the alternative sibling check_emails or states when to prefer it, so the routing guidance stays implicit rather than stated.

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

check_emailsCheck a list of email addressesA
Read-only

Check up to 500 email addresses at once (same checks as check_email, plus duplicates, counting Gmail dot and +tag variants as the same inbox). Returns a summary with counts and one result per address, in input order. status is "invalid" (will bounce: bad syntax, domain does not exist, no mail server), "risky" (disposable domain, likely typo such as gmial.com, no MX record) or "unconfirmed" (format and domain OK; the mailbox itself is not checked). did_you_mean holds the corrected address for typos.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailsYesEmail addresses, at most 500

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=true, openWorldHint=true), the description discloses the exact semantics of each result state, including the crucial caveat that 'unconfirmed' means the mailbox itself was never verified, and that typo corrections are surfaced in did_you_mean. It also explains duplicate normalization behavior, which materially affects how an agent should interpret the returned counts.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The scale limit and sibling relationship are front-loaded, and the three status values are enumerated compactly in a single sentence. Every sentence carries distinct information with no repetition or filler.

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 carries the full burden of describing the return value, and it does: a summary with counts plus one result per address in input order, the status vocabulary, and the did_you_mean field. Nothing an agent needs to call or interpret this tool 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% and there is only one parameter, so the schema already documents the input fully. The description echoes the 500-item cap (already present in the schema) but adds no format or syntax detail beyond that, so it is a baseline 3.

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 names a specific action (check email addresses in bulk) with an explicit scale limit (up to 500) and distinguishes itself from the sibling check_email by adding duplicate collapsing across Gmail dot and +tag variants. An agent can tell exactly what this tool does and how it differs from the single-address tool without opening 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 Guidelines4/5

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

It grounds usage in the sibling by stating it performs the 'same checks as check_email, plus duplicates', which implies the batch case is the reason to pick this tool. However, it never explicitly says when to prefer check_email instead, nor states prerequisites or rate limits, so the routing guidance is implied rather than 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. 2 tool updatesv1.0.0
    • First observedcheck_email
    • First observedcheck_emails

TDQS

A4.5/5.0

Scored across 2 tools

Disambiguation5/5

check_email and check_emails have clearly distinct purposes: one validates a single address, the other validates up to 500 in a batch. The descriptions explicitly differentiate them, and there is no functional overlap that would cause misselection.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern (check_email, check_emails), with the plural form clearly indicating the batch operation. The naming is predictable and easy to infer.

Tool Count4/5

Two tools is slightly below the typical 3-15 range, but the server's narrow purpose (email validation) is well-covered by a single and a bulk tool. Each tool earns its place, and adding more would likely be redundant.

Completeness5/5

The surface fully covers the stated domain: single and bulk email validation with detailed statuses, typo suggestions, and duplicate handling. There are no obvious missing operations for the core task, and the limitation on mailbox checking is clearly disclosed.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables real-time email verification via MCP tools, checking syntax, MX, disposable domains, and optional SMTP probe to determine deliverability with a VALID/RISKY/INVALID verdict.
    2
    9 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Comprehensive email validation MCP server that checks syntax, MX records, disposable domains, role-based accounts, SPF/DKIM, typo suggestions, and risk scoring.
    -
  • 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.
    -