Signado-MCP
Signado MCP is a LinkedIn MCP server for warm leads.
What it can do
- Ping: Free connectivity check. Echoes the message back with the server timestamp. Costs no credits and touches no data.
- List Warm Leads: List warm leads discovered from LinkedIn engagement, newest first (already ICP-scored where scoring has run). Free — costs no credits. Returns up to `limit` leads (default 50, max 200
- Export Leads: Export warm leads as structured rows (same columns as the app's CSV export; one row per contact, engagement columns show the most recent engagement). Free — costs no credits. YOU write t
What data it sees
Do you need an account
No: the server works without sign-in
Signado MCP is a LinkedIn MCP server for warm leads. It connects Claude Code, Codex, ChatGPT, or any MCP client to your Signado workspace: list the people already talking about what you do on LinkedIn, see what they said, find emails, and save AI outreach drafts. OAuth sign-in, no API keys.
It never logs into your LinkedIn account.
How to connect
How to connect Signado-MCP to Claude
The server address to paste into Claude settings:
https://warm-leads--signado.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect Signado-MCP to ChatGPT
The server address to paste into ChatGPT settings:
https://warm-leads--signado.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect Signado-MCP to Cursor
The server address to paste into Cursor settings:
https://warm-leads--signado.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (12)
Raw names from tools/list. Only developers need these.
| ping | Free connectivity check. Echoes the message back with the server timestamp. Costs no credits and touches no data. |
| list_warm_leads | List warm leads discovered from LinkedIn engagement, newest first (already ICP-scored where scoring has run). Free — costs no credits. Returns up to `limit` leads (default 50, max 200) with engagement context, company fields, and icp_score. |
| export_leads | Export warm leads as structured rows (same columns as the app's CSV export; one row per contact, engagement columns show the most recent engagement). Free — costs no credits. YOU write the CSV/file from the returned rows. `days` filters by discovery date and DEFAULTS TO 2 (set it explicitly for a longer window, max 365). Caps at 5000 rows and sets truncated=true if more exist within the window; use `limit` to request fewer. |
| remove_source | Remove (archive) a discovery source by its exact source ID — stops its scheduled LinkedIn scraping. Free. DESTRUCTIVE for monitoring: queued scrape jobs are cancelled. Historical warm leads keep their source label, and re-adding the same keyword/creator later revives this source with its history. |
| preview_source | Run a live preview of a discovery source (keyword or competitor_creator) BEFORE activating it: searches recent LinkedIn posts and samples real commenters so you can judge vertical fit. PAID — costs 1 credit per preview (charged up front, refunded automatically if the run fails to start or never completes). Takes ~10-60s. Requires a completed Business Profile. Provide a fresh idempotency_key per new preview; reuse the same key only to retry an uncertain call. |
| add_source | Add AND activate a LinkedIn discovery source (keyword search or competitor/creator profile) — this IS the start-monitoring act. Keyword sources accept keyword_mode: post_engagers (default, people commenting on matching posts) or post_authors (people who wrote matching posts). Creator profile sources do not accept keyword_mode. Free to call, but activation triggers a first scrape in ~5-15 minutes and recurring daily discovery spend (3 credits per new lead, from the workspace daily budget). REQUIRES confirm: true to act; without it returns a dry-run plan with budget impact. Re-adding a removed source revives its history. Idempotent: calling again on an active source is a no-op. |
| catchup_source | Queue a one-time 7-day catch-up scan for an active keyword or creator discovery source. Requires confirm:true plus max_credits to mutate; confirm:false returns a dry-run instruction. The call itself does not charge credits. Stage-2 lead discovery later charges/refunds normal wallet credits through the existing lead_discovery settlement path, and the daily discovery budget is not affected. |
| find_email | Find work emails for warm leads by their contact IDs (get IDs from list_warm_leads). PAID — 5 credits per contact actually queued, charged up front; credits for emails NOT found are refunded automatically at settlement. Max 200 contacts per call. Contacts already emailed, already in flight, or without a LinkedIn profile are skipped free. Async: returns scrape_job_id; results land on the leads within ~1-5 minutes. Provide a fresh idempotency_key per new batch; reuse the same key only to retry an uncertain call. |
| qualify | Queue company qualification for warm leads by contact IDs (get IDs from list_warm_leads). PAID when confirm:true — 2 credits per contact actually queued, charged up front through the Qualify scrape_job; uncompleted contacts are refunded automatically at settlement after the worker runs. Contacts already pending, processing, completed, or failed are skipped free in normal mode. Use mode=requalify_completed only for an explicit re-qualify action on completed results; it resets completed qualification data and charges again. Requires confirm:true to mutate/charge; confirm:false returns a dry-run estimate. Provide a fresh idempotency_key per confirmed batch; reuse the same key only to retry an uncertain confirmed call. |
| draft_message | Draft AI outreach messages for warm leads (contact IDs from list_warm_leads). PAID — 7 credits PER CONTACT, so cost = 7 × number of contact_ids (each contact gets one AI-drafted message, charged as drafting proceeds; max 5 contacts per call). Creates a campaign (or reuses one via campaign_id from a previous call) and returns the drafted text. Template choice: template_id (see list_templates) OR inline_config (custom template body, tone, language, AI variables) — not both; default is the Warm Leads LinkedIn DM template. Takes ~10-40s per message. Failed or unresolved generations are NOT auto-refunded (matches the app). Requires a completed Business Profile. Run ONE draft call per campaign at a time — concurrent calls on the same campaign can mis-attribute failures and overwrite each other's template config. Provide a fresh idempotency_key per new batch; reuse the same key ONLY to retry an uncertain call — a reused key returns the previous call's stored result regardless of new arguments. |
| list_templates | List the message templates available to this workspace — system presets (e.g. the Warm Leads LinkedIn DM default) plus your own saved templates — with each template body, tone, language and AI variables. Also returns the authoring constraints (allowed tones, languages, variable max-lengths, static variables like {FirstName}, preset AI variables, and your plan's AI-variable limit) for building a save_template or draft_message inline_config. Free, read-only. |
| save_template | Save a reusable message template for this workspace (visible in the app's campaign wizard and via list_templates; usable in draft_message by template_id). Free. Provide the template body — static variables like {FirstName} and AI variables like {{icebreaker}} — plus tone, language and per-AI-variable instructions. Check list_templates first for allowed tones/languages/max-lengths and your plan's AI-variable limit (enforced at draft time, not save time). System templates cannot be modified. |