Cold Leads

io.github.anttka4czPublished by GitHub account anttka4czv1.0.2Updated Oct 24, 2026

B2B outreach CRM for AI agents: contacts, verification, approved campaigns, replies, follow-ups.

VerifiedStreamable HTTPWeb executableBusiness & Commerce

Overview

AI-generated overview

Lets an assistant work a Cold Leads B2B outreach CRM: verify addresses, search and import contacts, draft campaigns, read replies and send approved e-mail.

What you can do
Exposes the Cold Leads hosted workspace to MCP clients: verify_email checks syntax, disposable domains, role accounts and MX records, with SMTP mailbox and catch-all checks when reachable, returning valid, risky or invalid. search_leads, list_contacts, import_contacts and update_contact manage CRM contacts; list_templates and save_template handle templates; list_campaigns, create_campaign_draft and launch_campaign prepare and launch outreach. get_conversation and send_contact_message read synced conversations and send one e-mail after explicit approval, while get_lead_context, get_sales_next_actions, schedule_follow_up and get_agent_activity cover lead context, reply queues, follow-ups and a
When to use it
Use it when an assistant should run B2B outreach inside an existing Cold Leads workspace: verifying prospect addresses, importing or updating contacts, drafting and launching campaigns, and reading or answering replies. A keyless hosted demo with a sample workspace is available for trying the tools without sending e-mail or spending credits.
Requirements
Either the hosted endpoint at (with an Authorization Bearer key header, or OAuth 2.1 for ChatGPT) or the local npm package @coldleads/mcp-server over stdio, which needs Node.js 20 or newer. A Cold Leads secret API key (COLDLEADS_API_KEY, sk_...) from Settings, included in the Business plan, is needed for workspace tools; without it only keyless agent onboarding runs. Optional COLDLEADS_API_BASE overrides the API base URL.
Before you install
Requires a secret API key (COLDLEADS_API_KEY, sk_...) that grants access to the workspace; store it carefully and rotate it in the web app. Sending tools (send_contact_message, launch_campaign) act on real leads and are blocked only by approval and policy checks, so review recipient and content before approving. Verification costs 1 credit each and the API is part of the paid Business plan; the onboarding tool returns a Stripe payment link, and only the human should decide and pay. A verified or

Installation

In SourceWeft

  1. Open Cold Leads in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. 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/io.github.anttka4cz%2Fmcp-server-coldleads/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. The client completes OAuth sign-in on first connect.

{
  "mcpServers": {
    "cold-leads": {
      "type": "http",
      "url": "https://coldleads.app/api/mcp"
    }
  }
}

README

Cold Leads MCP server

[npm] [npm downloads] [license] [node]

[Cold Leads MCP server]

Model Context Protocol server for Cold Leads, the B2B outreach CRM. It exposes the hosted workspace tools to local MCP clients (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code): contacts, imports, synced conversations, templates, campaigns, website capture, lead search, and verification. Without an API key, it can also ask the human owner to approve a subscription.

bash
npx -y @coldleads/mcp-server

Try it without a key

The hosted demo server has the same tools over a sample workspace (fictional contacts on .example domains). It never sends e-mail and uses no credits:

bash
claude mcp add --transport http coldleads-demo https://coldleads.app/api/mcp/demo

Then ask: "Verify these three contacts and prepare outreach drafts. Don't send anything until I approve. Jana Dvořák [email protected], [email protected], Piotr Kowalski [email protected]". Any client that supports remote (Streamable HTTP) MCP servers can use the same URL. A complete agent built on it: cold-leads-ai-sales-agent.

Demo limits:

LimitValue
Session24 hours from its start (not extended), visible only to that session
Contacts10, including the 4 sample contacts
Templates1 of your own (besides the sample template; update it with template_id)
Campaign drafts1
Text lengthnotes 100 characters, template body 500, message 200
Requests120 per minute and 20 new sessions per hour per IP address
Verificationsample results for the three demo prospects; other addresses get syntax, disposable-domain and role checks only (no MX or mailbox check)
Sendingnever: send_contact_message and launch_campaign still require approval, then return demo_not_sent

Tools

