waterfall_phone
Find ONE person's phone number, trying providers in turn and stopping at the FIRST that returns one (native waterfall).
Steps (default order): pipecorn (LinkedIn URL; its own cascade of providers,
mobiles only, billed only when one is found, even when another step found too —
asynchronous, waited up to 20 s within the call's time budget, then the next
steps run and it is read once more at the end if time is left, else left in
pending) → kaspr (LinkedIn URL) →
lusha (LinkedIn URL, or name + domain / company) → forager (LinkedIn URL) → then
the asynchronous ones: apollo
(phone reveal, your own Apollo key; LinkedIn URL, or name + domain / company) →
lemlist (LinkedIn URL, or name + domain) → dropcontact (LinkedIn URL, or name +
company / domain) → fullenrich (LinkedIn URL, or name + domain — usually 30 s to
4 min, so often pending). A slow step is billed even when its answer comes back
pending, and a pending step ENDS the cascade: nothing after it is paid. The
LinkedIn URL opens the most steps. Phone credits cost more than email credits.
Order: your steps setting on this connector's card if set (an org
default, or your own override), kept as written; else the default order above,
where the free steps run first, then lemlist's database on your OWN lemlist key
(no credits, your own quota), then the other providers you hold your own key
for, and the shared keys next. A provider with no usable key is skipped without
being called. Each step
uses THAT provider's key and is billed by it, exactly as a direct call of its
tool — the waterfall adds no cost. A step whose inputs are missing, or whose
connector is not activated for this org, is skipped too. Give every input you
have. One contact per call; for a list, run it from a recipe (for_each).
Returns {found, provider, phone: {phone, all}, attempts, order_from} —
attempts says, step by step, what happened (found / no_match /
skipped / failed / withheld / pending, with the code, the message and the key
used); order_from says where the order came from (call / setting / default);
pending gives the collect call of the asynchronous step the cascade stopped
at.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "waterfall_phone"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| _org | No | Org (id) de CET APPEL. `oto_list_orgs()`. | |
| _group | No | Équipe (id) de CET APPEL, sous son org parente. | |
| domain | No | the company's domain (`acme.com`; a URL is accepted). | |
| _run_id | No | OBLIGATOIRE à chaque appel dès `run_start` ou `data_claim_next` : sans lui, l'écriture sur une ligne réservée est refusée. Hérité seulement si le serveur tient un run actif — n'y compte pas. | |
| dry_run | No | return the plan (order, key per step, arguments, skips) without calling anything. `planned` is not a promise: the connector's activation for your org is only checked by the real call. | |
| _project | No | Projet (id) de CET APPEL — jeton PRIMAIRE. `oto_project(op='list')`. | |
| _instance | No | Instance de connecteur PRÉCISE (un credential exact). `oto_instance(op='list')`. | |
| full_name | No | alternative to first_name + last_name. | |
| last_name | No | the person's last name. | |
| providers | No | the steps to try for THIS call, in this order — keys from the list above. Overrides your setting. Never a tool name. | |
| first_name | No | the person's first name. | |
| company_name | No | the company's name, when the domain is unknown. | |
| linkedin_url | No | the person's LinkedIn profile URL. | |
| apify_max_usd | No | a cost ceiling for each Apify run of this lookup (≥ 0.50 — Apify refuses less; above your organization's ceiling per run, $25 unless its admins set another, the step is refused). Omitted = the ceiling Apify launches take by default: derived from the run's size, else the platform default ($5), and never above that ceiling. | |
| max_paid_steps | No | at most this many PAID provider calls for this lookup (free steps don't count); the steps past it are skipped. Omitted = no limit — the default: set it when spend matters more than finding. |