PluginBench
MCP Server
Active
MIT

HeyLead — AI agent for LinkedIn outreach MCP Server

io.github.D4umak/heylead

AI agent for LinkedIn outreach: finds prospects, writes personalized messages in your voice, follows up, and handles replies.

What is the HeyLead — AI agent for LinkedIn outreach MCP server?

HeyLead is an AI agent for LinkedIn outreach that automates finding the right prospects, writing personalized messages in your own voice, following up, and managing replies. It integrates with Claude Code, Cursor, and any MCP-compatible client to run campaigns for selling products, finding jobs, hiring, fundraising, vendor research, or interviews. The tool respects LinkedIn rate limits, works at human pace, and requires explicit approval before sending.

HeyLead automates LinkedIn outreach by finding qualified prospects based on your Ideal Customer Profile, generating voice-matched messages, engaging with their content before outreach, and handling follow-ups and replies. You define your campaign goal (sell, hire, find partners, etc.), and HeyLead manages the entire workflow—from prospect discovery and warm-up engagement to outcome tracking. It runs autonomously on a schedule while respecting LinkedIn's sending limits and your working hours.

How to install HeyLead — AI agent for LinkedIn outreach

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "heylead": {
      "command": "uvx",
      "args": [
        "heylead"
      ]
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • setup_profile — Connects LinkedIn and analyzes your writing style into a voice signature
  • generate_icp — Generates a rich Ideal Customer Profile with buyer personas
  • icp — Previews which LinkedIn profiles a saved ICP matches without creating a campaign
  • profile_signals — Compiles targeting requests into LinkedIn recall queries and profile-evidence scoring
  • create_campaign — Creates an outreach campaign as a draft from natural language description
  • generate_and_send — Generates a personalized LinkedIn message and sends it
  • check_replies — Checks for new replies, classifies sentiment, and surfaces hot leads
  • book_meeting — Puts an agreed call on Google Calendar and sends the prospect an invite
  • show_status — Dashboard showing campaigns, stats, hot leads, and account health
  • send_message — Sends follow-ups and replies to prospects
  • send_email — Sends email via connected Unipile mailbox (Gmail/Outlook)
  • engage_prospect — Comments on, reacts to, follows, or endorses a prospect
  • inbox — Browses and reads LinkedIn inbox messages directly
  • backfill_inbox — Processes unreplied inbox messages through the inbound pipeline
  • create_post — Generates and publishes a voice-matched post to LinkedIn
  • campaign — Campaign lifecycle management—launch, pause, resume, archive, delete, retry
  • edit_campaign — Edits campaign name, mode, booking link, or context fields
  • prospect — Manages prospects—skip, close with outcome, view conversation or timeline
  • import_prospects — Imports prospects from CSV data into a campaign
  • analytics — Campaign analytics—reports, comparisons, and exports

Use cases

  • Automate B2B sales outreach by finding CTOs or decision-makers at target companies and sending personalized connection requests at scale
  • Manage job search by identifying hiring managers at target companies and sending tailored outreach with automatic follow-ups
  • Build a hiring pipeline by searching for candidates matching your role requirements and engaging them with personalized messages
  • Raise capital by identifying and reaching out to investors matching your company profile with warm engagement before pitching
  • Research and recruit interview participants by finding and contacting potential respondents with custom briefs

HeyLead — AI agent for LinkedIn outreach MCP server FAQ

What is HeyLead?

HeyLead is an AI agent that automates LinkedIn outreach. It finds prospects matching your Ideal Customer Profile, writes personalized messages in your voice, engages with their content, follows up automatically, and tracks outcomes. It integrates with Claude Code, Cursor, and any MCP client.

Is HeyLead free?

HeyLead offers a free plan with up to 2 follow-ups per prospect and monthly quotas (50 invitations, 20 messages, 30 engagements, 1 active campaign). Pro plan is $29/month per connected LinkedIn account with up to 5 follow-ups per prospect. Invitation limits follow your LinkedIn account type (free, Premium, or Sales Navigator).

How do I install HeyLead in Cursor or Claude?

In Cursor: Settings > MCP > Add new MCP server > Name: heylead, Command: uvx heylead. In Claude Code: /plugin marketplace add D4umak/linkedin-outreach-mcp, then /plugin install heylead@heylead. You need uv installed (curl -LsSf https://astral.sh/uv/install.sh | sh).

Do I need to authenticate with LinkedIn?

Yes. After installation, sign in at heylead.dev/dashboard/login or take the 90-second quiz. Connect your LinkedIn account in Settings → Connected accounts, then HeyLead analyzes your writing style and can launch campaigns from your account.

Does HeyLead send messages without my approval?

On hosted accounts, approval mode holds every opening DM and follow-up until you approve it on the dashboard or via the prospect() tool. Invitations, InMail, and replies are never held. You can switch to autopilot in Settings → Sending. All campaigns start as drafts and only send when you explicitly launch them.

What data does HeyLead collect?

HeyLead records tool calls (tool name, success/error, duration, calling app) but never arguments, results, prospect names, links, or messages. AI calls route through HeyLead's backend or your own key. Local mode stores contacts and messages in a local SQLite database. Disable telemetry with heylead config telemetry off or DO_NOT_TRACK=1.

README (reference)

Source of truth, from the repository.

<!-- mcp-name: io.github.D4umak/heylead -->

HeyLead

HeyLead is an AI agent for LinkedIn outreach: it finds the right people, writes to them in the voice of your own LinkedIn posts, follows up, and handles replies. It runs from Claude Code, Cursor, any MCP client or a web dashboard. Sign in on the web, then talk to your AI and say "find me leads."

Use cases

A campaign has one of six goals, and the ICP, the fit check and the messages follow it: Sell a product or service, Find a job, Hire people, Find partners or investors, Find a vendor and Research interviews.

  • Sell a product or service: Reach the people who buy what you built.
  • Find a job: Reach the people who hire for the role you want.
  • Hire people: Reach candidates for a role you are filling. Works with a custom brief.
  • Find partners or investors: Reach the people who can sign a partnership or an investment. Works with a custom brief.
  • Find a vendor: You are the buyer. Reach the people who sell what you need.
  • Research interviews: Reach people to interview, survey or test with. Works with a custom brief.

Hire people, Find partners or investors and Research interviews run on a custom brief until their message sets exist.


Getting Started

MCP (Model Context Protocol) lets AI assistants use external tools. HeyLead gives your AI the ability to do LinkedIn outreach for you.

You need: Cursor or Claude Code — any MCP-compatible AI editor.

Step 1: Install HeyLead

Claude Code, as a plugin (hosted, nothing to install):

/plugin marketplace add D4umak/linkedin-outreach-mcp
/plugin install heylead@heylead

Then run /mcp, pick heylead and choose Authenticate to sign in to your HeyLead account. The plugin connects the hosted server at https://heylead.dev/mcp and adds skills for starting a campaign, approving waiting messages, answering replies, a weekly review, pausing, and adding a list of people. Its source is in plugins/heylead.

Or run the client locally over stdio. You need uv:

Claude Code:

claude mcp add heylead -- uvx heylead

Cursor: Settings > MCP > "Add new MCP server" > Name: heylead, Command: uvx heylead

Any MCP client:

{
  "heylead": {
    "command": "uvx",
    "args": ["heylead"]
  }
}

Update with uvx --refresh heylead.

Step 2: Set up your account

Option A — Hosted (easiest): take the 90-second quiz or sign in at heylead.dev/dashboard/login. Your quiz personas become a draft campaign. Connect LinkedIn in Settings → Connected accounts, then launch from the dashboard — or copy your setup message from Settings → Integrations → Chat client into your AI chat. Nothing sends before you launch. Hosted users share a professional directory; campaigns and inboxes stay private.

Option B — Self-hosted: run everything against your own accounts. You need two things first:

  1. A Unipile account — this is what talks to LinkedIn. Sign up at unipile.com, then put the DSN and API key from the Access Tokens page, then run heylead config set unipile_api_url <DSN> and heylead secrets set unipile_api_key (it prompts; the key is kept in your OS keychain, never in the config file).
  2. An LLM API key — AI calls are billed to you. A free Gemini key is enough to start.

Then open your AI chat and say:

"Set up my HeyLead profile with this Gemini key: YOUR_KEY"

You'll get a LinkedIn authentication link. Open it, connect LinkedIn, then say "finish setup". HeyLead fetches your profile and analyses your writing style.

Step 3: Find leads

"Find me CTOs at fintech startups in New York"
"Send outreach to the campaign"
"Check my replies"
"How's my outreach doing?"

How It Works

  1. Define your ICP — "Generate an ICP for AI SaaS founders" → RAG-powered personas with pain points, barriers, and LinkedIn targeting
  2. Create a campaign — "Find me fintech CTOs" → searches LinkedIn, scores prospects by fit
  3. Warm up prospects — Engages with their posts (comments, likes) before reaching out
  4. Send personalized invitations — Voice-matched messages that sound like you, not a bot
  5. Follow up automatically — Multi-touch sequences after connections are accepted
  6. Handle replies — Detects sentiment, advances positive leads toward meetings, answers questions
  7. Track outcomes — Won/lost/opted-out tracking with conversion analytics

Sending model: campaigns are created as drafts and only start when you explicitly launch them. Every send passes rate limits, working-hours checks, and a 1st-degree connection guard before it goes out. HeyLead sends from your own LinkedIn account at a human pace: at most 20 invitations a day and 100 a week on a free LinkedIn account (more on Premium or Sales Navigator), Monday to Friday 08:00 to 22:00 in your time zone, minutes apart. It backs off when LinkedIn pushes back and resumes on its own. You can pause any campaign at any time. Launching is also what commissions cloud sending — in observe mode nothing is commissioned and nothing is sent, from either machine.

Approval mode (hosted): a workspace that has not chosen otherwise holds every opening DM and follow-up until a person approves it, and the approved text is what is sent. Read what is waiting on the dashboard's Approvals page or with inspect(action="waiting"); decide with prospect(action="approve_message") or discard_message. Autopilot sends them unread and is one switch away (Settings → Sending, or scheduler(action="approval_mode", mode="autopilot")). Invitations, InMail and replies are never held.


Tools

HeyLead gives your AI 22 tools:

Core Workflow

ToolWhat it does
setup_profileConnects LinkedIn and analyzes your writing style into a voice signature
generate_icpGenerates a rich Ideal Customer Profile with buyer personas
icpPreviews which LinkedIn profiles a saved ICP matches, without creating a campaign
profile_signalsCompiles a targeting request (country ties, interests) into LinkedIn recall queries and profile-evidence scoring
create_campaignCreates an outreach campaign (as a draft) from a natural language description
generate_and_sendGenerates a personalized LinkedIn message and sends it
check_repliesChecks for new replies across campaigns, classifies sentiment, surfaces hot leads
book_meetingPuts an agreed call on your Google Calendar and sends the prospect an invite
show_statusYour dashboard — campaigns, stats, hot leads, account health. Links to the matching heylead.dev/dashboard page and, on hosted accounts, attaches a snapshot card

Outreach & Engagement

ToolWhat it does
send_messageSends follow-ups and replies to prospects
send_emailSends email via a connected Unipile mailbox (Gmail/Outlook). Never Mail.app.
engage_prospectComments on, reacts to, follows, or endorses a prospect to build trust
inboxBrowses and reads LinkedIn inbox messages directly
backfill_inboxProcesses unreplied inbox messages through the inbound pipeline
create_postGenerates and publishes a voice-matched post to LinkedIn

Campaign Management

ToolWhat it does
campaignCampaign lifecycle — launch, pause, resume, archive, delete, emergency stop, retry failed
edit_campaignEdits a campaign's name, mode, booking link, or context fields
prospectManages prospects — skip, close with outcome, view conversation or timeline
import_prospectsImports prospects from CSV data into a campaign

Insights & Analytics

ToolWhat it does
analyticsCampaign analytics — reports, comparisons, and exports
inspectRead-only digest of operator holds, strategist replans, closer decisions, reply skips, and gated jobs
knowledgeCurates the knowledge base that grounds messages — lists, adds, removes, refreshes, and searches sources. Hosted only
suggest_next_actionRecommends the best next action, prioritized by impact
signalsViews and analyzes buying signals — news, company engagement, website visits, profile viewers
manage_watchlistAdds, removes, and lists signal keyword watchlists
networkNetwork intelligence — a reciprocal pool of members' connected accounts; join to use it

Growth & Relationships

ToolWhat it does
brand_strategyAnalyzes and improves your LinkedIn personal brand
profileViews and restores LinkedIn profile change history
partnerTracks follow-ups with business partners, vendors, and investors
contactsSearches, browses, and manages your global contact base
crm_syncSyncs campaign contacts and deals to HubSpot CRM

Automation & Account

ToolWhat it does
schedulerManages the autonomous scheduler — status, on/off, send_from (cloud default / local opt-in)
productLocal git checkout only — patch this repo and/or open a PR
accountManages LinkedIn accounts — list, switch, or disconnect
organizationHosted orgs — list, switch, invite editor/viewer, create a client workspace

Key Features

Voice Matching — Analyzes your LinkedIn profile and posts to capture your writing style. Every message sounds like you wrote it.

ICP Generation — RAG-powered pipeline that crawls company context, generates buyer personas with pain points, fears, barriers, and maps them to LinkedIn search parameters.

Autonomous Scheduler — Runs in the background, respects working hours and rate limits. On a hosted account, cloud is the default sender for every campaign. Launching commissions the cloud, so outreach continues with your laptop closed, inside the sending window: invitations, opening DMs, first-touch InMail, follow-ups, engagements, follows, endorsements, email fallbacks, prospect top-ups, auto-replies, inbound, warmup, signal collectors, and post-intel. This machine does not start a local scheduler engine for that work. Move the whole account here with scheduler(action='send_from', host='local'), which turns the cloud scheduler off. Observe still means nobody sends. Direct / self-hosted installs send from this machine only.

Engagement Warm-ups — Automatically engages with prospect posts before sending connection requests, building familiarity.

Pace — HeyLead sends from your own LinkedIn account at a human pace: at most 20 invitations a day and 100 a week on a free LinkedIn account (more on Premium or Sales Navigator), Monday to Friday 08:00 to 22:00 in your time zone, minutes apart. It backs off when LinkedIn pushes back and resumes on its own. You can pause any campaign at any time.

Outcome Tracking — Mark deals as won/lost, track conversion rates, identify stale leads, measure engagement ROI.


Pricing

PlanPriceWhat you get
Free$0Up to 2 follow-ups per prospect
Pro$29 per connected LinkedIn account per monthUp to 5 follow-ups per prospect

Invitation limits follow the LinkedIn account (free, Premium or Sales Navigator), not the HeyLead plan. Self-hosted free installs have monthly quotas: 50 invitations, 20 messages, 30 engagements, 1 active campaign, 3 ICP generations.


Privacy

  • AI calls — routed through HeyLead's backend or your own key
  • Cloud MCP — your data is processed server-side but never shared with third parties
  • Local mode — contacts and messages stay on your machine in a local SQLite database
  • Tool-call telemetry — when you are signed in, your HeyLead workspace records each tool call: the tool, whether it worked, the error type, how long it took and the app that called it (Claude, ChatGPT, Cursor…). Never the arguments, the results, a prospect's name, a link or a message. Turn it off with heylead config telemetry off or DO_NOT_TRACK=1

Power users: Pass your own LLM key (Gemini/Claude/OpenAI) during setup to use your own AI. Completely optional.


Where secrets are kept

HeyLead keeps its backend token, the Unipile key and any LLM keys in the OS credential store (macOS Keychain, Windows Credential Manager, Linux Secret Service), or in an owner-only secrets.json in the HeyLead folder when none exists. The config file holds ordinary settings only. To inspect an install without seeing a secret:

  • heylead config get backend_url prints one ordinary setting
  • heylead api get /api/v1/campaigns makes an authenticated read of the hosted API, credentials masked
  • heylead secrets status lists which secrets are stored, never their values
  • heylead secrets clean moves secrets out of an older config file, drops keys a cloud-sending install does not use, and deletes old config backup copies

Backend mode & env

When the MCP client talks to a HeyLead backend (e.g. heylead-api), the backend uses these environment variables. Operators running their own backend should set them as required.

PurposeExample env vars
LLMGEMINI_API_KEY, or OPENAI_API_KEY / ANTHROPIC_API_KEY if using other providers
Search / crawlSERPER_API_KEY, FIRECRAWL_API_KEY (or similar) for ICP and company context
Auth / storageGOOGLE_* (OAuth), UNIPILE_* (LinkedIn provider), plus DB/Redis if used
OptionalFeature flags, rate limits, logging — see backend repo

For full backend configuration and deployment, see the heylead-api (or backend) repo and its docs.


Optional Dependencies

The base install covers all core features. For advanced ICP generation:

pip install heylead[icp]    # Embeddings for RAG-powered ICP generation
pip install heylead[crawl]  # Web crawling for company context ingestion
pip install heylead[all]    # Both

Troubleshooting

"uvx: command not found" Install uv first: curl -LsSf https://astral.sh/uv/install.sh | sh (or brew install uv on Mac)

"MCP server not connecting" Restart your editor after adding the MCP server. In Cursor, check Settings > MCP — the server should show a green dot.

"Setup failed" or "LinkedIn not connected" Make sure you clicked "Connect" on the LinkedIn row of the sign-in page (dashboard: Settings → Connected accounts) and completed the LinkedIn login. Then run setup again.

Need help? Open an issue.


Publishing to PyPI (maintainers)

To make HeyLead available on PyPI (or to publish a new version):

Option A: Publish via GitHub Release (recommended)

  1. One-time: Create a PyPI account and an API token. In your repo: Settings → Secrets and variables → Actions → add secret PYPI_TOKEN with the token value.
  2. Bump version in pyproject.toml (version = "0.2.4").
  3. Commit, push, then create a GitHub Release (tag e.g. v0.2.4, release title optional). The workflow .github/workflows/publish.yml runs on release and publishes to PyPI.

Option B: Publish manually

pip install build twine
python -m build          # creates dist/
twine check dist/*       # optional: validate
twine upload dist/*      # prompts for PyPI username + password (use __token__ and your API token)

After publishing, anyone can add it with claude mcp add heylead -- uvx heylead (Cursor: command uvx heylead).


For AI Agents

HeyLead is designed as an MCP-native tool — built for AI agents, not humans clicking buttons.

Install as MCP server (stdio):

{
  "heylead": {
    "command": "uvx",
    "args": ["heylead"]
  }
}

OpenClaw: Add the same entry to your openclaw.json under mcp.servers. Also available on ClawHub — search "HeyLead".

Sign in at heylead.dev (hosted), or bring your own Unipile account and LLM API key (self-hosted).

Capabilities: LinkedIn lead generation, cold outreach automation, ICP generation with buyer personas, voice-matched personalized messaging, multi-touch drip sequences, reply sentiment classification, engagement warm-ups, campaign analytics, and scheduled sending from the cloud with your laptop closed.

22 tools, from finding the right people to answering their replies: prospect discovery, ICP generation with buyer personas, connection invitations with a note, opening messages and follow-ups, warm-ups (profile views, follows, comments), reply handling that holds anything ambiguous for you, and outcome tracking.

See AGENTS.md for the full agent integration guide.


Links

License

MIT (code) — see LICENSE

Knowledge base and prompt configurations are proprietary.

Related MCP servers

Exactly 50 data transformation and live web verification tools for AI agents.

View repository →

macOS-only MCP server for the Arc browser: tabs, navigation, page reading, DOM, scripting

View repository →
UPUpToCode logo

UpToCode

Active

Evidence-backed architecture-quality analysis for Python agent applications.

0
Python
MIT
View repository →

Non-custodial EVM wallet bridge over WalletConnect: balances, signing, transactions.

View repository →

Medicare rates, hospital quality, and dispute scenarios from six federal public-domain datasets.

Read-only DERO blockchain MCP: 33 tools (12 composites) incl. TELA discovery + bundled docs.

2
TypeScript
MIT
View repository →