Mobile Phone Waterfall MCP Server
# Mobile Phone Waterfall MCP Server
[](https://smithery.ai/servers/mambabuilt/mcp-mobile-phone-waterfall-orchestrator) [](https://glama.ai/mcp/servers/mambalabsdev/mcp-mobile-phone-waterfall-orchestrator) [](https://registry.modelcontextprotocol.io/v0/servers?search=com.mambabuilt/mcp-mobile-phone-waterfall-orchestrator&limit=1) [](https://www.npmjs.com/package/@mambalabsdev/mcp-mobile-phone-waterfall-orchestrator) [](https://www.npmjs.com/package/@mambalabsdev/mcp-mobile-phone-waterfall-orchestrator) [](https://github.com/mambalabsdev/mcp-mobile-phone-waterfall-orchestrator/blob/main/LICENSE) [](https://mcpservers.org/servers/mambalabsdev/mcp-mobile-phone-waterfall-orchestrator)
Find a mobile phone number for each contact by calling your own phone data providers in order,
Prospeo, Lusha, ContactOut, and FullEnrich, until one returns a number. One row per contact with the
number in E.164 format, line type, country, a Do Not Call flag where the provider reports one, and
the provider credits it spent.
It runs the [Mobile Phone Waterfall](https://apify.com/mambalabs/mobile-phone-waterfall-orchestrator)
actor (Actor ID `6OOgPktf7RIa5XCOP`) on Apify.
## Tool
| Tool | What it does |
|---|---|
| `find_mobile_phone` | Looks up mobile numbers for a list of contacts on your own provider keys |
## Setup
```json
{
"mcpServers": {
"mamba-mobile-phone-waterfall-orchestrator": {
"command": "npx",
"args": ["-y", "@mambalabsdev/mcp-mobile-phone-waterfall-orchestrator"],
"env": {
"APIFY_TOKEN": "your-apify-token",
"PROSPEO_API_KEY": "optional",
"LUSHA_API_KEY": "optional",
"CONTACTOUT_API_KEY": "optional",
"FULLENRICH_API_KEY": "optional"
}
}
}
}
```
`APIFY_TOKEN` is required to run the tool. The provider keys are optional and read from this
server's environment, so they never pass through the model's context. With no provider key set, the
run completes, calls nothing, and charges nothing.
## Inputs
`contacts` (each with any of `full_name`, `first_name`, `last_name`, `company_domain`,
`company_name`, `linkedin_url`, `email`, `id`), or the single contact shortcuts `full_name`,
`company_domain`, `linkedin_url`, `email`. Optional: `provider_order`, `mobile_only`,
`max_contacts`, `max_provider_credits`, `max_charge_usd`.
A LinkedIn URL is passed to providers as an identifier. Neither this server nor the actor opens it.
## How it runs
The server starts the actor run (`POST /v2/acts/{id}/runs`), polls it (`GET /v2/actor-runs/{runId}`)
to a terminal status with a run timeout of 1,800 seconds, and returns the dataset. A run that does
not succeed comes back as an error with its run ID.
## Cost
Apify charges the actor's pay per event prices to your Apify account: a start event, a charge per
contact on which at least one provider was called, and a charge per number found. Your providers
charge their own credits on your keys. See the actor's pricing tab for current prices.
## License
MIT. Built by [Mamba Labs](https://mambabuilt.com).
TDQS
Scored across 1 tool
With only a single tool in the set, there is no possibility of confusing it with another tool or misselecting between overlapping purposes. The tool's purpose (waterfall phone-number lookup) is clearly stated and unambiguous.
The lone tool, find_mobile_phone, follows a clear verb_noun snake_case convention. With one tool there is no risk of inconsistent conventions, though the pattern can only be assessed trivially.
The server targets a narrow, single-purpose operation, so one tool is defensible, but the surface is thin: a single tool leaves no room for adjacent operations like checking run status, listing past runs, or validating numbers. It sits at the borderline of 'feels thin' rather than being an extreme mismatch.
The core lookup operation appears fully specified (E.164 output, line type, DNC flag, provider attribution, spend, error-with-run-ID handling). However, obvious lifecycle operations are absent: no tool to retrieve or poll a prior run's status/results and no way to inspect or configure provider order or credits, so agents hit dead ends on anything beyond a single fire-and-forget call.