# Email-finding waterfall that only pays for misses

Source: https://mcpforgtm.com/recipes/email-finding-waterfall (StackMCP, independent directory of official MCP servers)

## Goal

RevOps and SDRs with CRM contacts that have no email, who want to fill the gaps with a second provider only where the first one missed. Hunter or Findymail can be swapped for LeadMagic, Prospeo or RocketReach. HubSpot can be swapped for Salesforce, Attio or Pipedrive.

## Connected tools

- Hunter: https://mcp.hunter.io/mcp (setup: https://mcpforgtm.com/tools/hunter)
- Findymail: https://mcp.findymail.com/mcp (setup: https://mcpforgtm.com/tools/findymail)
- HubSpot: https://mcp.hubspot.com (setup: https://mcpforgtm.com/tools/hubspot)

## Guardrails

- Read only in HubSpot until I approve the writes.
- Tell me the number of lookups before each round, and run each round only after I approve it.
- Send only Hunter's misses to Findymail.
- Write only verified emails, only to contacts whose email is still empty, and only after I approve it.
- Don't save leads, start sequences or push to a CRM from Hunter or Findymail.

## Steps

1. Find HubSpot contacts in {list_or_filter} with no email address. Show me a table with first name, last name, company and company domain, and the count. List any with no domain separately. Don't change anything.
2. Tell me how many Hunter Email Finder lookups that is. After I approve it, run Hunter Email Finder for each contact with a domain. Show me hits and misses.
3. Tell me how many Hunter misses there are. After I approve it, run Findymail find_email only for those misses. Show me what it found.
4. After I approve it, verify every found email with Hunter Email Verifier. Show me one table: contact, email, which tool found it, and whether it verified. Add a count of calls made to each tool.
5. After I approve it, write the verified emails to the matching HubSpot contacts. Re-read each contact first and skip any that now have an email. Then tell me how many were written and skipped.

## Expected output

Waterfall results and the HubSpot updates waiting for approval. Example (all names fictional):

```
HubSpot contacts with no email in 'Q4 target accounts': 50
Skipped before lookup: 4 (no company domain)

Round 1, Hunter Email Finder: 46 lookups, 31 found
Round 2, Findymail find_email (Hunter misses only): 15 lookups, 9 found
Not found by either: 6
Verification (Hunter Email Verifier): 40 checked, 34 verified, 6 not verified

| Contact | Company | Email | Found by | Verified |
|---|---|---|---|---|
| Dana Okafor | Larkspur Freightworks (fictional) | d.okafor@larkspur-freight.example | Hunter | yes |
| Sam Whitlock | Quarry Lane Analytics (fictional) | sam.whitlock@quarrylane.example | Findymail | yes |
| Priya Raman | Mossgate Labs (fictional) | priya@mossgate.example | Hunter | no |
| Alex Rivera | Fernhill Software (fictional) | none found | none | n/a |

Calls made: Hunter 46 finder + 40 verifier, Findymail 15 finder.
Check the credit figures for each tool on the tool pages; your plan may differ.

No HubSpot records changed yet.
Ready to write: 34 verified emails, each to a contact whose email is still empty.
Reply 'write 34' to approve, or list contacts to leave out.
```

## Watch for

- Paying twice for the same contact: Findymail should only get Hunter's misses. Before round 2, show me the count of misses and confirm it equals round 1 lookups minus hits.
- Wrong or missing company domain: Email finders need the right domain. Skip contacts with no domain, and flag any where the domain on the contact doesn't match the company's website domain in HubSpot.
- An email for the wrong person: A nickname or common name can return someone else at the same company. Check that the returned email's name part fits the contact's first or last name, and mark the rest for review.
- Overwriting an email someone added since: A rep may fill in an email while the run is going. Re-read each contact just before writing, and only write where the email is still empty.
