# Changelog

> Every HeyLead release with its notes, newest first, one address per release, and an RSS feed at /changelog.xml. The MCP server for LinkedIn outreach ships several times a week.

This is the Markdown twin of https://heylead.dev/changelog (the page, in text). Index for agents: https://heylead.dev/llms.txt

Rebuilt from the releases on GitHub at every deploy. [RSS feed](https://heylead.dev/changelog.xml) · [All releases on GitHub](https://github.com/D4umak/linkedin-outreach-mcp/releases)

Every release of the HeyLead client, newest first, with one address per release. The hosted service deploys on every merge and carries no version of its own; the client's version is the one your agent reports in `heylead://capabilities`.

## [v0.10.399](https://heylead.dev/changelog#v0.10.399) 25 September 2026

- Fix: a job-search ICP never targets the role the user wants; the title goes to every persona's exclude list (#1338)
- Fix: 'unsafe for your account' is not a safe claim
- Fix: a job-search ICP never targets the role the sender wants (#1338)
- New: the warning pattern fails the warning, not the pace sentence
- New: the session waits for the claim ack in the foreground; the tool's footer is expected
- Fix: a chat the seat can never reach ends the reply instead of being retried or read as success
- mark the backlog rows that are live
- plan index and the umbrella outcome #1294
- slice 4 plan, the case loop's progress as stages
- slice 3 plan, the dashboard widget
- slice 2 plan, the evaluator, the user_idea case and questions
- Fix: an archived campaign's replies leave the local list; handoffs and paused stay
- slice 1 plan, intake, store, routes and caps
- the idea widget design
- Fix: logs on a hosted workspace read the cloud's event log
- Fix: the release commit regenerates and stages the tool reference

[Release on GitHub](https://github.com/D4umak/linkedin-outreach-mcp/releases/tag/v0.10.399) · [PyPI](https://pypi.org/project/heylead/0.10.399/)

## [v0.10.398](https://heylead.dev/changelog#v0.10.398) 24 September 2026

- Fix: the follow-up step lists only the follow-ups the cap lets fire
- New: the model is told not to call the pace safe or unsafe
- Fix: Pro no longer claims a five-account cap the product does not have

[Release on GitHub](https://github.com/D4umak/linkedin-outreach-mcp/releases/tag/v0.10.398) · [PyPI](https://pypi.org/project/heylead/0.10.398/)

## [v0.10.397](https://heylead.dev/changelog#v0.10.397) 24 September 2026

- New: a campaign carries its goal: create_campaign, edit_campaign, generate_icp and icp(goal_match) take goal= (sell, job_search, hire, partner, buy, research); the ICP and the fit check follow it, and every listing names the six goals (#1153).
- New: a session without an api token records its receipts as issue comments
- Fix: the api's default base is the Cloud Run host
- Fix: its comments name no deploy that does not exist, and a bypass skips only the queue
- New: accept and reply steps quote the founder cohort; launch names the first-week checkpoint
- guard(goal): fail an ICP or fit call without goal=; incident note; changelog (#1153)
- Fix: the plan's warning check loads the guard by path; the tool reference names the plan action
- New: the skill works where gh is not installed
- one use-case source names the six goals in every listing (#1153)
- Fix: observe mode does not let you answer by hand
- New: the backend client sends goal and goal_key (#1153)
- New: create_campaign, edit_campaign, generate_icp and icp take goal (#1153)
- wip(plan): campaign plan twin, plan in create/launch, monitor read-only, inspect waiting
- New: local ICP and fit prompts follow the goal; sell unchanged (#1153)
- name the push by its function, not its path
- New: the goal table, twin of the api's; research is an intent (#1153)
- New: the report and profile viewers name people as links too
- New: every found person is a link with a reason
- implementation plans for the campaign goal, one per repo (#1153)
- Fix: keep setup_profile in the visible head of the instructions
- design for a campaign that carries its goal from the first field
- New: export the tool reference the site's docs render
- the dashboard's main is protected by its own ruleset, not github_protection.py
- every agent document states the pace as a feature
- New: the instructions state the pace and how to talk about it
- New: the queue serves heylead-dashboard; a blocked-main alert names its repository
- pace is a feature (Outcome 1)
- Fix: a timeout is proven by an event, not a stopwatch (client twin)
- what happens after launch — design for the new-user frictions of 24 Sep
- Fix: clawhub keeps its tool count next to the definition sentence
- New: every listing carries the facts from one module
- Fix: a stamp is checked between two clock readings (client twin)

[Release on GitHub](https://github.com/D4umak/linkedin-outreach-mcp/releases/tag/v0.10.397) · [PyPI](https://pypi.org/project/heylead/0.10.397/)

## [v0.10.396](https://heylead.dev/changelog#v0.10.396) 24 September 2026

- Fix: the client's size cap skips docs/, as the api's does
- Fix: the orchestrator reads the api from origin/main and hands roles the excerpts
- the curl line on one line; a second exit 2 is owed
- Fix: the skill names both repos' merge paths, keeps evidence links through the privacy gate, and handles every case_api exit code
- New: a PR that names a case carries its Case section
- New: the skill: evidence, JTBD, result, three rounds, prototype, then the fixing rules
- Fix: the deliverable fence is four backticks so inner fences survive; id role token; Dissent re-sends result
- Fix: roles answer in one parseable JSON block plus a deliverable; question ids; privacy sentence asserted verbatim
- New: four read-only roles that argue in the AskUserQuestion shape
- Fix: fold in review — network errors, non-JSON bodies, optional httpx
- New: the one script that reads, claims, moves and receipts a case
- case loop, four slices: board, skill and roles, cloud trigger, outcome read-back
- case loop design: one board, a ✅ trigger, four roles, prototype before code
- New: a park alert names the PR's branch, so its owner is known
- Fix: stamp the head and the merge commit with the merge-queue status (api twin)
- Fix: the mirror job exports the tag's tree with main's tooling
- Fix: a pending handoff keeps its reason after the prospect writes again
- New: the mirror job pushes over a deploy key; the public repo releases itself

[Release on GitHub](https://github.com/D4umak/linkedin-outreach-mcp/releases/tag/v0.10.396) · [PyPI](https://pypi.org/project/heylead/0.10.396/)

## [v0.10.395](https://heylead.dev/changelog#v0.10.395) 24 September 2026

- New: the polish pass reads back warm-up comments and inbound DMs
- New: the public repository follows every release on its own
- New: one open PR per product outcome, enforced by outcome_gate
- New: post parked PRs and merges that bypassed the queue to Slack
- Fix: who sent a message is is_sender first, our id only as a fallback
- Fix: hold only a live campaign, and only on campaign-level evidence
- the skipped-run fix is verified in production; the shape came from #461
- Fix: a skipped run cannot take the waiting slot; the group sits on the job
- Fix: signal_sent_at lives in timeutil, so async code may call it
- Fix: a signal keeps the send time, and its message is stored at it
- Fix: re-run cancelled CI at the run's path, with the token that may
- Fix: comment mining records the date of the post a comment sits under

[Release on GitHub](https://github.com/D4umak/linkedin-outreach-mcp/releases/tag/v0.10.395) · [PyPI](https://pypi.org/project/heylead/0.10.395/)

## [v0.10.389](https://heylead.dev/changelog#v0.10.389) 21 September 2026

22 tools by default, 47 with HEYLEAD_TOOLS=all. Reads and writes are separate tools. Mirrors heylead 0.10.389 on PyPI.

[Release on GitHub](https://github.com/D4umak/linkedin-outreach-mcp/releases/tag/v0.10.389) · [PyPI](https://pypi.org/project/heylead/0.10.389/)

## [v0.10.386](https://heylead.dev/changelog#v0.10.386) 20 September 2026

Matches `heylead==0.10.386` on PyPI. check_replies now says what it records and that it never sends; edit_campaign says empty fields keep their value and that it edits settings only.

[Release on GitHub](https://github.com/D4umak/linkedin-outreach-mcp/releases/tag/v0.10.386) · [PyPI](https://pypi.org/project/heylead/0.10.386/)

## [v0.10.383](https://heylead.dev/changelog#v0.10.383) 19 September 2026

Matches `heylead==0.10.383` on PyPI. The inbox tool no longer claims to be read-only while replying and approving a drafted reply send a LinkedIn message.

[Release on GitHub](https://github.com/D4umak/linkedin-outreach-mcp/releases/tag/v0.10.383) · [PyPI](https://pypi.org/project/heylead/0.10.383/)

## [v0.10.382](https://heylead.dev/changelog#v0.10.382) 19 September 2026

Matches `heylead==0.10.382` on PyPI. The edit_campaign description now says the default sending window (weekdays 08:00-22:00) is in your own timezone, and London only when your timezone is unknown.

[Release on GitHub](https://github.com/D4umak/linkedin-outreach-mcp/releases/tag/v0.10.382) · [PyPI](https://pypi.org/project/heylead/0.10.382/)

## [v0.10.381](https://heylead.dev/changelog#v0.10.381) 19 September 2026

Pricing in the docs matches what Stripe charges ($29 per connected LinkedIn account); the docs no longer advertise voice memos. Same code as heylead 0.10.381 on PyPI.

[Release on GitHub](https://github.com/D4umak/linkedin-outreach-mcp/releases/tag/v0.10.381) · [PyPI](https://pypi.org/project/heylead/0.10.381/)

## [v0.10.380](https://heylead.dev/changelog#v0.10.380) 19 September 2026

Matches `heylead==0.10.380` on PyPI. Install with `uvx heylead`. Business hours are on by default (weekdays 08:00-22:00 in your own timezone), and a declined reply now gets a short polite close instead of an opt-out.

[Release on GitHub](https://github.com/D4umak/linkedin-outreach-mcp/releases/tag/v0.10.380) · [PyPI](https://pypi.org/project/heylead/0.10.380/)

## [v0.10.377](https://heylead.dev/changelog#v0.10.377) 18 September 2026

Matches `heylead==0.10.377` on PyPI. Install with `uvx heylead`. Adds a Dockerfile that runs the server over stdio.

[Release on GitHub](https://github.com/D4umak/linkedin-outreach-mcp/releases/tag/v0.10.377) · [PyPI](https://pypi.org/project/heylead/0.10.377/)
