mcpField
M
mcp-email-waterfall-orchestrator

mcp-email-waterfall-orchestrator

Local
github.com/mambalabsdevBusiness & Marketing0Updated 1w ago

About mcp-email-waterfall-orchestrator

An MCP server for the Mamba Labs Work Email Waterfall actor on Apify. It searches for and verifies work email addresses using provider keys supplied by the operator, and reports which providers were used and their attributable spend.

Key features

  1. 01Searches work emails for contacts
  2. 02Verifies each returned address
  3. 03Accepts operator-owned provider keys
  4. 04Configurable provider and verifier order
  5. 05Reports provider attempts and spend
  6. 06Returns contact rows and run totals

Use cases

  1. 01Find work emails for a contact list
  2. 02Verify addresses before adding them to outreach
  3. 03Compare provider results and attributable costs

MCP support

Exposes the Apify actor as the `find_work_email` tool for MCP clients. The tool accepts contacts and provider configuration, then returns results and run totals.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"com-mambabuilt-mcp-email-waterfall-orchestrator": {
"command": "npx",
"args": [
"-y",
"@mambalabsdev/mcp-email-waterfall-orchestrator"
],
"env": {
"APIFY_TOKEN": "<APIFY_TOKEN>"
}
}
}
}
Run commandnpx -y @mambalabsdev/mcp-email-waterfall-orchestrator
Environment variables to set
APIFY_TOKENSecretApify API token from https://console.apify.com/account/integrations

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@mambalabsdev/mcp-email-waterfall-orchestrator1.2.0

Tools

1

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
contactsarrayNoOne object per person. Each may carry full_name, first_name, last_name, company_domain, company_name, linkedin_url and email. A single contact is an array of one. Omit it or pass an empty array and the run returns a summary row explaining that nothing was attempted and nothing was charged.
maxContactsintegerNoHard ceiling on how many contacts are processed. Leave empty for no ceiling.
providerKeysobjectNoYOUR own provider API keys, keyed by provider name. Validated for free before any paid call. A provider with no usable key is dropped and reported rather than failing the run.
providerOrderarrayNoRegistry entry ids in the order you want them called. Leave empty for the actor's default order.
providerRatesobjectNoOptional map of provider or provider.endpoint to YOUR cost per unit, for example {"findymail.search_name": 0.0198}. Supply it and the run reports dollars at your rate; leave it empty and it reports units only, because your plan tier is not knowable from here.
concurrencyHintintegerNoAdvisory only. Real pacing comes from each endpoint's own documented rate limits, which are multi-window and per endpoint, so this cannot exceed them.
maxProviderUnitsintegerNoRun-level cap on the provider credits this run may consume from YOUR accounts. When it is reached the remaining contacts are skipped with a reason rather than spent on. Strongly recommended.
verificationOrderarrayNoVerifier entry ids in order. Leave empty for the actor's default order.

Details

From the project README

Work Email Waterfall MCP Server

npm MCP License: MIT

Email Waterfall Orchestrator MCP server

MCP server for the Mamba Labs Work Email Waterfall actor on Apify.

Give it contacts and your own provider API keys. It finds a work email for each, verifies it, and tells you exactly what each provider cost you.

Tool

find_work_email

Returns one flat row per contact, misses included, plus a summary row carrying the run totals: the address found, which provider found it, its position in the chain, every provider attempted, the verification verdict and its source, and the provider units spent.

Bring your own keys

This is the part that makes it different from a credit-based enrichment tool. Mamba Labs supplies no provider keys, never sees your credits, and never resells them. The run spends from your accounts at your negotiated rates, which is why maxProviderUnits exists and why you should set it.

The tradeoff is honest in both directions: you keep your own pricing and your own provider relationships, and you carry your own spend. What you get back is real attribution rather than a credit count, so you can see which provider actually earned its keep.

Give it providerRates and the run reports dollars at your rate. Leave it empty and it reports units only, because your plan tier is not knowable from here and guessing it would produce a confident wrong number.

What happens to a bad key

Nothing dramatic. Every key is validated for free before any paid call. A provider with no usable key is dropped from the chain and reported, rather than failing the run or silently burning attempts. With no keys at all the run still completes, explains which capabilities were unavailable, and charges nothing.

Verification is not an afterthought

Verification runs after each finder that returns an address, not once at the end, because providers do not agree on what "found" means. An address that one provider calls a hit and a verifier calls undeliverable is a miss, and you want to know that before it reaches a sequencer.

find_work_email

InputTypeNotes
contactsobject[]One object per person. Any of full_name, first_name, last_name, company_domain, company_name, linkedin_url, email. A single contact is an array of one.
providerKeysobjectYour own keys, by provider name. Validated for free before any paid call.
providerOrderstring[]Registry entry ids in call order. Empty means the actor's default chain.
verificationOrderstring[]Verifier entry ids in order. Empty means the actor's default.
maxContactsintegerHard ceiling on contacts processed.
maxProviderUnitsintegerRun-level cap on provider credits spent from your accounts. Strongly recommended.
providerRatesobjectMap of provider or provider.endpoint to your cost per unit, so spend is reported in dollars.
concurrencyHintintegerAdvisory. Real pacing comes from each endpoint's own multi-window rate limits.
max_charge_usdnumberOptional cost cap in USD for this run. The actor stops before an item that could take its charges past this amount.

More identifiers means a better chance of a hit. Keyed on a LinkedIn URL the top provider measured 13.7 percent against 9.3 percent on name plus domain, on the same 300 contacts in the same hour.

Setup

{
  "mcpServers": {
    "mamba-email-waterfall-orchestrator": {
      "command": "npx",
      "args": ["-y", "@mambalabsdev/mcp-email-waterfall-orchestrator"],
      "env": { "APIFY_TOKEN": "your-apify-token" }
    }
  }
}

Get a token at console.apify.com/account/integrations. Each call spends from your own provider accounts and consumes Apify credits per contact submitted and per address found, on top of whatever your own provider keys spend.

Pricing

Price per event on the Apify FREE plan, from the live pricing record; paid Apify plans pay less per event.

EventPrice (USD)
Actor Start (apify-actor-start)0.00005
Email Search Submitted (email-search-submitted)0.003
Email Found (email-found)0.02

Also available

This tool is also exposed by the GTM Suite umbrella server, alongside the rest of the Mamba Labs GTM actors, if you would rather run one server than many.

Built by Mamba Labs.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.