ToolWhat it doesCost
verify_emailVerification of one address: syntax, disposable domain, role account and MX records, plus an SMTP mailbox and catch-all check when Cold Leads can open an SMTP connection to the recipient's mail server (otherwise reasons contains smtp_unreachable and catch_all is null). Returns valid, risky or invalid. Usually answers within a few seconds (the client gives up after 8 s).1 credit
search_leadsContacts already in your Cold Leads CRM for a company domain, with an optional role keyword: e-mail, name, company, stage, tags, verification status and a do_not_contact flag. Cold Leads has no third-party lead database.free
list_contacts, import_contacts, update_contactList, import up to 100 parsed contact rows per call, and update contacts in your own workspace. Imports deduplicate, skip global DNC entries and do not send e-mail. CSV/XLSX parsing is done by the assistant.free
get_conversation, send_contact_messageRead mailbox-synced contact conversations or send one e-mail after explicit approval of recipient and content. Opt-outs, bounces and DNC are blocked.sender/provider limits
list_templates, save_templateReview, create and update workspace templates; content screening applies.free
list_campaigns, create_campaign_draft, launch_campaignInspect campaigns, prepare drafts and audience estimates, and launch only after human review and explicit confirmation.plan and recipient limits
get_lead_context, get_sales_next_actions, schedule_follow_up, get_agent_activityEverything known about one lead (contactability, history, last reply class, next action); the queue of replies waiting for an answer and due follow-ups; set a contact's next action (never sends e-mail); the audit log of API and MCP calls.free
get_social_overview, list_autoposts, schedule_social_postSocial: connected social accounts (Bluesky, Mastodon, Telegram, LinkedIn, X, Facebook Pages, Instagram, Threads) and plan usage; autoposts and their posts; add a post to an autopost at a time or in the next free posting slot (published automatically while the autopost runs, or held for an admin's approval). Accounts are connected by the user in the app.free
get_social_inbox, reply_social_messageComments, mentions and direct messages from connected accounts; reply on the same network only after explicit approval of the exact text (confirm_send: true).free
get_workspace_info, setup_website_lead_captureRead non-secret workspace/mailbox status or generate a public-only form key/snippet for your website. Website submissions are inquiry leads, not automatic cold-outreach consent.free
provision_account_and_get_payment_linkFor agents without a key: creates a pending account for the human owner and returns a Stripe payment link for the Business plan. The human decides and pays.—
check_provisioning_statusAfter the owner paid: returns the API key exactly once (with the claim_token). The server starts using it immediately.—

Responses are compact JSON in a text block. An illustrative result for an address whose mailbox could not be checked (example.com is reserved for documentation):

json
{"status":"success","email":"[email protected]","validity":"valid","catch_all":null,"score":75,"reasons":["smtp_unreachable"],"disposable":false,"role_account":false}

Errors come back as tool results with isError: true, for example {"status":"error","error":"rate_limited","message":"…","http_status":429,"retry_after_seconds":60}.

Requirements

  • A Cold Leads secret API key (sk_…) from Settings → API keys. The API is included in the Business plan (10,000 verification and API credits a month; extra packs available).
  • Node.js 20 or newer (CI tests 20 and 22).
  • No key yet? Start the server without one and let your agent call provision_account_and_get_payment_link — see Agent onboarding.

Setup

Claude Desktop

claude_desktop_config.json (Settings → Developer → Edit Config):

json
{  "mcpServers": {    "coldleads": {      "command": "npx",      "args": ["-y", "@coldleads/mcp-server"],      "env": { "COLDLEADS_API_KEY": "sk_your_secret_key" }    }  }}

Cursor / Windsurf

~/.cursor/mcp.json (Cursor) or ~/.codeium/windsurf/mcp_config.json (Windsurf) — the same mcpServers block as above.

Claude Code

bash
claude mcp add coldleads --env COLDLEADS_API_KEY=sk_your_secret_key -- npx -y @coldleads/mcp-server

VS Code

.vscode/mcp.json:

json
{  "servers": {    "coldleads": {      "type": "stdio",      "command": "npx",      "args": ["-y", "@coldleads/mcp-server"],      "env": { "COLDLEADS_API_KEY": "sk_your_secret_key" }    }  }}

Hosted endpoint (no install)

Clients that support remote servers can connect directly with a secret key:

json
{  "mcpServers": {    "coldleads": {      "url": "https://coldleads.app/api/mcp",      "headers": { "Authorization": "Bearer sk_your_secret_key" }    }  }}

The stdio server discovers workspace tools from https://coldleads.app/api/mcp and forwards their calls to the hosted MCP service, so the hosted and local tools use the same account, policy and sending safeguards. It also includes keyless onboarding tools. ChatGPT connects to the hosted endpoint with OAuth 2.1; enable Developer mode in ChatGPT, add the endpoint, sign in to Cold Leads and review the requested access. Other remote MCP clients can use the API-key header shown above.

Docker

bash
docker build -t coldleads-mcp-server .docker run -i --rm -e COLDLEADS_API_KEY=sk_your_secret_key coldleads-mcp-server

Configuration

VariableDefaultPurpose
COLDLEADS_API_KEY—Secret API key (sk_…). Optional at start-up: without it the server still starts, lists tools and can run agent onboarding.
COLDLEADS_API_BASEhttps://coldleads.appAPI base URL (for local development against a Cold Leads dev server).

Agent onboarding without a key

  1. The agent calls provision_account_and_get_payment_link with the owner's e-mail.
  2. It shows the returned checkout_url to the human. The human reviews the plan and price on the secure Stripe page and decides whether to pay. The API gives the agent no way to pay, and the agent is told never to open or pay the link.
  3. The agent polls check_provisioning_status with session_id and claim_token every 15–30 seconds.
  4. After payment the first call returns api_key once; this server switches to it immediately. Store it as COLDLEADS_API_KEY for the next start.
  5. The owner receives an e-mail to open the Cold Leads web app, where they can manage the subscription or rotate the key.

Only a request that carries the claim_token can collect the key; a status lookup without it never returns the key.

Responsible use

  • A verified address is not consent. You need a lawful basis to contact each person.
  • Never e-mail leads with do_not_contact: true (opted out, bounced or on the do-not-contact list).
  • Limits: 120 requests per minute per key; each verification costs 1 credit.

Development

bash
npm cinpm run buildnpm test                      # schema, server and stdio child-process testsCOLDLEADS_API_KEY_FILE=path/to/key COLDLEADS_API_BASE=http://localhost:3000 node scripts/smoke.mjs   # live checks

License

MIT © 2026 Anton Tkachenko

Source: README.md at commit daca9f2

Tools

0
This server asks you to sign in, so SourceWeft could not read its tools without an account and has not indexed them. What a connected account sees can depend on that account and its permissions.

Version history

2
  1. v1.0.2LatestOct 13, 2026
  2. v1.0.1Oct 13, 2026

Score

85% 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 listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts