Connect ZenMode to Claude (MCP): run your outreach from a conversation
Ask Claude how your campaigns are doing, find a contact, read a conversation, add people to a campaign or tighten its targeting, all through ZenMode's MCP server.
Verified against the product on October 4, 2026 · Updated · Set up in /dashboard/api
What this integration is
ZenMode has a remote MCP server, so Claude can work with your ZenMode account directly: check how your campaigns are performing, look people up, read a LinkedIn conversation before you reply, add a list of people to the right campaign, or change who a campaign targets, all by asking.
It connects to Claude in two places:
- claude.ai (and the Claude desktop and mobile apps), as a custom connector. You approve the connection on a ZenMode page while signed in, and it is tied to one of your API keys.
- Claude Code, with one command that sends your ZenMode API key.
Server address: https://www.zen-mode.io/api/mcp
Claude only ever sees your own account. Every request is tied to the API key you connected with, and a contact or campaign id from anyone else's account comes back as "not found".
The safety rule
Claude cannot send a message or a connection request. There is no tool for it. The only way anyone gets contacted is by being added to one of your campaigns, and from there your campaign works through them exactly as it does today: inside your daily and weekly limits, your business hours and your pacing. Adding people to a campaign does not put anything on LinkedIn that day; it puts more people in the campaign's queue.
Every change Claude makes is checked the same way the dashboard checks it. People on your do-not-contact list, people your campaign excludes, and people already in your campaigns are refused and reported back, one by one.
What Claude can do
| Tool | What it does |
|---|---|
get_setup_status | Where your account is in setup: plan or free trial, whether the desktop app is installed and online, whether LinkedIn is signed in, your campaigns, and the one next step. Works on every plan. |
start_trial | Gives you the checkout link for the free 14-day trial (Practitioner and above; a card is needed and nothing is charged during the trial). Only for an account with no plan. |
get_desktop_app | The desktop app download and a one-line install command for Mac (Apple Silicon or Intel) and Windows, and how the LinkedIn login works. Works on every plan. |
get_account_summary | Your plan, whether the ZenMode app has checked in recently, campaigns by status, and the last 30 days of results. |
list_campaigns | Every campaign with its status, daily limit and results for a date window. |
get_campaign | One campaign in detail: type, business hours, targeting, how many people sit at each stage, and results. |
search_contacts | Find contacts by name, company, job title or LinkedIn URL, across campaigns or inside one. |
get_contact | One contact's profile, campaign, status, where they stand, and whether they are on your do-not-contact list. |
get_conversation | The LinkedIn conversation with one contact, oldest first. Read-only. |
get_campaign_targeting | Who a campaign is set to find: job titles, locations, industries, companies and any pasted search URL. |
get_safety_status | What your account's limits allow right now: whether it can take new work, what is blocking it and when that lifts, whether today's allowance is used up, today's figures when the ZenMode app has reported them, and what is left of Claude's own call limits. |
add_leads_to_campaign | Add up to 100 people to a campaign by LinkedIn profile URL, with a result for each person. |
remove_leads_from_campaign | Remove contacts from a campaign, exactly like Remove in the dashboard. |
set_contact_outreach_state | Pause or resume one contact, put someone on or take them off your do-not-contact list, or mark them not interested. |
update_campaign_targeting | Change a campaign's job titles, locations, industries, companies or search URL. |
validate_message | Checks a message before it is saved: ZenMode's banned phrases, the connection note length for your account, follow-up word limits and placeholders. Returns each problem and changes nothing. |
create_campaign | Creates a connect campaign with a name, targeting and daily limit. It is always created paused. |
set_campaign_messages | Writes a campaign's connection note and up to three follow-ups. The server checks every message again before it saves them. |
set_lead_messages | Sets the connection note and follow-ups for one contact instead of the campaign's, for steps not yet sent. Checked like a CSV upload: a note over your account's limit is refused, never shortened. |
launch_campaign | Starts a paused campaign in two calls. The first is a preflight that changes nothing: it checks the messages, the audience, your account's limits, the desktop app and LinkedIn, and returns a summary and a confirm token. Only after you say yes does Claude call it again with that token. |
resume_campaign | Runs the same preflight for a paused campaign and returns its summary and confirm token. It does not start anything. |
pause_campaign | Pauses a running campaign. |
set_up_desktop_app | Says what state the ZenMode desktop app is in for your account (never seen, out of date, gone quiet or connected) and how to open, update or install it. Changes nothing. |
A few details worth knowing:
-
Claude is told when your account cannot take more people. If the LinkedIn account behind a campaign is restricted, paused for the week, cooling down or switched off, adding people, resuming a contact, un-excluding someone or changing targeting is refused with the reason and when it lifts, and nothing changes. If the account has only used today's allowance, the change is accepted and starts when the limit resets, as in the dashboard. Stopping outreach (removing, pausing, excluding or marking someone not interested) is never refused. There is no way to tell Claude to override a limit.
-
Every change reports where you stand. Each change comes back with what your account's limits say at that moment and how much of Claude's own budget is left.
-
Retries do not repeat a change. Each changing tool takes an optional
idempotency_key. Repeat a call with the same key and the same details within 24 hours and nothing happens twice. -
Pause is reversible, Remove is not. Pausing stops outreach to one contact in that campaign until you resume them. Removing takes them out of the campaign for good, as it does in the dashboard.
-
Excluding is account-wide. It puts the person on your do-not-contact list, which stops them in every campaign and keeps them out of future ones until you take them off it.
-
Industries are checked, not guessed. If an industry name is not one LinkedIn can search for, the change is refused and the name is reported, so a campaign never searches wider than you asked.
-
Starting a campaign needs your yes. Claude can create a campaign (always paused), write its messages, pause it, and start it only through
launch_campaign's two calls, after showing you the summary and the messages. Starting a campaign contacts nobody at that moment: it runs later, inside your limits and business hours, and only while the ZenMode desktop app is open. Claude cannot complete or delete a campaign, or change a campaign's daily limit after creating it. Those stay in the dashboard.
How to set it up in claude.ai
You need an API key first: open MCP / API in the ZenMode dashboard and create one.
- In claude.ai, open Customize → Connectors, click +, then Add custom connector. On a Team or Enterprise plan, an owner adds it under Organization settings → Connectors → Add → Custom → Web.
- Name it ZenMode and paste the server address:
https://www.zen-mode.io/api/mcp. Leave the advanced OAuth settings empty. - Click Connect. A ZenMode page opens. Sign in if asked, choose what Claude may do (Read only is the default; Read and change also lets it add and remove people, pause or exclude contacts and change targeting), choose the API key to connect with, and click Allow. A key set to read only keeps the connection at read only, whatever you pick here.
- In a new chat, open the + menu, go to Connectors, and switch ZenMode on.
To disconnect, remove the connector in claude.ai, or revoke the API key you chose in the ZenMode dashboard. Revoking the key ends the connection straight away.
How to set it up in Claude Code
Create an API key under MCP / API. A new key is read only for Claude unless you tick Let AI assistants make changes when you create it. The setting applies to the connector only; it does not change what the key can do in the ZenMode API. Then run:
claude mcp add --transport http zenmode https://www.zen-mode.io/api/mcp --header "Authorization: Bearer YOUR_ZENMODE_API_KEY"
Replace YOUR_ZENMODE_API_KEY with your zm_… key. Run claude mcp list to check it connected,
then ask Claude Code anything below. Add --scope user to use it in every project.
Example prompts
- "How are my campaigns doing this month? Which one has the best reply rate?"
- "Show me everyone who replied to my SaaS Founders campaign this week."
- "Read my conversation with Priya Shah and draft a reply I can send myself."
- "Add these five LinkedIn profiles to my Heads of Sales campaign: …"
- "Pause outreach to anyone at Acme in my Q4 campaign."
- "Put Sam Lee on my do-not-contact list."
- "Change my Marketing Directors campaign to target London and Manchester, in Software Development."
- "Which of my campaigns have people waiting and haven't moved in a week?"
- "Can my account take more people today, and if not, when does that lift?"
Limits
Each API key can make 60 tool calls a minute. Changes are capped at 10 a minute and 300 a day, and at most 500 people a day can be added through Claude. A claude.ai connection shares the budget of the API key it was approved with. These are Claude's own call limits; your daily and weekly LinkedIn limits are separate and are applied by your campaigns, as always.
A read-only connection can look at everything above but cannot change anything: a change is refused and nothing is touched.
FAQ
Can Claude send LinkedIn messages or connection requests?
No. No tool does that. Claude can add people to a campaign, or start a campaign after you say yes, and your campaign reaches them later under your daily and weekly limits, business hours and pacing, the same as anyone you add in the dashboard.
Which plans include the ZenMode MCP server?
Practitioner and above, the same plans as the ZenMode API, and a free trial counts as the plan you are trialling. It is not included on Novice: a Novice account (or one with no plan) is told so with an upgrade link, and its API keys are kept, so they work again as soon as the account moves up.
What does read only mean?
Claude can read your campaigns, contacts and conversations and check your limits, but it cannot add or remove people, pause or exclude anyone, or change targeting. You choose it when you connect, and it is the default. A key set to read only can never give a connection more than read only.
Can Claude see my teammates' campaigns?
No. It sees only the account that owns the API key it connected with. Workspace members' campaigns are not reachable, even for a workspace owner.
How do I disconnect Claude?
Remove the connector in claude.ai or Claude Code, or revoke the API key in the ZenMode dashboard. Revoking the key disconnects every connection that uses it.
Does it need my LinkedIn password?
No. ZenMode never asks for LinkedIn credentials, and nothing in this connector touches them.