Nose for Leads
Finds, filters, and verifies local-business leads; every email carries a verification receipt.
| Endpoint | https://api.noseforleads.com/mcp (streamable-http) |
|---|---|
| Registry version | 1.0.0 |
| Now | 11 tools · grade B (80) · pin ts_58cecd3b67e47528d8f9c05a9c0a77d9 · protocol 2025-06-18 |
| First / last listed | 2026-10-25 01:58 UTC / 2026-10-25 01:58 UTC |
| Grade over time | 2026-10-25: B (80), 11 tools |
Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.
Tools: translate_icp start_campaign get_campaign_status fetch_results get_icp_pack add_suppression review_lead get_credits list_campaigns get_usage send_feedback
translate_icp | Translate 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 params: text* |
start_campaign | Submit 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), params: query*, vertical, geo, category, location, idempotency_key |
get_campaign_status | Check 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], params: job_id*, wait_seconds |
fetch_results | Fetch 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 coun params: job_id*, offset, limit, kept_only, match_status |
get_icp_pack | List the ICP packs (saved vertical/geo templates) available to this tenant. params: none |
add_suppression | Add an email or domain to the suppression list (scope is 'email' or 'domain')
so future campaigns exclude it. params: scope*, value*, reason* |
review_lead | Mark a lead kept or discarded after review (status: kept | discarded |
unreviewed). Then fetch_results(kept_only=true) returns only kept leads — the
export set. params: job_id*, result_id*, status* |
get_credits | Check 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 t params: offset, limit |
list_campaigns | List 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), c params: offset, limit, q, status, order, created_after, created_before |
get_usage | Today'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 creato params: none |
send_feedback | Send 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 params: message*, kind, category, tool |
Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.