Cold Leads

Cold Leads in Cursor, Claude Desktop und Windsurf über MCP nutzen

Für wen
Entwickler, die KI-Assistenten in Cursor, Claude Desktop oder Windsurf nutzen
Das Problem
Adressen zwischen Assistent, CRM und Prüf-Tool hin- und herzukopieren ist langsam und fehleranfällig, und ein Assistent, den man nach Kontakten fragt, erfindet bereitwillig welche.
Die Lösung
Ein verbundener Assistent kann Ihre Kontakte verwalten, strukturierte Zeilen importieren, synchronisierte Gespräche lesen, Vorlagen und Kampagnenentwürfe pflegen und Website-Formulare einrichten. Der Versand erfordert Ihre ausdrückliche Bestätigung und unterliegt den Einwilligungs-, Abmelde-, DNC- und Kontoschutzregeln von Cold Leads.
Was Sie bekommen
Ein Assistent, der über MCP oder das Node SDK mit Ihren Kontakten, Ihrem Postfach und Kampagnenentwürfen arbeitet.

Adressen, IDs und Ergebnisse in den Beispielen sind illustrativ. example.com ist für Dokumentation reserviert, eine echte Prüfung dieser Adressen liefert daher invalid.

Die Codebeispiele sind in allen Sprachen gleich, ihre Kommentare sind auf Englisch.

Was der Server bietet

ToolWas es tutKosten
search_leadsKontakte, die bereits in Ihrem Cold-Leads-CRM sind, zu einer Firmendomain (Subdomains eingeschlossen), mit einem optionalen Rollen-Stichwort, das mit Name, lokalem Teil der E-Mail-Adresse, Tags, Notizen und Kontakttyp abgeglichen wird. Liefert E-Mail, Name, Firma, Telefon, Phase, Tags, Prüfergebnis und do_not_contact.Kostenlos
verify_emailPrüfung von Syntax, Wegwerf-Domain, Rollenkonto und MX, dazu die SMTP-Prüfung von Postfach und Accept-all, wenn Cold Leads eine SMTP-Verbindung zum Mailserver des Empfängers aufbauen kann. Liefert validity, score, reasons, catch_all, disposable und role_account.1 Credit
CRM, Postfach, Vorlagen, Kampagnen und Website-ToolsKontakte importieren und aktualisieren (bis zu 100 strukturierte Zeilen pro Aufruf; CSV/XLSX wird vorher vom Assistenten gelesen). Synchronisierte Gespräche prüfen, Vorlagen und Entwürfe verwalten; Einzel-E-Mails und Kampagnen werden erst nach Bestätigung versendet. Website-Anfragen haben inquiry, keine automatische Kaltakquise-Einwilligung.Kostenlos; Sendelimits gelten
provision_account_and_get_payment_link, check_provisioning_statusOnboarding ohne Schlüssel: ein Stripe-Zahlungslink für den menschlichen Inhaber, danach einmalig der API-Schlüssel. Nur im lokalen Server.Keine Credits

Cold Leads hat keine externe Personen- oder Firmendatenbank. MCP greift nur auf den verbundenen Arbeitsbereich zu. Dateien müssen vor dem Import in strukturierte Zeilen umgewandelt werden; Importe senden keine E-Mails. Website-Anfragen werden als inquiry gespeichert; Verifizierung ist keine Einwilligung. Kampagnen bleiben Entwürfe, bis ein Mensch sie prüft und startet.

  • Lokaler Server (stdio): npx -y --allow-git=root github:anttka4cz/mcp-server-coldleads mit COLDLEADS_API_KEY in seiner Umgebung. Er ist nicht auf npm veröffentlicht; npx installiert ihn von GitHub. Er braucht Node.js 20 oder neuer. npm 12 blockiert Installationen aus Git, sofern Sie sie nicht erlauben, und genau das tut --allow-git=root für diesen Befehl; npm 10 akzeptiert das Flag ebenfalls.
  • Gehosteter Endpunkt: https://coldleads.app/api/mcp, MCP Streamable HTTP. Nutzen Sie einen geheimen API-Schlüssel oder ChatGPT OAuth. Die Tools verwalten Kontakte, synchronisierte Gespräche, Vorlagen und Kampagnenentwürfe, erlaubten Versand, Website-Formulare, Suche und E-Mail-Prüfung.
  • Der Schlüssel ist ein geheimer Schlüssel (sk_…) unter Einstellungen → API-Schlüssel. Die API, und damit auch MCP, ist Teil des Business-Tarifs.

Cursor

Tragen Sie den Server in ~/.cursor/mcp.json ein, um ihn in jedem Projekt zu nutzen, oder in .cursor/mcp.json innerhalb eines einzelnen Projekts. Der lokale Server:

