HeyLead — AI agent for LinkedIn outreach
io.github.D4umakPublished by GitHub account D4umakv0.10.498Updated Nov 8, 2026
AI agent for LinkedIn outreach: finds the right people, writes in your voice, follows up, replies.
Overview
HeyLead runs LinkedIn outreach for you: it finds prospects, writes in your voice, sends invitations and follow-ups, and handles replies.
- What you can do
- Set up a profile and voice signature, generate ICPs with buyer personas, and preview which profiles an ICP matches
- Create, edit, launch, pause or delete campaigns, and import prospects from CSV
- Find and score prospects, send invitations, opening messages, follow-ups and email, and warm up contacts with comments, likes and follows
- Read the LinkedIn inbox, classify reply sentiment, answer replies and book meetings on Google Calendar
- Publish voice-matched LinkedIn posts and review campaign analytics, buying signals and next-action suggestions
- Sync contacts and deals to HubSpot and manage LinkedIn accounts, organizations and the autonomous scheduler
- When to use it
- Use it when you want an assistant to run LinkedIn prospecting and outreach end to end — selling, hiring, job hunting, partner or investor search, vendor sourcing or research recruiting — instead of drafting messages by hand.
- Requirements
- Either a hosted HeyLead account signed in through OAuth, or a self-hosted setup with a Unipile account (DSN and API key) and your own LLM API key. The local client is a Python package installed with uv; a connected LinkedIn account is required, and email sending needs a connected Unipile mailbox.
Installation
In SourceWeft
- Open HeyLead — AI agent for LinkedIn outreach in the dashboard and add it to a workspace.
- Connect the required credentials. They are stored privately and never shown on public pages.
- 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.D4umak%2Fheylead/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.Other MCP clients
Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.
{
"mcpServers": {
"heylead-ai-agent-for-linkedin-outreach": {
"type": "http",
"url": "https://heylead.dev/mcp"
}
}
}README
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):
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. Install the CLI once with uv:
Claude Code:
Cursor: Settings > MCP > "Add new MCP server" > Name: heylead, Command: heylead
Any MCP client:
Update with uv tool upgrade 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:
- 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>andheylead secrets set unipile_api_key(it prompts; the key is kept in your OS keychain, never in the config file). - 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
How It Works
- Define your ICP — "Generate an ICP for AI SaaS founders" → RAG-powered personas with pain points, barriers, and LinkedIn targeting
- Create a campaign — "Find me fintech CTOs" → searches LinkedIn, scores prospects by fit
- Warm up prospects — Engages with their posts (comments, likes) before reaching out
- Send personalized invitations — Voice-matched messages that sound like you, not a bot
- Follow up automatically — Multi-touch sequences after connections are accepted
- Handle replies — Detects sentiment, advances positive leads toward meetings, answers questions
- 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: a newly connected paid account starts at 20 a day and doubles each week up to its limit), 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 and InMail are never held. In review mode, invitations go out without a note.
Tools
HeyLead gives your AI 22 tools:
Core Workflow
Outreach & Engagement
Campaign Management
Insights & Analytics
Growth & Relationships
Automation & Account
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: a newly connected paid account starts at 20 a day and doubles each week up to its limit), 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
A connected account is a LinkedIn seat or an email mailbox. Free includes one of either.
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 offorDO_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_urlprints one ordinary settingheylead api get /api/v1/campaignsmakes an authenticated read of the hosted API, credentials maskedheylead secrets statuslists which secrets are stored, never their valuesheylead secrets cleanmoves 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.
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:
Troubleshooting
"heylead: command not found" or "uv: command not found"
Install uv first (curl -LsSf https://astral.sh/uv/install.sh | sh or brew install uv on Mac), then run uv tool install heylead and uv tool update-shell (or pass the full path from command -v heylead).
"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)
- One-time: Create a PyPI account and an API token. In your repo: Settings → Secrets and variables → Actions → add secret
PYPI_TOKENwith the token value. - Bump version in
pyproject.toml(version = "0.2.4"). - Commit, push, then create a GitHub Release (tag e.g.
v0.2.4, release title optional). The workflow.github/workflows/publish.ymlruns on release and publishes to PyPI.
Option B: Publish manually
After publishing, anyone can install it with uv tool install heylead and add it with claude mcp add heylead -- heylead (Cursor: command 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):
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 and outcome tracking. Replies are read, classified and answered from the campaign's facts. A reply that could mean two things gets one short question back. A question your facts can't answer is held for you.
See AGENTS.md for the full agent integration guide.
Links
- PyPI
- MCP Registry
- Smithery
- ClawHub (OpenClaw skill store)
- Issues
License
MIT (code) — see LICENSE
Knowledge base and prompt configurations are proprietary.
Source: README.md at commit 8c7cfef
Tools
0Version history
81- v0.10.498LatestNov 8, 2026
- v0.10.497Nov 8, 2026
- v0.10.496Nov 7, 2026
- v0.10.495Nov 7, 2026
- v0.10.492Nov 5, 2026
- v0.10.491Nov 4, 2026
- v0.10.490Nov 3, 2026
- v0.10.487Nov 1, 2026
- v0.10.486Nov 1, 2026
- v0.10.485Oct 30, 2026
- v0.10.484Oct 30, 2026
- v0.10.483Oct 30, 2026
- v0.10.482Oct 29, 2026
- v0.10.474Oct 26, 2026
- v0.10.473Oct 26, 2026
- v0.10.472Oct 25, 2026
- v0.10.471Oct 25, 2026
- v0.10.470Oct 21, 2026
- v0.10.469Oct 21, 2026
- v0.10.468Oct 20, 2026
- v0.10.467Oct 20, 2026
- v0.10.466Oct 19, 2026
- v0.10.464Oct 18, 2026
- v0.10.463Oct 17, 2026
- v0.10.462Oct 17, 2026
- v0.10.461Oct 16, 2026
- v0.10.460Oct 16, 2026
- v0.10.458Oct 16, 2026
- v0.10.457Oct 15, 2026
- v0.10.455Oct 15, 2026
- v0.10.454Oct 14, 2026
- v0.10.452Oct 13, 2026
- v0.10.451Oct 13, 2026
- v0.10.448Oct 13, 2026
- v0.10.447Oct 12, 2026
- v0.10.446Oct 12, 2026
- v0.10.444Oct 10, 2026
- v0.10.443Oct 9, 2026
- v0.10.442Oct 9, 2026
- v0.10.441Oct 9, 2026
- v0.10.440Oct 9, 2026
- v0.10.439Oct 9, 2026
- v0.10.438Oct 8, 2026
- v0.10.437Oct 8, 2026
- v0.10.435Oct 8, 2026
- v0.10.432Oct 7, 2026
- v0.10.431Oct 7, 2026
- v0.10.430Oct 6, 2026
- v0.10.429Oct 5, 2026
- v0.10.427Oct 5, 2026
- v0.10.425Sep 30, 2026
- v0.10.422Sep 30, 2026
- v0.10.421Sep 30, 2026
- v0.10.420Sep 29, 2026
- v0.10.415Sep 29, 2026
- v0.10.412Sep 28, 2026
- v0.10.409Sep 28, 2026
- v0.10.408Sep 27, 2026
- v0.10.407Sep 27, 2026
- v0.10.406Sep 27, 2026
- v0.10.405Sep 27, 2026
- v0.10.404Sep 27, 2026
- v0.10.403Sep 26, 2026
- v0.10.402Sep 26, 2026
- v0.10.401Sep 25, 2026
- v0.10.399Sep 25, 2026
- v0.10.398Sep 25, 2026
- v0.10.396Sep 24, 2026
- v0.10.395Sep 24, 2026
- v0.10.394Sep 23, 2026
- v0.10.393Sep 23, 2026
- v0.10.392Sep 23, 2026
- v0.10.391Sep 22, 2026
- v0.10.390Sep 21, 2026
- v0.10.389Sep 21, 2026
- v0.10.387Sep 20, 2026
- v0.10.384Sep 20, 2026
- v0.10.379Sep 19, 2026
- v0.10.378Sep 18, 2026
- v0.10.377Sep 18, 2026
- v0.9.5Sep 16, 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