Quickstart
One line, one sign-in, then one sentence. The hosted connection needs no Python, uv or API key, and nothing is sent to anyone during setup.
1. Connect the server
Paste this into Claude Code or your AI chat and it follows the setup for your client:
Set up HeyLead using https://heylead.dev/llms.txt
Or do it by hand.
Claude Code, as a plugin
The plugin connects the same hosted server and adds skills that walk your agent through the workflow: set up, start a campaign for a goal, approve waiting messages, answer replies, review the week, pause or stop, and add a list of people.
/plugin marketplace add D4umak/linkedin-outreach-mcp
/plugin install heylead@heylead
Open /mcp, select heylead and sign in in the browser. The plugin's files are in plugins/heylead.
Claude Code, terminal
claude mcp add --transport http --scope user heylead https://heylead.dev/mcp
Open /mcp, select heylead and sign in in the browser. If the server is not listed, start a new session and open /mcp again.
Claude Code desktop, without the CLI
If claude is not on PATH, paste the one-line setup into the Code tab. Your agent adds the remote server to your Claude Code configuration, keeping your existing settings. Start a new session, open /mcp and sign in.
Claude Desktop chat, Cowork and claude.ai
Works in claude.ai as a custom connector. The server URL:
https://heylead.dev/mcp
- Open Customize → Connectors, click + Add and choose Add custom connector.
- Name it HeyLead, paste
https://heylead.dev/mcpas the MCP server URL and click Continue. On the dialog's second screen, leave Sign in now selected and finish it. - Sign in with Google, then click Connect on HeyLead's page.
- In a chat, open + → Connectors and switch HeyLead on.
ChatGPT
Works in ChatGPT: add HeyLead as a custom MCP app.
- On chatgpt.com, open Plugins → Add → Create MCP App.
- Name it HeyLead, set the server URL to
https://heylead.dev/mcpand choose OAuth for authentication. - Tick "I understand and want to continue" and click Create.
- Click Continue to HeyLead, sign in with Google and click Connect on HeyLead's consent page.
- Start a new chat with the HeyLead plugin attached and ask: "Show my HeyLead status."
Tested on ChatGPT Pro on 29 September 2026. Whether Create MCP App is offered depends on your ChatGPT plan and settings.
Cursor
Merge this into .cursor/mcp.json (or ~/.cursor/mcp.json for every project), keeping your other servers, then enable the server in Cursor's MCP settings and sign in:
{"mcpServers": {"heylead": {"url": "https://heylead.dev/mcp"}}}
VS Code
Merge this into .vscode/mcp.json in the project (the key is servers, not mcpServers), then start the server from the MCP panel and sign in:
{"servers": {"heylead": {"type": "http", "url": "https://heylead.dev/mcp"}}}
Any other MCP client
Remote Streamable HTTP at https://heylead.dev/mcp with OAuth browser sign-in. Follow that client's remote-server format; do not reuse a stdio command entry. Discovery: oauth-protected-resource and oauth-authorization-server. A client that cannot do remote HTTP with OAuth can use the dashboard or the local client.
2. Sign in and connect LinkedIn
- Sign in with Google when your client opens HeyLead in the browser. The consent page asks for two scopes: reading your workspace, and writing and sending as you. See Authentication.
- Connect LinkedIn in the dashboard. The seat connects through Unipile; your LinkedIn password never touches HeyLead.
3. Verify
Ask your AI: "Show my HeyLead status." It should call show_status and report your workspace, even if it is empty. A saved configuration is not a connection; a tool call that answers is. Then accounts shows whether LinkedIn is connected.
4. The first campaign
Describe what you sell and who you want to reach. generate_icp returns two to four buyer personas grounded in your website. create_campaign finds matching people and saves a draft; nothing is sent. Read the draft. Outreach starts only with campaign(action="launch").
A new workspace sends opening messages, follow-ups and answers to replies without review. Review is one switch away in Settings → Sending, or scheduler(action="approval_mode", mode="require_approval"); then inspect(action="waiting") lists them, and the text you approve is the text that is sent. This is the same on every plan. Invitations are not held. campaign(action="emergency_stop") pauses everything.
Sends run from the cloud with your laptop closed, Monday to Friday 08:00 to 22:00 in your time zone by default, inside the invitation ceiling of your LinkedIn plan. See pricing for the ceilings in numbers.