Documentation / Reference

MCP Tools: Outreach

Email campaigns, outreach sync, and campaign analytics.

Technical reference, generated automatically from the live tool registry.

Outreach

Email campaigns, outreach sync, and campaign analytics

list_email_campaigns

read-only

List all Email Outreach email campaigns.

Required integration: instantly

No parameters.

get_email_campaign_analytics

read-only

Get analytics for an Email Outreach email campaign (sent, opened, replied, bounced).

Required integration: instantly

ParameterTypeRequiredDescription
campaign_idstringyesEmail Outreach campaign ID

pause_email_campaign

action

Pause an active Email Outreach email campaign.

Required integration: instantly

ParameterTypeRequiredDescription
campaign_idstringyesEmail Outreach campaign ID

resume_email_campaign

action

Resume a paused Email Outreach email campaign.

Required integration: instantly

ParameterTypeRequiredDescription
campaign_idstringyesEmail Outreach campaign ID

update_email_lead_status

destructive

Update a lead status in Email Outreach (interested, not_interested, meeting_booked, closed).

Required integration: instantly

ParameterTypeRequiredDescription
emailstringyesLead email
campaign_idstringyesCampaign ID
statusenum(interested \not_interested \meeting_booked \

get_lemlist_campaign_stats

read-only

Get stats for an Email Outreach email campaign (sent, opened, replied, bounced, unsubscribed).

Required integration: lemlist

ParameterTypeRequiredDescription
campaign_idstringyesEmail Outreach campaign ID

list_linkedin_campaigns

read-only

List all LinkedIn Outreach LinkedIn campaigns.

Required integration: heyreach

No parameters.

get_linkedin_campaign

read-only

Get full LinkedIn Outreach campaign details including sequence steps and linked accounts.

Required integration: heyreach

ParameterTypeRequiredDescription
campaign_idstringyesLinkedIn Outreach campaign ID

get_linkedin_campaign_stats

read-only

Get stats for a LinkedIn Outreach LinkedIn campaign (connections sent/accepted, messages, replies).

Required integration: heyreach

ParameterTypeRequiredDescription
campaign_idstringyesLinkedIn Outreach campaign ID

get_linkedin_campaign_leads

read-only

Get leads from a LinkedIn Outreach campaign with their status.

Required integration: heyreach

ParameterTypeRequiredDescription
campaign_idstringyesLinkedIn Outreach campaign ID
offsetnumberno
limitnumberno

list_heyreach_lists

read-only

List all LinkedIn Outreach lead lists.

Required integration: heyreach

No parameters.

check_heyreach_connection

read-only

Check if LinkedIn Outreach API is configured and accessible.

Required integration: heyreach

No parameters.

pause_linkedin_campaign

action

Pause an active LinkedIn Outreach LinkedIn campaign.

Required integration: heyreach

ParameterTypeRequiredDescription
campaign_idstringyesLinkedIn Outreach campaign ID

resume_linkedin_campaign

action

Resume a paused LinkedIn Outreach LinkedIn campaign.

Required integration: heyreach

ParameterTypeRequiredDescription
campaign_idstringyesLinkedIn Outreach campaign ID

get_linkedin_accounts

read-only

List connected LinkedIn sender accounts in LinkedIn Outreach.

Required integration: heyreach

No parameters.

send_linkedin_message

action

Send a LinkedIn message to a lead via LinkedIn Outreach.

Required integration: heyreach

ParameterTypeRequiredDescription
conversation_idstringyesLinkedIn Outreach conversation ID
linkedin_account_idnumberyesSender LinkedIn account ID
messagestringyesMessage text

add_leads_to_heyreach_campaign

action

Add leads to a LinkedIn Outreach LinkedIn campaign. Each lead needs a LinkedIn URL (leads without one are counted as failed). linkedin_account_id optionally pins which LinkedIn Outreach sender the campaign uses for these leads. personalization_variables is a map of lead_id → { key: value } merged into each lead’s customVariables.

Required integration: heyreach

ParameterTypeRequiredDescription
campaign_idstringyesLinkedIn Outreach campaign ID
lead_idsstring[]yesLead IDs from the leads table — their linkedin_url / first_name / last_name / email are read to build the LinkedIn Outreach payload
linkedin_account_idstringno
personalization_variablesobjectno

stop_heyreach_lead

action

Stop a single lead in a LinkedIn Outreach LinkedIn campaign (the lead is removed from further steps). Pass the lead’s LinkedIn profile URL. Use this when the lead replied on another channel or asked to stop. LinkedIn Outreach-only; for LinkedIn/WhatsApp LinkedIn sequences use pause_linkedin_lead.

Required integration: heyreach

ParameterTypeRequiredDescription
campaign_idstringyesLinkedIn Outreach campaign ID
linkedin_urlstringyesLinkedIn profile URL of the lead to stop

get_email_campaign_details

read-only

Get full Email Outreach campaign details with email steps, subjects, bodies, delays.

Required integration: instantly

ParameterTypeRequiredDescription
campaign_idstringyesEmail Outreach campaign ID

list_email_accounts

read-only

List the workspace’s email sending accounts in Email Outreach.

Required integration: instantly

No parameters.

remove_email_lead

destructive

Remove leads from an Email Outreach campaign by email.

Required integration: instantly

ParameterTypeRequiredDescription
campaign_idstringyes
emailsstring[]yes

send_whatsapp_message

action

Send an APPROVED WhatsApp message. Only use after user confirms the draft from draft_reply tool.

Required integration: unipile:whatsapp

ParameterTypeRequiredDescription
phone_numberstringyesPhone number in E.164 format (e.g. +491234567890)
messagestringyesThe approved message text to send

get_whatsapp_messages

read-only

Get recent WhatsApp messages from a conversation.

Required integration: unipile:whatsapp

ParameterTypeRequiredDescription
chat_idstringyesWhatsApp chat ID
limitnumberno

get_email_campaign_detailed_stats

read-only

Get detailed stats for all email campaigns including per-campaign sent, opened, replied, bounced counts.

Required integration: instantly

No parameters.

get_linkedin_campaign_detailed_stats

read-only

Get detailed stats for all LinkedIn campaigns including per-campaign connections, messages, replies.

Required integration: heyreach

No parameters.

list_whatsapp_enrollments

read-only

List WhatsApp sequence enrollments for the workspace. Each row represents a lead enrolled in a 3-step WhatsApp sequence. Filter by status or playbook_id.

ParameterTypeRequiredDescription
statusenum(active \paused \completed \
playbook_idstringno
limitnumberno

pause_whatsapp_enrollment

action

Pause a single WhatsApp enrollment for a lead (stops further steps). Also pauses any other enrollments matching the same phone number. Use resume_whatsapp_enrollment to continue.

ParameterTypeRequiredDescription
lead_idstringyesLead ID whose WhatsApp sequence to pause

resume_whatsapp_enrollment

action

Resume a paused WhatsApp enrollment. Recomputes next_step_at from the current step delay.

ParameterTypeRequiredDescription
lead_idstringyesLead ID whose WhatsApp sequence to resume

pause_whatsapp_by_playbook

action

Pause ALL active WhatsApp enrollments that belong to leads in the given playbook. Returns the count paused.

ParameterTypeRequiredDescription
playbook_idstringyesPlaybook ID — all active enrollments for leads under it will be paused

resume_whatsapp_by_playbook

action

Resume ALL paused WhatsApp enrollments for leads under the given playbook. Completed-past-last-step enrollments are marked completed instead.

ParameterTypeRequiredDescription
playbook_idstringyesPlaybook ID

bulk_enroll_whatsapp

action

Enroll multiple leads into a WhatsApp 3-step sequence. Each lead needs a phone number. If whatsapp_account_id is omitted, the playbook-scoped sender is auto-selected (playbook_id required in that case). Idempotent — leads already enrolled (by lead_id OR phone) are silently skipped.

ParameterTypeRequiredDescription
leadsobject[]yesLeads to enroll
stepsobject[]yesOrdered steps. step_number is 1-indexed, delay_days is how long to wait AFTER the previous step.
whatsapp_account_idstringno
playbook_idstringno
sequence_idstringno

get_whatsapp_stats

read-only

Aggregate WhatsApp sequence stats for the workspace: active / completed / replied / failed / no_whatsapp counts plus total_sent messages.

No parameters.

Copy Generation

Generate personalized emails, LinkedIn messages, reply drafts, meeting prep

generate_personalization

action

Generate personalization variables (icebreaker, pain_point, value_hook) for a lead.

ParameterTypeRequiredDescription
lead_idstringyesLead ID

batch_generate_personalization

action

Generate personalization for multiple leads in parallel.

ParameterTypeRequiredDescription
lead_idsstring[]yesLead IDs
concurrencynumberno

generate_email

action

Generate an email for a specific sequence step.

ParameterTypeRequiredDescription
lead_idstringyesLead ID
sequence_idstringyesSequence ID
step_numbernumberyesStep number (1-based)

generate_linkedin_message

action

Generate a LinkedIn message for a specific sequence step.

ParameterTypeRequiredDescription
lead_idstringyesLead ID
sequence_idstringyesSequence ID
step_numbernumberyesStep number (1-based)

draft_reply

action

Generate an AI reply draft to an inbound message from a lead. Use this for email, LinkedIn, AND WhatsApp replies.

ParameterTypeRequiredDescription
lead_idstringyesLead ID
inbound_messagestringyesThe inbound message text
channelenum(email \linkedin \whatsapp)
sentimentstringno
intentstringno

generate_meeting_prep

action

Generate meeting preparation notes for a lead (pain points, solutions, talking points).

ParameterTypeRequiredDescription
lead_idstringyesLead ID

LinkedIn

LinkedIn search, profiles, company data, sequence management

linkedin_search_companies

action

Search companies on LinkedIn Sales Navigator by keyword, industry, headcount, or location. Use when the user wants to find companies matching specific criteria (e.g. “SaaS companies in Germany with 50-200 employees”). For searching by a saved Sales Navigator URL, use linkedin_search_companies_by_url.

Required integration: unipile:linkedin

ParameterTypeRequiredDescription
keywordsstringno
industrystring[]no
headcountstringno
locationstring[]no
max_pagesnumberno

linkedin_search_companies_by_url

action

Search companies using a LinkedIn Sales Navigator search URL. Use when the user has a pre-built Sales Navigator search link. NOT for company page URLs (use linkedin_company_profile for those).

Required integration: unipile:linkedin

ParameterTypeRequiredDescription
search_urlstringyesSales Navigator company search URL
max_pagesnumberno

linkedin_search_people

action

Search people at a company on LinkedIn Sales Navigator by role and seniority. Use when the user says “find decision-makers at company X” or “who works at Y?”. Accepts a company name OR a LinkedIn company URL (linkedin.com/company/{slug}). For searching by a saved Sales Navigator people URL, use linkedin_search_people_by_url.

Required integration: unipile:linkedin

ParameterTypeRequiredDescription
companystringyesCompany name OR LinkedIn company URL (e.g. “Acme GmbH” or “https://linkedin.com/company/acme-gmbh”)
rolesstring[]no
seniorityenum(owner/partner \cxo \vice_president \
geographystring[]no
keywordsstringno
max_pagesnumberno

linkedin_search_people_by_url

action

Search people using a LinkedIn Sales Navigator search URL. Use when the user has a pre-built Sales Navigator search link. NOT for company page URLs (use linkedin_search_people with the company URL instead).

Required integration: unipile:linkedin

ParameterTypeRequiredDescription
search_urlstringyesSales Navigator people search URL
max_pagesnumberno

linkedin_company_profile

action

Get a detailed LinkedIn company profile — name, description, industry, headcount, website, headquarters, specialties. Use when the user pastes a company LinkedIn URL or asks “tell me about company X on LinkedIn”. Accepts a full URL (linkedin.com/company/{slug}), a vanity slug, or a numeric company ID.

Required integration: unipile:linkedin

ParameterTypeRequiredDescription
companystringyesLinkedIn company URL, vanity slug, or numeric ID (e.g. “https://linkedin.com/company/acme-gmbh” or “acme-gmbh”)

get_linkedin_sequence_stats

read-only

Get LinkedIn sequence stats, sender pool health, and active enrollments.

Required integration: unipile:linkedin

ParameterTypeRequiredDescription
limitnumberno

enroll_linkedin_sequence

action

Enroll leads in a LinkedIn sequence. Provide manual steps or auto-generate from personalization variables.

Required integration: unipile:linkedin

ParameterTypeRequiredDescription
lead_idsstring[]yesLead IDs to enroll
stepsobject[]no
sender_account_idstringno
sequence_idstringno

pause_linkedin_lead

action

Pause a LinkedIn sequence enrollment for a specific lead.

Required integration: unipile:linkedin

ParameterTypeRequiredDescription
lead_idstringyesLead ID to pause

resume_linkedin_lead

action

Resume a paused LinkedIn sequence enrollment for a lead.

Required integration: unipile:linkedin

ParameterTypeRequiredDescription
lead_idstringyesLead ID to resume

pause_linkedin_sequence

action

Pause all active enrollments in a LinkedIn sequence.

Required integration: unipile:linkedin

ParameterTypeRequiredDescription
sequence_idstringyesSequence ID to pause

resume_linkedin_sequence

action

Resume all paused enrollments in a LinkedIn sequence.

Required integration: unipile:linkedin

ParameterTypeRequiredDescription
sequence_idstringyesSequence ID to resume

cancel_linkedin_enrollment

action

Cancel a specific LinkedIn sequence enrollment.

Required integration: unipile:linkedin

ParameterTypeRequiredDescription
enrollment_idstringyesEnrollment ID to cancel

retry_linkedin_enrollment

action

Retry a FAILED LinkedIn/WhatsApp LinkedIn enrollment for a lead. Resets retry_count, clears last_error, and makes the enrollment due now — the cron will pick it up in the next tick and resume from the step that failed. Only applies to LinkedIn/WhatsApp-driven enrollments (LinkedIn Outreach campaigns have no per-lead retry).

Required integration: unipile:linkedin

ParameterTypeRequiredDescription
lead_idstringyesLead ID whose failed LinkedIn enrollment to retry

Senders

Manage email and LinkedIn sender accounts, health monitoring, deliverability

list_senders

read-only

List all senders (persons with linked email/LinkedIn/WhatsApp accounts) for the workspace.

No parameters.

start_unipile_auth

action

Generate a LinkedIn/WhatsApp hosted-auth URL for the user to connect an email, LinkedIn, or WhatsApp account. The URL expires in 30 minutes. After the user opens the URL and authenticates, a webhook saves the account to this workspace — then call list_unipile_connections to verify it appeared. Use this as step 1 of any sender setup flow when list_available_accounts shows no accounts for the desired provider.

ParameterTypeRequiredDescription
providerenum(email \linkedin \whatsapp \

list_unipile_connections

read-only

List ALL LinkedIn/WhatsApp accounts for this workspace with their connection status (connected / pending / disconnected / error). Use this to troubleshoot connection issues or to verify that a newly-started OAuth flow finished. For picking accounts to link to a sender, prefer list_available_accounts (which filters to connected + shows assignment).

No parameters.

list_available_accounts

read-only

List all connected channel accounts (email, LinkedIn, WhatsApp via LinkedIn/WhatsApp) that can be linked to a sender. Shows current assignment so the chat can pick accounts that are not yet linked. Use this BEFORE create_sender or update_sender to get valid account_id values.

No parameters.

create_sender

action

Create or update a sender (one person with their contact data, signature, and linked channel accounts). Idempotent by email — calling this twice with the same email updates the existing row instead of creating a duplicate. Pass only the fields you have; account IDs are optional and can be linked later via update_sender. Use list_available_accounts first to get valid LinkedIn/WhatsApp account_id values.

ParameterTypeRequiredDescription
namestringyesPerson display name (e.g. “Luca Bardelli”)
emailstringyesPrimary email address — identifies this person and is the idempotency key
signaturestringno
linkedin_profile_urlstringno
calendar_linkstringno
unipile_email_account_idstringno
linkedin_account_idstringno
whatsapp_account_idstringno

update_sender

destructive

Update sender contact data, signature, and linked channel accounts. Pass only fields you want to change. Account IDs must come from list_available_accounts (validated to belong to this workspace).

ParameterTypeRequiredDescription
sender_idstringyesSender ID
namestringno
signaturestringno
linkedin_profile_urlstringno
calendar_linkstringno
unipile_email_account_idstringno
linkedin_account_idstringno
whatsapp_account_idstringno
statusenum(active \paused)no

delete_sender

destructive

Delete a sender. Use force=true to remove even if used by playbooks.

ParameterTypeRequiredDescription
sender_idstringyesSender ID
forcebooleanno

get_sender_pool_health

read-only

Get LinkedIn sender pool health: warmup progress, daily limits, sends today, and account status for all connected LinkedIn accounts.

No parameters.

set_linkedin_plan

destructive

Set the LinkedIn plan type (standard or sales_navigator) for a sender account. Affects search and messaging capabilities.

ParameterTypeRequiredDescription
account_idstringyesLinkedIn sender account ID
linkedin_planenum(standard \sales_navigator)yes

get_deliverability_health

read-only

Email deliverability health from the latest monitoring run: per-inbox status/ESP/daily limit/warmup, plus campaign bounce/reply rates. Sourced from hourly/daily Email Outreach checks.

No parameters.

get_esp_segment_report

read-only

Recipient-ESP segment report (Gmail / Microsoft / T-Online·GMX / other): bounce and reply rate per recipient mailbox provider. Exposes a Microsoft-specific collapse that aggregate numbers hide.

No parameters.

get_placement_report

read-only

Inbox placement test results (Email Outreach Inbox Placement add-on): inbox / spam / missing rate per provider (Google / Microsoft / Yahoo) from the latest seed test. The direct “are we in spam” signal. Empty if the add-on is not active or no test has run.

No parameters.

resume_email_sender

action

Resume a paused/errored email sender (Email Outreach). Human-gated recovery step after investigating why it was auto-actioned. Restores to 50% of the pre-pause daily limit (min 15).

ParameterTypeRequiredDescription
emailstringyesEmail address of the sender to resume

Sequences

Create, edit, clone multi-channel outreach sequences

get_sequence

read-only

Get sequence details and locked status.

ParameterTypeRequiredDescription
sequence_idstringyesSequence ID

update_sequence

destructive

Update sequence steps or status. Cannot edit steps if the sequence is locked (already linked to a campaign).

ParameterTypeRequiredDescription
sequence_idstringyesSequence ID
stepsany[]no
statusstringno

clone_sequence

action

Clone a locked sequence to create an editable copy (without campaign links).

ParameterTypeRequiredDescription
sequence_idstringyesSequence ID to clone

create_sequence

action

Create a new sequence for a playbook.

ParameterTypeRequiredDescription
playbook_idstringyesPlaybook ID
namestringyesSequence name
channelenum(email \linkedin)yes
persona_idstringno
stepsany[]no

Phone Agent

Provision and check workspace Twilio subaccounts for phone outreach

provision_workspace_phone_subaccount

action

Idempotently provision a Twilio subaccount for the current workspace. Creates a new subaccount under the master Twilio account if none exists; returns existing data if it does. Run once per workspace before enabling phone for any sender. Returns only the subaccount SID — auth tokens are never returned to MCP clients.

No parameters.

get_workspace_phone_subaccount_status

read-only

Return the workspace’s Twilio subaccount SID if provisioned, else null. Read-only; never returns auth tokens.

No parameters.

Replies

Review, approve, edit, bulk-manage pending reply drafts

list_replies

read-only

List pending reply drafts in the reply queue with lead and conversation context.

ParameterTypeRequiredDescription
limitnumberno

approve_reply

action

Approve and send a reply draft from the queue.

ParameterTypeRequiredDescription
reply_idstringyesReply queue item ID

edit_and_send_reply

action

Edit a reply draft and send the edited version.

ParameterTypeRequiredDescription
reply_idstringyesReply queue item ID
edited_textstringyesEdited reply text to send

reject_reply

action

Reject a reply draft (remove from queue without sending).

ParameterTypeRequiredDescription
reply_idstringyesReply queue item ID

get_reply_feedback_history

read-only

Get reply feedback history: how drafts were handled (approved, edited, rejected) with edit distances and classification data. Useful for analyzing reply quality.

ParameterTypeRequiredDescription
channelenum(email \linkedin \whatsapp)
actionenum(approved \edited \rejected)
limitnumberno

bulk_approve_replies

action

Approve and send multiple reply drafts at once.

ParameterTypeRequiredDescription
reply_idsstring[]yesReply queue item IDs to approve

bulk_reject_replies

action

Reject multiple reply drafts at once (remove from queue without sending).

ParameterTypeRequiredDescription
reply_idsstring[]yesReply queue item IDs to reject

backfill_replies

action

Import historical replies from connected outreach platforms (Email Outreach, LinkedIn Outreach) into the workspace. Idempotent — re-running with the same since window does not duplicate.

ParameterTypeRequiredDescription
channelsenum(email \linkedin)[]yes
sincestringno
limitnumberno

Conversations

View email/LinkedIn/WhatsApp conversation threads per lead

list_conversations

read-only

List conversations for a specific lead (email, LinkedIn, WhatsApp messages).

ParameterTypeRequiredDescription
lead_idstringyesLead ID

list_recent_replies

read-only

List recent inbound replies across all leads (for monitoring inbox).

ParameterTypeRequiredDescription
limitnumberno
intentenum(interested \not_interested \meeting_request \
sentimentenum(positive \negative \neutral)

get_conversation_stats

read-only

Get conversation statistics: total replies, unhandled count, by channel breakdown.

No parameters.