Questions people ask.
Last updated 24 September 2026
What HeyLead does, what it sends and when, what it costs, where your data goes, and what your agent can call.
Every answer here names the feature, the tool or the number behind it.
The shortest setup is still one line, pasted into your AI chat: Set up HeyLead using https://heylead.dev/llms.txt
Getting started
What is 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. HeyLead (heylead.dev) is made by Olnesta Ltd in London. The client is MIT-licensed on GitHub; the hosted service runs the campaigns from the cloud.
How do I set it up in Claude Code, Cursor or Claude Desktop?
Paste Set up HeyLead using https://heylead.dev/llms.txt into your AI chat and it follows the setup for your client. By hand: in a Claude Code terminal, run claude mcp add --transport http --scope user heylead https://heylead.dev/mcp, then open /mcp, select heylead and sign in in the browser. In Claude Desktop, Cowork or claude.ai, add a custom connector with the address https://heylead.dev/mcp. In Cursor, merge {"mcpServers": {"heylead": {"url": "https://heylead.dev/mcp"}}} into .cursor/mcp.json. In VS Code, the same entry goes under servers in .vscode/mcp.json. Any other MCP client takes remote Streamable HTTP at the same address with OAuth browser sign-in. The quickstart has each step.
Do I need Python, uv or an API key?
Not for the hosted connection. Your client talks to https://heylead.dev/mcp and signs you in through the browser; nothing is installed and nothing is sent to anyone during setup. Python and uv are needed only for the local client, and a Unipile account and an LLM key only when you self-host.
How do I know the setup worked?
Ask your AI: "Show my HeyLead status." It should call show_status and report your workspace, even an empty one. A saved configuration is not a connection; a tool call that answers is. MCP connected and LinkedIn connected are two different things: connect LinkedIn in the dashboard, then the read-only accounts tool shows the seat.
Do I have to give HeyLead my LinkedIn password?
No. You connect the LinkedIn seat in the dashboard through Unipile, and your LinkedIn password never touches HeyLead. HeyLead is not a Chrome extension and installs nothing in your browser.
Can I use HeyLead from the dashboard only, without an AI client?
Yes. Sign in at heylead.dev/dashboard/login. The dashboard runs the same campaigns as the chat tools, and Approvals, Settings and billing live there.
Is HeyLead (heylead.dev) the same as heylead.com or heylead.ai?
No. HeyLead (heylead.dev) is the AI agent for LinkedIn outreach made by Olnesta Ltd in London. heylead.com is a US agency, heylead.ai a Swiss leads company and heylead.de a German recruiting agency; none is related.
Sending and safety
Does HeyLead send LinkedIn messages automatically?
Not until you say so twice. create_campaign saves a draft and sends nothing; outreach starts with campaign(action='launch'). A new workspace runs in approval mode: opening messages and follow-ups wait until you approve them, and the approved text is what goes out. Invitations, InMail and email are not held. Switch to autopilot and the agents send inside your working hours and caps. campaign(action='emergency_stop') pauses everything.
What is approval mode, and how do I switch to autopilot?
A workspace that has not chosen otherwise holds opening messages and follow-ups until a person approves them: under Approvals in the dashboard, or in chat with inspect(action='waiting') to list them and prospect(action='approve_message') to send one. The text you approve is the text that is sent. Autopilot sends them unread and is one switch away: Settings → Sending in the dashboard, or scheduler(action='approval_mode'). Invitations, InMail and email are not held either way.
How does HeyLead pace itself?
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. No LinkedIn call is made between 22:00 and 08:00. HeyLead is not affiliated with LinkedIn; it connects through Unipile, which is not affiliated either. LinkedIn's own rules are in the Terms.
What are the invitation ceilings?
The ceiling belongs to your LinkedIn account, not to the HeyLead plan. HeyLead reads it from the seat and enforces it: 20 a day and 100 a week on a free LinkedIn account, 168 a day and 320 a week on Premium and Sales Navigator, measured on two seats on 16 September 2026. A ceiling is a limit HeyLead enforces, not a volume LinkedIn promises. The pricing page has the table.
What happens when I reach the invitation ceiling?
HeyLead stops sending invitations from that seat until the day or the week resets, and carries on with the rest of the plan: opening messages, follow-ups and replies. When LinkedIn pushes back before the ceiling, it backs off from 5 minutes to 6 hours.
Who is never contacted?
Your existing connections are excluded from cold campaigns. So are your competitors' employees, people marked open to work, company pages, anyone already in another campaign, and on a hosted workspace anyone who scores under half on fit. People you import from a CSV or a spreadsheet are never filtered out by a score. An opt-out is honoured for good.
What happens when a prospect replies?
The reply agent reads the intent and the objection type and answers from your campaign's facts. Anything ambiguous, or a question outside the brief, is held for you. "Not now" gets a check-in in 30 days. When someone says yes and a time is on the table, the closer books it on your Google Calendar; it never invents a time and books at most five a day. To answer every reply yourself, turn off automatic replies (the campaign's Auto-reply setting, or edit_campaign(enable_auto_replies='off')).
How do I stop everything?
campaign(action='emergency_stop') pauses every active campaign at once. campaign(action='pause') pauses one and campaign(action='resume') starts it again. Nothing new goes out from a paused campaign until you resume it.
Pricing
Is HeyLead free, and what does the free plan include?
Free is $0 with no contract and no setup fee: one LinkedIn seat, cloud sending with your laptop closed, ICP generation, search preview, warm-up, invitations, the opening message, up to 2 follow-ups per person, replies, signals and analytics. Invitation limits follow your LinkedIn plan. Pro is $29 per connected account per month, cancel any time: up to 5 follow-ups per person and more than one LinkedIn account. Self-hosted installs are free with monthly quotas.
What counts as a connected account?
A LinkedIn seat you connect to your workspace through Unipile. Free includes one. Pro is charged per connected account per month, and each account has its own invitation ceiling.
Does Free really send from the cloud?
Yes. Cloud sending is included on Free: outreach runs with your laptop closed, Monday to Friday 08:00 to 22:00 in your time zone by default, and no LinkedIn call is made between 22:00 and 08:00.
Does Pro raise my invitation ceiling?
No. The invitation ceiling belongs to the LinkedIn account and is the same on Free and Pro. Pro buys up to 5 follow-ups per person instead of 2, and more than one connected LinkedIn account, each with its own ceiling, for $29 per connected LinkedIn account per month.
Do I need a card to start?
No. Free needs no card, no contract and no setup fee. Pro is billed monthly to the workspace through Stripe, from Settings in the dashboard.
Can I cancel Pro?
Yes, any time, from Settings in the dashboard. Pro is monthly with no contract and no setup fee, and it stays with the workspace until the month you paid for ends.
Your data
Can I export my contacts?
Yes, any time, with contacts(action='export') as a table, CSV or JSON. analytics(action='export') exports campaign results the same way.
How do I delete my data?
Delete the workspace under Settings → Workspace in the dashboard. Your campaigns, contacts and messages stay until you do. On the hosted service, finished job rows are kept 7 days, action counters 2 days and the event log 30 days, whatever you do. After an account deletion, personal data is removed within 30 days, except where the law requires retention.
Where is my data stored?
On the hosted service, on Google Cloud, encrypted in transit with TLS. LinkedIn data reaches it through Unipile and is used only to run the outreach you asked for; it is never sold. A self-hosted install keeps contacts and messages in a local SQLite file on your machine. The privacy policy has the full list.
Does HeyLead read my Google Calendar?
No. Google Calendar is optional and never part of signing in. When you connect it, HeyLead asks for the calendar.events.owned permission and only creates events: it does not read, list, change or delete the ones you have. Revoke it any time at myaccount.google.com/permissions.
Self-hosting
What does self-hosting cost?
Nothing to HeyLead. You run the MIT client with your own Unipile account and your own LLM key, and pay those providers directly. Self-hosted free installs have monthly quotas: 50 invitations, 20 messages, 30 engagements, 1 active campaign, 3 ICP generations.
What do I need to self-host?
uv, a Unipile account and an LLM key from Gemini, Claude or OpenAI. Install with claude mcp add --scope user heylead -- uvx heylead, put the Unipile URL and key and the LLM key in ~/.heylead/config.json, and sending runs from that machine only: it stops when the machine sleeps, and the cloud scheduler is not involved. See Self-hosting.
What is open source and what is not?
The client is MIT-licensed on GitHub and PyPI: the MCP server with its tools, targeting, writing, replies and a local scheduler with rate limits and quiet hours. The hosted backend, its prompts and its knowledge base are proprietary. So the source is on GitHub; HeyLead is not fully open source.
Can the local client drive a hosted account?
Yes. Settings → Integrations → Chat client → Local Python client in the dashboard carries a setup message with a sign-in token for setup_profile(backend_jwt=...). Outreach then runs from the cloud like any hosted account. This path does not use OAuth, so paste the message only into your own agent.
From your agent
Can I use HeyLead from Claude Code or Cursor without the dashboard?
Yes. Copy the setup prompt above into your AI chat. HeyLead connects over remote MCP with browser sign-in, with no Python or uv installation. Connect LinkedIn once in the dashboard, then ask your AI to show your HeyLead status and draft a campaign.
What is a tool call?
A tool call is your AI client asking HeyLead's MCP server to do one thing: show_status reads your workspace, create_campaign saves a draft, campaign(action='launch') starts outreach. Reading and changing are separate tools, so an assistant can look without asking you first; a tool that sends, publishes, deletes or overwrites is marked as acting, and your client asks before running one. Setup is verified by a tool call that answers, not by a saved configuration.
How many tools are there?
The local client serves 22 tools by default and 47 with HEYLEAD_TOOLS=all (heylead 0.10.396); the other 25 cover brand and content, signals, bulk import, CRM sync, the shared network pool and the local repository agent. The hosted server advertises its own list through tools/list when a client connects. Every tool is on the tool reference.
Can my agent read without changing anything?
Yes. The consent page asks for two scopes. outreach:read reads campaigns, contacts, replies, results and status; a read-only connection can draft and show but never send. outreach:write creates and changes campaigns, approves messages, sends as you, launches and stops.
How does sign-in work, and how do I revoke a client?
OAuth 2.1 with PKCE. Your client opens the browser, you sign in with Google and choose a workspace on the consent page, and the client keeps a token: the access token lives one hour and the refresh token 90 days, so it refreshes without asking you again. You never paste a password or a token into a chat. Revoke a client from Settings in the dashboard or through /oauth/revoke; it stops at its next refresh. See Authentication.
How do I see what the agents decided?
inspect is a read-only digest of what the outreach agents decided and never writes. campaign_status reads a campaign's progress and its history of status changes, and prospect_view reads one person's thread or timeline. The campaign page in the dashboard shows the same decisions.
HeyLead is not affiliated with LinkedIn. It reaches LinkedIn through Unipile, which is also not affiliated. LinkedIn's own rules are in the Terms.
Something not answered here? Write to [email protected] or open an issue on GitHub.
Related: Pricing · Docs · What is HeyLead? · Get started (text)