~/.cursor/mcp.json (lokaler Server)
{
  "mcpServers": {
    "coldleads": {
      "command": "npx",
      "args": ["-y", "--allow-git=root", "github:anttka4cz/mcp-server-coldleads"],
      "env": { "COLDLEADS_API_KEY": "sk_your_secret_key" }
    }
  }
}

Cursor verbindet sich auch mit Remote-Servern mit eigenen Headern, der gehostete Endpunkt funktioniert also ohne Node.js. Cursor löst ${env:NAME} in url und headers auf, so bleibt der Schlüssel aus der Datei heraus:

~/.cursor/mcp.json (gehosteter Endpunkt)
{
  "mcpServers": {
    "coldleads": {
      "url": "https://coldleads.app/api/mcp",
      "headers": { "Authorization": "Bearer ${env:COLDLEADS_API_KEY}" }
    }
  }
}

Claude Desktop

  1. Öffnen Sie das Menü Claude in der Menüleiste des Systems (nicht die Einstellungen im Chatfenster), wählen Sie Settings…, öffnen Sie den Tab Developer und klicken Sie auf Edit Config.
  2. Die Datei liegt unter macOS in ~/Library/Application Support/Claude/claude_desktop_config.json und unter Windows in %APPDATA%\Claude\claude_desktop_config.json. Fügen Sie den Block unten ein und speichern Sie.
  3. Beenden Sie Claude Desktop vollständig und starten Sie es neu; MCP-Server werden nur beim Start geladen.
claude_desktop_config.json
{
  "mcpServers": {
    "coldleads": {
      "command": "npx",
      "args": ["-y", "--allow-git=root", "github:anttka4cz/mcp-server-coldleads"],
      "env": { "COLDLEADS_API_KEY": "sk_your_secret_key" }
    }
  }
}

Claude Desktop startet lokale Server aus dieser Datei. Remote-Server werden dagegen als Connectors in den App-Einstellungen hinzugefügt, und einen Header mit API-Schlüssel aus einem Connector zu senden, ist eine Beta, die nur manche Organisationen haben. Der lokale Server ist daher der Weg, der für alle funktioniert.

Windsurf (Devin Desktop) und Claude Code

Am 2. Juni 2026 wurde Windsurf zu Devin Desktop. Öffnen Sie im Cascade-Panel oben rechts das Menü … (Actions) und klicken Sie im Abschnitt MCPs auf Open MCP config file; fügen Sie dann denselben mcpServers-Block wie bei Cursor (den lokalen Server) hinzu und speichern Sie. Die Dokumentation von Devin nennt für diese Datei ~/.config/devin/mcp_config.json (unter Windows %APPDATA%\devin\mcp_config.json); Windsurf-Versionen vor der Umbenennung lesen ~/.codeium/windsurf/mcp_config.json. Remote-Server erhalten eine url (oder serverUrl) mit headers:

mcp_config.json (gehosteter Endpunkt)
{
  "mcpServers": {
    "coldleads": {
      "url": "https://coldleads.app/api/mcp",
      "headers": { "Authorization": "Bearer sk_your_secret_key" }
    }
  }
}

In Claude Code fügen Sie eine der beiden Varianten im Terminal hinzu:

bash
# local stdio server (Node.js 20 or newer)
claude mcp add --env COLDLEADS_API_KEY=sk_your_secret_key --transport stdio coldleads -- npx -y --allow-git=root github:anttka4cz/mcp-server-coldleads

# or the hosted endpoint
claude mcp add --transport http coldleads https://coldleads.app/api/mcp --header "Authorization: Bearer sk_your_secret_key"

Prompts, die zu den echten Tools passen

  • Suche in meinem Cold-Leads-CRM nach Kontakten bei example.com mit dem Tag cto und prüfe ihre Adressen. (search_leads mit domain example.com und role cto, danach verify_email für jeden Lead ohne do_not_contact: 1 Credit pro Adresse.)
  • Welche meiner Cold-Leads-Kontakte bei example.com sind als do_not_contact markiert? (Nur search_leads, kostenlos.)
  • Prüfe anna@example.com und sag mir, ob das Postfach selbst geprüft wurde. (verify_email; die Antwort steht in reasons: ok heißt, ein Mailserver hat das Postfach akzeptiert, smtp_unreachable heißt, es wurde nicht geprüft.)
  • Prüfe diese fünf Adressen und sortiere sie anhand ihrer Grundcodes in „senden“, „nachprüfen“ und „verwerfen“. (Fünfmal verify_email, 5 Credits.)
  • Mit dem lokalen Server und noch ohne Schlüssel: Richte Cold Leads für owner@example.com ein. (provision_account_and_get_payment_link liefert einen Zahlungslink, über den Sie als Mensch entscheiden.)

