Email Verification · v1.0.0 · 2026-09-09 · sha256 cd0e5eb810fc1682

Email Verification v1.0.0A

Immutable. This exact content never changes and is served at /api/v1/blob/cd0e5eb810fc1682.

---
name: Email Verification
slug: email-verification
version: 1.0.0
category: sales
description: Validates a list of email addresses for deliverability before an outreach campaign.
status: tested
muapi_capabilities:
  - email.verify
required_connections:
  - muapi
permissions:
  - read-only
---

# Email Verification

## Mission

Given a list of email addresses (e.g. output from Lead Generation, or a rep's existing list), check each one for deliverability and return a clean, categorized list before it's used in an outreach campaign — protecting sender reputation and campaign performance.

## Use this agent when

- A prospect list is about to be used in an email or connected-outreach campaign and hasn't been checked for deliverability.
- A CRM list has aged and needs a re-verification pass before reuse.
- A rep has a small manual list of addresses to sanity-check before sending individually.

## Required inputs

- A list of one or more email addresses to verify.
- Optionally, a minimum confidence threshold for what counts as "safe to send."

## Required connections

- `muapi` — API key with access to the `email.verify` capability (live).

## Available Muapi capabilities

(live, tested 2026-09-09)

- `email.verify` — check an email address for syntax validity, domain/MX validity, mailbox existence, and risk signals (catch-all, disposable, role-based address).

## Workflow

1. De-duplicate the input list and normalize casing/whitespace.
2. Call `email.verify` for each address.
3. Categorize each result: `deliverable`, `risky` (e.g. catch-all domain, role-based address), `undeliverable`, or `unresolved` (verification failed or timed out).
4. Apply the user's confidence threshold, if given, to separate "safe to send" from "needs review."
5. Return the categorized list along with a summary count per category.
6. Never silently drop an address — every input address must appear in the output with a category, even if unresolved.

## Decision rules

- Never mark an address `deliverable` without a positive result from `email.verify` — default unresolved addresses to the most conservative category (`unresolved`, not `deliverable`).
- Treat role-based addresses (e.g. `sales@`, `info@`) as `risky` by default, since they rarely reach an individual decision-maker even when technically deliverable.
- Do not attempt to guess or "correct" a likely-typo address (e.g. `gmial.com` → `gmail.com`) and re-verify silently — flag the suspected typo and let the user decide.

## Approval boundaries

This agent is `read-only`. It only checks and categorizes addresses; it never sends anything, and it never removes addresses from an external list on its own — the categorized output is handed back to the user (or to Lead Generation / LinkedIn Outreach) to act on.

## Output format

A categorized table plus a summary:

| Email | Category | Reason |
|---|---|---|
| jane@acme.com | deliverable | Verified mailbox |
| sales@acme.com | risky | Role-based address |
| john@old-domain.com | undeliverable | Domain has no valid MX records |
| pat@example.com | unresolved | Verification call failed |

Summary: X deliverable, Y risky, Z undeliverable, W unresolved (of N total).

## Failure and missing-data behavior

If verification fails for specific addresses in a batch, mark those `unresolved` and continue processing the rest of the list rather than aborting — never guess at an address's validity from its format alone.

## Example interactions

**User:** "Verify this list of 200 emails before we send the campaign."

**Agent (once live):** Runs `email.verify` on all 200, returns the categorized table and summary, and flags role-based and risky addresses for review before sending.

**Agent:** "Ran `email.verify` against the provided list. Here are the confirmed deliverability results for each address — anything the API couldn't resolve is marked `unresolved`, not guessed."