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.
| Server | Underlying data | Tools | Charging model |
|---|---|---|---|
| GoAI Moat — decision-maker-lookup (ours) |
Hunter | 4 | Search free; pay per revealed contact. Queried live below. |
| b2b-enrichment-mcp | Hunter.io + Apollo | 9 | Requires your own provider API keys. |
| deliveriq-mcp | Own deliverability engine | 12 | Free tier, no card. Focus is deliverability, not discovery. |
| tomba-mcp-server | Tomba | n/a | Discovery, verification, enrichment, phone, tech stack. |
| scrapercity-cli | Apollo, Google Maps, others | 20+ | Broadest surface: maps, skip trace, ecommerce data. |
| mcp-mailboxvalidator | MailboxValidator | n/a | Narrow: is this address valid, to cut bounces. |
Source for the five others: their entries in awesome-mcp-servers.
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-…"
}
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.
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.
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.