Das Rollen-Stichwort wird mit Name, lokalem Teil der E-Mail-Adresse, Tags, Notizen und Kontakttyp abgeglichen; ein Feld für die Berufsbezeichnung hat Cold Leads nicht. Versehen Sie Kontakte mit ihrer Rolle als Tag (cto, ceo, sales), wenn Rollensuchen funktionieren sollen. Tool-Ergebnisse kommen als kompaktes JSON zurück:

Ergebnis von search_leads
{
  "status": "success",
  "domain": "example.com",
  "count": 1,
  "source": "crm",
  "leads": [
    {
      "email": "jan.novak@example.com",
      "name": "Jan Novák",
      "company": "Acme",
      "stage": "lead",
      "tags": ["cto"],
      "verification": { "status": "valid", "score": 75 },
      "do_not_contact": false
    }
  ]
}
Ergebnis von verify_email (Mailserver per SMTP nicht erreichbar)
{
  "status": "success",
  "email": "jan.novak@example.com",
  "validity": "valid",
  "catch_all": null,
  "score": 75,
  "reasons": ["smtp_unreachable"],
  "disposable": false,
  "role_account": false
}

Den gehosteten Endpunkt im Terminal testen

Der Endpunkt ist zustandslos, ein einzelner POST funktioniert also ohne initialize-Handshake. So prüfen Sie auch schnell, ob ein Schlüssel gültig ist und zu einem Business-Konto gehört.

bash
# list the tools of the hosted endpoint (free; counts toward 120 requests per minute)
curl -s https://coldleads.app/api/mcp \
  -H "Authorization: Bearer $COLDLEADS_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

# call verify_email once (1 credit)
curl -s https://coldleads.app/api/mcp \
  -H "Authorization: Bearer $COLDLEADS_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"verify_email","arguments":{"email":"anna@example.com"}}}'

Limits und Kosten

  • search_leads ist kostenlos und liefert bis zu 50 Kontakte pro Aufruf (standardmäßig 10).
  • verify_email kostet 1 Credit pro Aufruf, auch für Ergebnisse aus dem 30-Tage-Cache. Die Antwort kommt nach etwa 5 Sekunden: Der gehostete Endpunkt gibt jeder Prüfung ein Zeitbudget von 4,5 Sekunden, der lokale Server fordert 4 Sekunden an. Ist das Budget aufgebraucht, lautet das Ergebnis risky mit dem Grund timeout und wird nicht zwischengespeichert; POST /api/v1/verify akzeptiert für eine längere Prüfung ein timeout_ms von bis zu 30.000.
  • Jede Anfrage an den gehosteten Endpunkt, auch initialize und tools/list, zählt zu den 120 Anfragen pro Minute des Schlüssels. Der lokale Server ruft die API nur bei Tool-Aufrufen auf.
  • Der Business-Tarif kostet $99 im Monat und enthält 10.000 Credits im Monat; zusätzliche Pakete zu 1.000 Credits kosten $5.

FAQ

Kann der Assistent neue Personen in einem Unternehmen finden?

Nein. Cold Leads hat keine Personen- oder Firmendatenbank. search_leads umfasst nur die Kontakte in Ihrem eigenen Cold-Leads-Arbeitsbereich. Für einen Namen, den Sie bereits kennen, liefert POST /api/v1/find die wahrscheinlichste Adresse, gekennzeichnet als pattern, sofern kein Mailserver das Postfach bestätigt hat.

Lokaler Server oder gehosteter Endpunkt?

Der lokale Server funktioniert in jedem Client, der einen Befehl starten kann, und übernimmt auch das Onboarding ohne Schlüssel. Der gehostete Endpunkt braucht kein Node.js, funktioniert aber nur in Clients, die einen eigenen Authorization-Header senden können. Beide führen dieselben Prüfungen aus.

Warum ist catch_all null?

catch_all ist nur bekannt, wenn ein Mailserver auf den Test geantwortet hat; das zeigt sich an einem letzten Grund ok, catch_all oder mailbox_missing. Andernfalls liefern sowohl der gehostete Endpunkt als auch der lokale Server null: Accept-all wurde nicht getestet, lesen Sie also in reasons nach, was geprüft wurde.

Wohin gehört mein Schlüssel?

In den env-Block oder den Header Ihrer lokalen MCP-Konfiguration. Der Server sendet ihn als Authorization: Bearer an coldleads.app. Fügen Sie ihn nicht in einen Chat ein, und erneuern Sie ihn unter Einstellungen → API-Schlüssel, falls er nach außen gelangt.