Nose for Leads

com.noseforleadsPublished by noseforleads.comOfficial publisherv1.0.0Updated Oct 24, 2026

Finds, filters, and verifies local-business leads; every email carries a verification receipt.

VerifiedStreamable HTTPWeb executableData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

A remote MCP server for finding, filtering and verifying local-business leads, with campaigns, lead review and credit tracking.

What you can do
Translate a free-text ideal-customer description into a structured query and list saved ICP packs for a tenant, geography and vertical template selection. Submit lead-generation campaigns, check their status and list past campaigns to recover a lost job ID. Fetch paginated campaign results, filter by validated or needs-review leads, and mark leads kept or discarded for export. Check prepaid credit balance, credit packs and ledger, and see daily vendor usage against quota. Add emails or domains to a suppression list and send product or tool feedback.
When to use it
Useful when an assistant needs to run local-business lead generation for a business owner: turning a plain-language target customer into a campaign, polling it, reviewing and exporting verified leads, and keeping an eye on credits and daily quotas.
Requirements
A remote streamable HTTP endpoint; no local package. Authentication is by OAuth login by default, or optionally an API key supplied in the X-API-Key header, minted in the provider's dashboard. A tenant account with prepaid credits is needed before campaigns can start.
Before you install
Campaigns spend prepaid credits (a validated lead costs 1 credit, 2 for person-target or Meta-ads campaigns) and cannot start at a zero balance. Daily vendor quota can pause work even with credits left. The server writes data: it submits campaigns, changes lead review status, adds suppression entries and sends feedback. The X-API-Key header is a secret and should be kept private.

Installation

In SourceWeft

  1. Open Nose for Leads in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.noseforleads%2Fleads-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "nose-for-leads": {
      "type": "http",
      "url": "https://api.noseforleads.com/mcp"
    }
  }
}

Tools

11

translate_icp

Translate ICP to query

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` 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.

Parameterstextrequired

start_campaign

Start lead 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), 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.

Parametersgeoqueryrequiredcategorylocationverticalidempotency_key

get_campaign_status

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], never errors.

Parametersjob_idrequiredwait_seconds

fetch_results

Fetch campaign 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 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.

Parameterslimitjob_idrequiredoffsetkept_onlymatch_status

get_icp_pack

List ICP packs

List the ICP packs (saved vertical/geo templates) available to this tenant.

Takes no parameters.

add_suppression

Add to suppression list

Add an email or domain to the suppression list (scope is 'email' or 'domain') so future campaigns exclude it.

Parametersscoperequiredvaluerequiredreasonrequired

review_lead

Review a 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.

Parametersjob_idrequiredstatusrequiredresult_idrequired

get_credits

Get credit balance

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 this also returns YOUR key's remaining budgets — check it before large campaigns.

Parameterslimitoffset

list_campaigns

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), 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.

Parametersqlimitorderoffsetstatuscreated_aftercreated_before

get_usage

Get today's 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 creator discovery costs one unit per delivered record, so it can consume far more than one call's worth. Mirrors REST GET /v1/usage.

Takes no parameters.

send_feedback

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 freely; it's our main signal for improving the product and the agent experience.

Parameterskindtoolmessagerequiredcategory

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

83% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • LicenseNot applicable

    A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.