Finding a decision-maker's email via MCP: 6 options compared

GoAI Moat · 26 Sep 2026 · one option tested live, the rest from published descriptions

An agent can name a company. It usually cannot tell you who works there, or reach a deliverable address. That gap is why a whole category of MCP servers exists: give the agent a way to go from a company name to a person and an address it can actually use.

We build one of these, so read this with that in mind. The comparison below uses each project's own published description — we did not run the other five — and one live test of our own, with the real output shown. Sources are linked so you can check the claims yourself.

The six

ServerUnderlying dataToolsCharging model
GoAI Moat — decision-maker-lookup
(ours)
Hunter4 Search free; pay per revealed contact. Queried live below.
b2b-enrichment-mcp Hunter.io + Apollo9 Requires your own provider API keys.
deliveriq-mcp Own deliverability engine12 Free tier, no card. Focus is deliverability, not discovery.
tomba-mcp-server Tomban/a Discovery, verification, enrichment, phone, tech stack.
scrapercity-cli Apollo, Google Maps, others20+ Broadest surface: maps, skip trace, ecommerce data.
mcp-mailboxvalidator MailboxValidatorn/a Narrow: is this address valid, to cut bounces.

Source for the five others: their entries in awesome-mcp-servers.

What we actually tested

One live call, our own server, company anker, limit 5. This is the raw shape of what comes back:

{
  "name": null,
  "position": null,
  "department": "sales",
  "type": "generic",
  "decision_maker": false,
  "domain": "anker.com",
  "company_name": "anker",
  "full_name_exists": false,
  "phone_number_exists": false,
  "linkedin_exists": false,
  "verification": { "status": "valid" },
  "reveal_handle": "_t3T2ck0y-…"
}
What that output honestly tells you. The company resolved correctly (anker.com) and the row carries a reveal_handle, which is what you redeem to get an actual address. But this particular row is a generic address, not a person: name, position and the LinkedIn flag are empty, and decision_maker is false.

That is the normal shape of a first pass. The free search tells you what exists — including that the obvious row is not a named decision-maker — before you spend anything on a reveal. Paying to reveal a generic sales@ address is the mistake this step exists to prevent.

A separate call to verify_email on a known address returned status: accept_all, score: 73, disposable: false, at an upstream cost of $0.012.

How to choose

The honest limitation

None of these servers — including ours — can produce a verified contact for every company. Coverage is uneven by region and company size, and the free/search layer only tells you what the source knows. If your target list is small and specific, expect some rows to come back empty. That is a property of the underlying data, not of MCP.

The thing worth checking in any of these tools is not how many contacts it returns, but what it does when it has nothing: whether it says so, or quietly hands your agent something that looks like an answer.