Nose for Leads

Verified local-business leads for agents: campaigns return send-ready contacts, every email checked against the live mailbox with a verification receipt. Credit-based with per-key budgets; 25 free at signup.

Dokumentasi

Nose for Leads — MCP server

Verified local-business leads, built for agents.

smithery badge mcp MCP server

Nose for Leads is an MCP server that finds, filters, and verifies local-business leads on demand: agents get back a send-ready list of contacts, not raw scrape data. Every email carries a machine-readable verification receipt (verifier, verdict, timestamp) so an agent can act on it without a human double-checking. Access is credit-based with per-key spend budgets and daily caps, so an agent can be handed a key without a blank check.

This repository holds the public integration docs, the registry manifest (server.json), and example transcripts. The server itself is remote-hosted; there is nothing to install or self-host.

Connect

Claude Code (OAuth, no key to paste)

claude mcp add --transport http nose-for-leads https://api.noseforleads.com/mcp
claude mcp login nose-for-leads

login opens your browser to approve access and set a spending budget. The token persists across sessions and refreshes itself.

Codex CLI

# ~/.codex/config.toml
[mcp_servers.nose-for-leads]
url = "https://api.noseforleads.com/mcp"
codex mcp login nose-for-leads

If OAuth gives you trouble, the API-key header works in Codex too: env_http_headers = { "X-API-Key" = "YOUR_ENV_VAR" } under the same block.

Cursor, Windsurf, other MCP clients

Point your client's HTTP server config at https://api.noseforleads.com/mcp. Cursor's .cursor/mcp.json (and any client that reads the standard shape):

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

API key (scripts, CI, clients without OAuth)

Mint a key at https://app.noseforleads.com/keys and pass it as a header: X-API-Key: <your key> (or Authorization: Bearer <your key>). Keys can carry a total and/or daily credit budget, so a runaway loop stops at the cap with a budget_exhausted error instead of draining the account.

Tools

All 9 tools carry MCP tool annotations (readOnly / destructive / idempotent / openWorld) and require the auth above.

ToolWhat it does
translate_icpTurns a free-text ICP description (e.g. "plumbers in phoenix with no website") into the structured query dict start_campaign requires. Call this first: start_campaign never accepts free text.
start_campaignSubmits a lead campaign for a vertical + geo. Costs 1 credit per validated lead and cannot overspend. Accepts an idempotency_key for safe retries. Returns {job_id, idempotent_replay}.
get_campaign_statusChecks a campaign's status by job_id: queued, running, done, done_partial, or failed.
fetch_resultsPages through a campaign's leads (offset/limit). kept_only=true returns only leads marked kept in review. Rows carry verification receipts when a live verification exists.
get_icp_packLists saved vertical/geo templates (ICP packs) available to the account.
add_suppressionAdds an email or domain to the suppression list so future campaigns exclude it.
review_leadMarks a lead kept, discarded, or unreviewed.
get_creditsChecks the prepaid credit balance (1 credit = 1 validated lead), available packs, and recent ledger entries; with an API key, also that key's remaining budget.
send_feedbackSends feedback to the Nose for Leads team (kind: "product" or kind: "tool").

Verification receipts

Rows returned by fetch_results carry a receipt when a live verification exists: verified_by (which verifier), verified_at (when), and verifier_verdict (the result). A receipt proves the email was checked against the live mailbox provider, not merely pattern-matched. See examples/ for real transcript shapes.

Credits and safety semantics

  • 1 credit = 1 validated lead; 25 free at signup, prepaid packs from $19.99 for 200.
  • A campaign that discovers more leads than the balance covers delivers what the credits cover and ends done_partial instead of failing.
  • Per-key budgets are enforced before the account balance, and start_campaign honors idempotency_key, so a retry never double-charges.
  • Errors return a plain {code, message} envelope (e.g. payment_required, budget_exhausted, quota_exceeded with retry_after). The full table is in the agent guide.