Nose for Leads
com.noseforleads/leads-mcpVersion 1.0.0Finds, filters, and verifies local-business leads; every email carries a verification receipt.
Status
Responds261 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 14:07 UTC
- Latency
- 261 ms
- Remotes responding
- 1 of 1
- Sign-in
- No sign-in
- Hosting
- Hosted outside the EU (detected)
- Registry data as of
- Nov 14, 2026, 22:14 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://api.noseforleads.com/mcpResponds261 msNo sign-in
Claude Code
claude mcp add --transport http leads-mcp https://api.noseforleads.com/mcpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: leads-mcp
Remote MCP server URL: https://api.noseforleads.com/mcpCursor
{
"mcpServers": {
"leads-mcp": {
"url": "https://api.noseforleads.com/mcp"
}
}
}VS Code
code --add-mcp '{"name":"leads-mcp","type":"http","url":"https://api.noseforleads.com/mcp"}'Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
11 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
add_suppressionAdd an email or domain to the suppression list (scope is 'email' or 'domain')
so future campaigns exclude it. | No | No | Yes | No |
fetch_resultsFetch a page of leads produced by a campaign (paginate with offset/limit).
kept_only=True returns only rows the user marked kept in review (for export).
match_status narrows to one population: 'validated' (verified email, billed) or
'needs_review' (surfaced free; rejection_reason says why) — omit it for both.
Returns {summary, total, offset, limit, rows}; total counts the filtered
population. Rows carry verification receipts (verified_by/verified_at/
verifier_verdict) when a live verification exists — treat them as the
authoritative proof; null means no receipt, not a failure. Two more quotable
proof lines appear where earned: person_receipt (who the person is and where we
saw them launch, on person-target leads) and tech_receipt (dated evidence of the
detected platform) — forward them as-is. | Not declared | Yes | Not declared | No |
get_campaign_statusCheck the status of a previously submitted campaign (queued/running/done/
done_partial/failed) by job_id. Prefer wait_seconds=45 over sleeping between
polls: the call holds until the status or pipeline stage changes (or the timer
expires) and returns the normal snapshot either way — loop on it until `status`
is terminal. Out-of-range wait_seconds clamps to [0, 45], never errors. | Not declared | Yes | Not declared | No |
get_creditsCheck this tenant's prepaid credit balance (a validated lead costs 1 credit —
2 for person-target or Meta-ads campaigns), the available credit packs, and the
ledger (paginate ledger entries with offset/limit, newest first). Campaigns
cannot start with a zero balance — buy a pack via the dashboard when balance
runs low.
When you authenticate with an API key this also returns YOUR key's remaining
budgets — check it before large campaigns. | Not declared | Yes | Not declared | No |
get_icp_packList the ICP packs (saved vertical/geo templates) available to this tenant. | Not declared | Yes | Not declared | No |
get_usageToday's external vendor usage against the tenant's daily quota
(vendor_calls_today / per_day_max / remaining). This is the OTHER ceiling besides
credits: when remaining hits 0, campaign work pauses until midnight even with a
healthy credit balance — check it before launching a large or urgent campaign.
`remaining` is quota UNITS, which usually equals calls; a creator discovery costs
one unit per delivered record, so it can consume far more than one call's worth.
Mirrors REST GET /v1/usage. | Not declared | Yes | Not declared | No |
list_campaignsList this tenant's campaigns, newest first — the recovery path when a job_id
was lost: every row carries job_id, status, the query it ran, and credits spent,
so you can resume polling (get_campaign_status) or fetch results without
resubmitting (and double-charging). Filters: q (substring over vertical/geo),
status (queued | running | done | done_partial | failed), created_after/
created_before (ISO-8601 window over creation time), order ('desc' default,
'asc' oldest first). Paginate with offset/limit (limit 1-200); `total` counts
everything matching the filters, not just this page. | Not declared | Yes | Not declared | No |
review_leadMark a lead kept or discarded after review (status: kept | discarded |
unreviewed). Then fetch_results(kept_only=true) returns only kept leads — the
export set. | No | No | Yes | No |
send_feedbackSend feedback to the Nose for Leads team. Set kind='product' for feedback
about the leads, the service, coverage, or pricing — relay what the business
owner tells you (categories: lead_quality, pricing, missing_feature, praise,
other). Set kind='tool' (default) for feedback about these MCP tools
themselves — a confusing description, a bug, a missing capability. Use freely;
it's our main signal for improving the product and the agent experience. | No | No | No | No |
start_campaignSubmit a lead-generation campaign. Pass translate_icp's `vertical`, `geo`, and
`query` fields directly (category/location are ALIASES for vertical/geo, accepted
so translate output round-trips; prefer vertical/geo when constructing calls).
`query`'s full shape and field vocabulary are in this tool's schema — build it
with translate_icp from free text (recommended), or construct it directly. An
unknown predicate field (or rank), and any unknown `discovery` key, is rejected
with a 422 naming it; an unknown top-level `query` key is silently ignored, so
keep to predicates/rank/discovery — a typo there will not error, it will just do
nothing.
Costs 1 credit per validated lead — every campaign type, including founder/person
campaigns and campaigns that filter on Meta ads. A campaign cannot overspend: if
discovered leads exceed your balance it delivers what your credits cover and the
campaign ends `done_partial`; check get_credits first if your balance is low.
vertical/geo are REQUIRED except for a locationless campaign — `query` carrying a
discovery block with mode 'launch_feeds' or 'web_search' — which has no geography
at all.
If the tenant has no card on file this returns a 403 `card_required` error with a
`setup_url` — surface that URL to the user so they can verify a card (never
charged unless they buy a pack).
Pass a stable idempotency_key when you might retry — a retry returns the ORIGINAL
campaign (idempotent_replay=true), never a duplicate charge.
Returns {job_id, idempotent_replay}; poll get_campaign_status with job_id. | No | No | No | Yes |
translate_icpTranslate free-text ICP description (e.g. "plumbers in phoenix with no
website") into a structured query. Call this BEFORE start_campaign — start_campaign
only accepts a structured `query` dict, never free text. Returns {query, vertical,
geo, category, location, preview, unsupported, discovery} — pass vertical/geo/query
straight to start_campaign.
`discovery` is non-empty when the ask routes OUTSIDE Google Maps, in one of two
shapes. Mode 'launch_feeds': people/companies that RECENTLY LAUNCHED (e.g.
"founders of B2B SaaS that launched in the last 3 months") — it names the launch
feeds to search and whether the leads are people or companies. Mode 'web_search':
long-tail ONLINE businesses Google Maps never had (e.g. "marketing agencies for
dentists"), found via paid organic search — companies only, never people. Either
way the block is already embedded inside the returned `query`, so passing `query`
through unchanged is all that's needed; neither mode has a geography, so
vertical/geo come back empty and start_campaign does not require them.
Anything we cannot actually source lands in `unsupported` instead — read that list
aloud to the user rather than pretending the campaign will cover it. | Not declared | Yes | Not declared | No |
Details
- Registry status
- Active
- Published
- Jul 16, 2026
- Updated
- Jul 16, 2026
- Repository
- Not given
- Categories (suggested)
- CRMSecurityMarketing and SEOSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
- GDPR
- Not declared