Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

HeyLead — AI agent for LinkedIn outreach

PYPI · HEYLEAD · 2 COMPONENTS

AI agent for LinkedIn outreach: finds the right people, writes in your voice, follows up, replies.

−4 this week 63 Trust /100

Last scanned (4 hours ago)

Scores higher than 59% of PyPI servers

Category CRM and Sales

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security50
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 3 of 43 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency48
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 0 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability72
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 10695 tokens (~445/item across 24 items; 22 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management73
  • Stability observed for 22 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 0% of tool parameters carry a description.Fail
  • Structured output schemas are declared (77% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 24 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 −4
    • Stability: pass → 0.73 functional
  • 4 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
    • Package version: 0.10.490 → 0.10.491 functional
  • 3 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 2 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
    • Package version: 0.10.487 → 0.10.490 functional
    • Package version: 0.10.487 → 0.10.489 functional
    • Package version: 0.10.487 → 0.10.488 functional
  • 1 Nov 26 +15
    • Stability: pass → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Malware scan: unverified → pass ▲ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 100 → unverified ▼ functional
    • Package version: 0.10.486 → 0.10.487 functional
  • 31 Oct 26 0
    • Malware scan: unverified → pass ▲ security
    • Package version: 0.10.485 → 0.10.486 functional
  • 30 Oct 26 0
    • Malware scan: unverified → pass ▲ security
    • Package version: 0.10.482 → 0.10.485 functional
    • Package version: 0.10.482 → 0.10.484 functional
    • Package version: 0.10.482 → 0.10.483 functional
  • 29 Oct 26 0
    • Package version: 0.10.481 → 0.10.482 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed pypi/heylead@0.10.491

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi
Reason No attestation published

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 43 packages
Packages resolved 43
Stale 3
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 22 exposed · ~7,389 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
account ~93

Switch the active LinkedIn account, unlink it, or connect an email account. Which account is active decides who outreach is sent as. Listing them is the accounts tool. Args: action: "switch", "switch_to", "unlink", "connect_email" or "refresh_tier". account_id: The account id (switch_to).

NameTypeReqDescription
account_idstring––
actionstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

accounts ~50

List the LinkedIn accounts connected to this HeyLead. Changes nothing. Args: action: "list" (switching, unlinking and connecting email are the account tool).

NameTypeReqDescription
actionstring––
NameTypeReqDescription
resultstringyes–

No examples provided.

analytics ~180

Campaign analytics — reports, comparisons, and exports. Hosted accounts get a dashboard link and a snapshot card; relay the link, because some clients show the image only to the model. Args: action: What to do: "report" — Detailed analytics with outcomes, conversion rates, stale leads "compare" — Compare 2+ campaigns side by side "export" — Export campaign results as table, CSV, or JSON campaign_id: Which campaign. Uses active if empty. campaign_ids: Comma-separated IDs (for 'compare'). Compares all if empty. format: Output format for 'export': 'table', 'csv', or 'json'.

NameTypeReqDescription
actionstring––
campaign_idstring––
campaign_idsstring––
formatstring––

No output schema declared.

No examples provided.

answer_inbox ~118

Reply in a LinkedIn conversation, or approve or discard a drafted reply. "reply" and "approve_draft" SEND a LinkedIn message and cannot be undone. Reading the inbox is the inbox tool. Args: action: "reply", "approve_draft" or "discard_draft". chat_id: Which conversation, or which draft. text: What to send, or an edited version of the draft.

NameTypeReqDescription
actionstringyes–
chat_idstring––
textstring––
NameTypeReqDescription
resultstringyes–

No examples provided.

book_meeting ~176

Book a meeting on your Google Calendar and invite a prospect. Use this when a reply agrees to a call. Creates the event on the calendar you connected, attaches a Google Meet link, and emails the attendee an invitation. Args: attendee_email: Who to invite — the prospect who replied. start: When it starts, ISO 8601, e.g. 2026-09-01T10:00:00. duration_minutes: How long the meeting runs. Defaults to 30. summary: Event title. Defaults to naming the attendee. description: Optional agenda or notes included in the invitation.

NameTypeReqDescription
attendee_emailstringyes–
descriptionstring––
duration_minutesinteger––
startstringyes–
summarystring––
NameTypeReqDescription
resultstringyes–

No examples provided.

campaign ~134

Launch, pause, resume, archive, delete or emergency-stop a campaign. Every action here changes what happens next. Watching one run, or reading its history, is campaign_status. Args: action: "launch", "pause", "resume", "archive", "delete", "emergency_stop", "retry_failed", "repair_queue" or "clear_coordinator_hold". campaign_id: Which campaign. Uses the active one if empty. confirm: Required by the actions that destroy work.

NameTypeReqDescription
actionstringyes–
campaign_idstring––
confirmboolean––

No output schema declared.

No examples provided.

campaign_status ~116

Watch a campaign run, show its plan, or read its status history. Changes nothing. Args: action: "monitor" (live progress; a draft is started with campaign(action='launch')), "plan" (what happens after launch, step by step: finding, warm-up, invitations, opening message, follow-ups, replies, leads) or "status_history". campaign_id: Which campaign. Uses the active one if empty.

NameTypeReqDescription
actionstring––
campaign_idstring––

No output schema declared.

No examples provided.

check_replies ~120

Read new LinkedIn replies and record what they mean. Fetches new messages, classifies each reply (positive, negative, question) and lists the people worth answering first. It sends nothing, but it does write: it marks an invitation accepted once the person answers or connects, moves an outreach to replied, stores the messages, and sets opted-out when someone asks not to be contacted, which stops all future outreach to them. It is the only path that notices an accepted invitation, so follow-ups depend on it having run.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

contacts ~395

Search, browse and read your contacts, and export them. Changes nothing. Tagging, noting, re-staging and linking are update_contact. Args: action: "list", "search", "view", "stats", "export", "linkedin_search" or "my_connections". query: Search text for "search", "linkedin_search" and "my_connections". For "linkedin_search" the query is passed to LinkedIn as KEYWORDS, matched literally — a company name, a job title, a person's name, or a combination such as 'Acme Corp CTO' or 'Jane Doe'. A natural-language question ('who is the CTO of Acme?') is sent through unchanged and usually comes back empty, so prefer keywords. Nothing is filtered out locally. An empty result and a failed search are reported in different words, so a "no matches" line means LinkedIn really returned nobody rather than "the search broke". Results are capped at 25 per call because every result costs a profile fetch and a LinkedIn read. contact_id: Which contact (view). lifecycle_stage: Filter by stage. min_fit_score: Only those scoring at least this. limit: How many. format: "table", "csv" or "json" (export). campaign_id: Filter by campaign. connected_since: Only those connected on or after this date. connected_before: Only those connected before this date.

NameTypeReqDescription
actionstring––
campaign_idstring––
connected_beforestring––
connected_sincestring––
contact_idstring––
formatstring––
lifecycle_stagestring––
limitinteger––
min_fit_scorenumber––
querystring––
NameTypeReqDescription
resultstringyes–

No examples provided.

create_campaign ~1,393

Create a LinkedIn outreach campaign from a natural language description. Finds people on LinkedIn who match the description and saves a draft; nothing is sent until campaign(action='launch'). Use it for sales prospecting, recruiting and candidate sourcing, research and user-interview recruitment, job-search networking, investor and partner outreach, vendor scouting and event invitations. Reaching people you can already name — an article author, a warm intro, a speaker, one founder a customer mentioned — is the `people` argument: pass their profile URLs and the campaign is seeded from exactly them, with no LinkedIn search. Everything else is unchanged: draft until launch, rate limits, sending window, opt-outs. Describe who you need to reach and HeyLead finds them on LinkedIn: customers (lead generation, B2B prospecting, cold outreach), candidates (recruiting and sourcing), hiring managers and referrals (job search), investors and partners, vendors, and user-interview or research participants. On first campaign, project_brief is asked explicitly, in the goal's words (see project_brief below) — a homepage alone is not enough. Args: target_description: Who to target (e.g., "CTOs at fintech startups", "freelance UX designers in London", "yoga studio owners in California") campaign_name: Optional name for the campaign. icp_id: Optional ID of a saved ICP from generate_icp. If provided, uses the saved ICP's enriched LinkedIn codes for precise targeting instead of generating a new one. company_context: Optional. Your website URL or 1-2 sentences about your product/company. Copied into project_brief when project_brief is omitted. project_brief: Optional. Full project paste the model sees, in the goal's words. sell: what you offer and who it is for. job_search: the role, the kind of company, what you bring. hire: the role, who fits it, what it offers. partner: what you want from a partner, what yo…

NameTypeReqDescription
campaign_namestring––
campaign_typestring––
company_contextstring––
company_urlstring––
connections_onlystring––
exclude_connectionsstring––
forceboolean––
goalstring––
icp_idstring––
message_languagestring––
modestring––
peoplestring––
project_briefstring––
target_descriptionstringyes–
voice_modestring––
NameTypeReqDescription
resultstringyes–

No examples provided.

edit_campaign ~2,289

Change one running or drafted campaign's settings. Pass only what you want to change; every field left empty keeps its current value. Use it to rename a campaign, give it a booking link, feed it context that makes the messages more specific (offerings, case studies, project brief), say who it is for (campaign_intent, campaign_type), or set the limits it sends under (volume, caps, follow-ups, business hours). It edits settings only: it sends nothing and adds no prospects. A change applies to the messages written from now on, not to ones already sent. Use create_campaign for a new campaign, and campaign(action=...) to launch, pause or stop one. Args: campaign_id: Which campaign to edit. Edits the first active campaign if empty. name: New campaign name. Leave empty to keep current name. mode: Only "autopilot" supported (copilot mode was removed). Whether messages wait for a person is the workspace's approval mode: scheduler(action="approval_mode"). booking_link_page_ok: Explicitly keep a website page as the booking link. booking_link: Calendar/booking URL (e.g., "https://cal.com/you/15min"). Used in reply_to_prospect() for positive replies to suggest meetings. offerings: What you offer (products, services, value props). Used in follow-up messages. case_studies: Brief case studies or success stories. Used for social proof in messages. social_proofs: Social proof (logos, metrics, testimonials). Used in follow-up messages. campaign_preferences: Custom messaging preferences (tone, topics to avoid, etc.). campaign_intent: Message stance: "sell", "buy", "partner", "recruit" or "research". campaign_type: Prompt family: "outbound" (default) or "job_search". job_search replaces the intent-specific invitation note and first DM with ones that may name the company and the role, use one credible proof point at most and never list a CV. InMail is not routed by this switch, and cam…

NameTypeReqDescription
active_daysstring––
booking_linkstring––
booking_link_page_okboolean––
campaign_idstring––
campaign_intentstring––
campaign_preferencesstring––
campaign_typestring––
case_studiesstring––
competitor_companiesstring––
connections_onlystring––
enable_auto_repliesstring––
enable_coordinator_agentstring––
enable_discoverystring––
enable_endorsementsstring––
enable_engagementsstring––
enable_followsstring––
enable_followupsstring––
enable_hot_lead_closerstring––
enable_invitationsstring––
enable_profile_viewsstring––
enable_reply_agentstring––
enable_strategist_replan_agentstring––
engagement_modestring––
exclude_competitorsstring––
exclude_connectionsstring––
followup_delay_daysstring––
go_livestring––
goalstring––
inmail_fallbackstring––
inmail_fallback_daysinteger––
inmail_first_touchstring––
invite_notestring––
max_followupsinteger––
message_languagestring––
modestring––
must_confirmstring––
namestring––
offer_askstring––
offer_confirmstring––
offer_howstring––
offer_outcomestring––
offer_proofstring––
offeringsstring––
productstring––
project_briefstring––
send_in_business_hoursstring––
social_proofsstring––
stale_invite_daysinteger––
voice_humanizestring––
voice_modestring––
voice_noisestring––
volumestring––
weekly_meeting_targetinteger––
withdraw_stale_invitesstring––
NameTypeReqDescription
resultstringyes–

No examples provided.

generate_icp ~449

Generate a rich Ideal Customer Profile with buyer personas. The same profile describes whoever the user needs to reach: buyers, candidates to recruit, research or user-interview participants, hiring managers for a job search, investors or partners. Pass goal= so the profile is of the right people. Creates 2-4 ICP personas with pain points, fears, barriers, LinkedIn search parameters, and confidence scores. The result is saved and can be reused with create_campaign(icp_id=...). Supports target audience analysis, customer segmentation, buyer persona creation, ideal customer profiling, and B2B market research. Args: target_description: Who to target (e.g., "CTOs at fintech startups", "freelance UX designers in London", "yoga studio owners in California") company_context: Optional URL or text about your company/product. Providing this makes the ICP more precise and evidence-backed. focus_query: Optional focus (e.g., "enterprise segment only", "focus on pain points around compliance") decision_makers_only: Keep every persona's seniority to people who hold budget authority — owner, cxo, vp, director. Default True. Pass False only when the target really is individual contributors (developers, designers, analysts); the ICP then keeps whatever levels the description implies. Applies only to sell, partner and buy; managers hire, so a job search keeps them. goal: What the campaign is for, which decides whose profile this is: "sell" (customers, the default), "job_search" (the people who hire for or refer into the role), "hire" (candidates), "partner" (who can sign a partnership or invest), "buy" (vendors), "research" (participants). Always pass it; a job search with goal="sell" produces peers, not hiring managers.

NameTypeReqDescription
company_contextstring––
decision_makers_onlyboolean––
focus_querystring––
goalstring––
target_descriptionstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

inbox ~124

Read any conversation in your LinkedIn inbox, and the drafted replies. Replying, approving a draft and discarding one are answer_inbox. Args: action: "list", "read", "open_file" (save the files a person sent, to read them) or "comment_drafts". chat_id: Which conversation. name: Find the conversation by the person's name. limit: How many to show.

NameTypeReqDescription
actionstring––
chat_idstring––
limitinteger––
namestring––
NameTypeReqDescription
resultstringyes–

No examples provided.

prospect ~351

Skip a prospect, close one with an outcome, or dismiss it. Someone who is not a fit is skipped, not closed: skip leaves them out of this campaign and records nothing else. Close records a result and needs an outcome; won and lost are for people HeyLead has written to. Closing with outcome="opt_out" stops all future contact with that person. Reading a prospect is prospect_view. Args: action: "skip", "close" or "dismiss". outreach_id: Which outreach. campaign_id: Which campaign. Uses the active one if empty. outcome: "won", "lost" or "opt_out". Required for close; there is no default. reason: Why, recorded with the outcome. meeting_link: The booked meeting, recorded with a won outcome. confirm: Required where the action cannot be undone. reason_code: Why, for skip and close: "not_a_fit", "negative_reply", "asked_to_stop", "handled_elsewhere" or "other". reason_note: A free note alongside the code. deal_value: What the won deal is worth (close with outcome="won"). deal_currency: Three-letter code, e.g. USD. Defaults to the last deal's.

NameTypeReqDescription
actionstringyes–
campaign_idstring––
confirmboolean––
deal_currencystring––
deal_value–––
meeting_linkstring––
outcomestring––
outreach_idstring––
reasonstring––
reason_codestring––
reason_notestring––
NameTypeReqDescription
resultstringyes–

No examples provided.

prospect_view ~79

Read the message thread with one prospect, or their timeline. Changes nothing. Args: action: "conversation" or "timeline". outreach_id: Which outreach. campaign_id: Which campaign. Uses the active one if empty.

NameTypeReqDescription
actionstring––
campaign_idstring––
outreach_idstring––
NameTypeReqDescription
resultstringyes–

No examples provided.

scheduler ~179

Turn the autonomous scheduler on or off, or change how it runs. Off means nothing sends until it is on again. Reading its state, logs, activity or diagnostics is scheduler_status. Args: action: "toggle", "observe", "always_on", "backfill_cloud", "send_from" or "report". enabled: True to enable, False to disable (toggle, report). cloud: Act on the hosted scheduler rather than this machine's. host: "cloud" (send_from); a hosted account never sends from here. hours: The reporting interval (report). campaign_id: Which campaign (report).

NameTypeReqDescription
actionstringyes–
campaign_idstring––
cloudboolean––
enabledboolean––
hoststring––
hours–––
NameTypeReqDescription
resultstringyes–

No examples provided.

scheduler_status ~136

Read the scheduler: status, logs, activity, diagnostics or the daily report. Args: action: "status", "logs", "activity" or "diagnostics". The daily report is the scheduler tool: it switches reporting on and off. cloud: Read the hosted scheduler rather than this machine's. hours: Lookback window in hours. event_type: Filter the log by event type. campaign_id: Filter by campaign.

NameTypeReqDescription
actionstring––
campaign_idstring––
cloudboolean––
event_typestring––
hours–––
NameTypeReqDescription
resultstringyes–

No examples provided.

send_message ~327

Send follow-ups, replies, or InMail to prospects. Args: action: What to do: "followup" — Send a follow-up DM after connection accepted "reply" — Reply to a prospect who has messaged you "delete" — Delete a recently sent message (within 60 min on LinkedIn) "inmail" — Send an InMail to a NON-connection. Preconditions (each fails closed with no send): prospect has a provider_id; they are NOT a 1st-degree connection (use followup/DM for those); no InMail already sent on this outreach; InMail credits remaining > 0. A pending invitation to the same person is allowed — that is the escalation path. Requires outreach_id. campaign_id: Which campaign to send from. Uses active if empty. outreach_id: Specific outreach to target. Required for inmail. format: 'text'. For followup/reply. text: For followup/reply on a hosted account: the message to send, required; the cloud sends it as is in the outreach's LinkedIn chat (the same route as answer_inbox reply). Without a backend the message is generated. For delete: optionally pass a Unipile message_id directly.

NameTypeReqDescription
actionstring––
campaign_idstring––
formatstring––
outreach_idstring––
textstring––
NameTypeReqDescription
resultstringyes–

No examples provided.

setup_profile ~278

Set up HeyLead by connecting your LinkedIn account and analyzing your writing style. REQUIRED for first-time users — must be called before any other tool. This analyzes your LinkedIn profile, posts, and writing style to create a "voice signature" so every outreach message sounds like YOU, not a bot. Handles LinkedIn automation setup, SDR onboarding, account connection, and voice analysis for personalized outreach. First-time setup: sign in at https://heylead.dev/auth/login-url, click 'Connect' on the LinkedIn row, copy the setup message ('Copy' under 'Get Started'), then call this tool with the eyJ... token from it as backend_jwt. No API keys needed on the hosted backend. Args: llm_api_key: Optional — only if you want to use your own AI key instead of the backend's. llm_provider: Which AI to use if providing your own key: "gemini", "claude", or "openai". backend_url: HeyLead Backend API URL. Leave empty — defaults to production server. backend_jwt: Your authentication token from HeyLead.

NameTypeReqDescription
backend_jwtstring––
backend_urlstring––
llm_api_keystring––
llm_providerstring––
NameTypeReqDescription
resultstringyes–

No examples provided.

show_status ~110

Show your outreach dashboard — campaigns, stats, hot leads, account health. The chat is the front door to your dashboard. View pipeline metrics, prospect funnel, engagement rates, and campaign performance. Ask "how's my outreach?" anytime. Hosted accounts get a dashboard link and a snapshot card; relay the link, because some clients show the image only to the model. Args: campaign_id: Show stats for a specific campaign. Shows all if empty.

NameTypeReqDescription
campaign_idstring––

No output schema declared.

No examples provided.

suggest_next_action ~108

Suggest the best next action for your outreach. Hosted accounts get a dashboard link and a snapshot card; relay the link, because some clients show the image only to the model. Analyzes all active campaigns and recommends what to do next, prioritized by impact: hot leads first, then pending approvals, follow-ups, engagement warm-ups, and new invitations. Args: campaign_id: Focus on a specific campaign. Analyzes all active if empty.

NameTypeReqDescription
campaign_idstring––

No output schema declared.

No examples provided.

update_contact ~184

Change one contact: tag it, note it, move its stage, or link it to a campaign. Reading and searching contacts is the contacts tool. Args: action: "tag", "note", "stage", "link" or "enrich". contact_id: Which contact. lifecycle_stage: The stage to move it to. tag: The tag to add. note: The note to record. campaign_id: Which campaign (link). match: How to match when linking. dry_run: Show what would change without changing it.

NameTypeReqDescription
actionstringyes–
campaign_idstring––
contact_idstring––
dry_runboolean––
lifecycle_stagestring––
matchstring––
notestring––
tagstring––
NameTypeReqDescription
resultstringyes–

No examples provided.

Install

How do I install the HeyLead — AI agent for LinkedIn outreach MCP server?

HeyLead — AI agent for LinkedIn outreach runs locally as a PyPI package, launched with uvx heylead. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · heylead

# add to Claude Code
claude mcp add d4umak-heylead -- uvx heylead
Common questions

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

HeyLead — AI agent for LinkedIn outreach is an MCP server listed in the public MCP registry as io.github.D4umak/heylead. AI agent for LinkedIn outreach: finds the right people, writes in your voice, follows up, replies. This page covers its PyPI package (heylead).

Is the HeyLead — AI agent for LinkedIn outreach MCP server safe to use?

HeyLead — AI agent for LinkedIn outreach scores 63 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the HeyLead — AI agent for LinkedIn outreach MCP server expose?

HeyLead — AI agent for LinkedIn outreach exposes 22 tools: setup_profile, generate_icp, create_campaign, book_meeting, check_replies, and 17 more. Their descriptions and schemas cost roughly 7,389 tokens of context every time the server is loaded.

Is the HeyLead — AI agent for LinkedIn outreach MCP server still maintained?

HeyLead — AI agent for LinkedIn outreach is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

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

HeyLead — AI agent for LinkedIn outreach declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.