Requires the Campaigns permission. Tools in this group are hidden from
tools/list and refused on call when your plan does not grant it.activity_list
Read-only Completed actions — one row per lead per step. Only COMPLETED activities are returned; the upstream field cannot return PENDING or FAILED rows. To see a failure and itsfailedReason, read one lead with lead_get. Note that status here filters the LEAD’s pipeline status, not the activity’s.
Parameters
string
Campaign id, from
campaign_list or campaign_create.enum (22 values)
Filters the LEAD pipeline status, not the activity status. Activities are always COMPLETED.
string
Free-text search.
object
Date window as { from, to } — epoch milliseconds or ISO 8601. Omit for the backend default.
integer (min 1)
default:"1"
1-indexed page number.
activity_skip
Write Destructive Mark one pending action SKIPPED, to unblock a lead stuck on a step that will never succeed. That status is the only thing it writes — it does not itself schedule the next step, so do not promise the lead has advanced; re-read withlead_flow_state to see what the flow does next. It acts on an activity id, not a lead id. To stop a lead entirely use lead_update with paused or isExcluded.
Parameters
string
required
Activity id, from
activity_list.lead_add
Write Add one prospect to a campaign by LinkedIn profile URL and/or email. A lead needs at least one of those two — a row with neither is rejected. For more than a handful, usecampaign_upload_leads.
Parameters
string
required
Campaign id, from
campaign_list or campaign_create.string
linkedin.com/in/… profile URL.
string (email)
Required if there is no profile URL.
string
Given name.
string
Family name.
string
Full display name. Use instead of first/last when you only have one string.
string
Job title.
string
City, region or country.
string
Phone number.
string
Website URL.
Sales Navigator profile URL.
string
LinkedIn Recruiter profile URL.
string
Free-text hook available in copy as {{personalization}}.
object (free-form)
Extra merge fields, e.g. { “recentPost”: ”…” }, usable as {{recentPost}}.
lead_export
Write Generate a CSV of leads filtered by campaign, status and tags. Returns a filename served from the CDN. Use it when the user wants a file. To read leads in the conversation uselead_list; for campaign performance numbers rather than people, campaign_export_stats.
Parameters
string
Campaign id, from
campaign_list or campaign_create.array of enum (22 values)
Filter by lead pipeline status.
string[]
Tag ids to filter by, from
tag_list.lead_flow_state
Read-only Where a lead sits in its campaign sequence right now, when the next action fires, and whether it has been orphaned by a sequence edit. One lead, current position only. For every lead waiting on a given step usesequence_leads_at_step; for what a sequence rewrite did to the whole campaign use flow_audit.
Parameters
string
required
Lead id, from
lead_list.lead_get
Read-only Full profile for one lead, plus its complete activity history and current position in the campaign flow — the single call to make when asked “what happened with this person”. This is also the only place a FAILED action and itsfailedReason can be read: activity_list returns COMPLETED rows only. Do not page through lead_list to assemble one lead’s history.
Parameters
string
required
Lead id, from
lead_list.boolean
default:"true"
Include the per-step activity history.
boolean
default:"false"
Include the full message thread. Can be long.
lead_list
Read-only Prospects in a campaign (or across your whole account), with their current pipeline status. The list view: many leads, a few fields each. For one person’s full story uselead_get, for where they are in the sequence lead_flow_state, and for a spreadsheet lead_export. Filter by status to answer questions like “who replied this week” (REPLIED) or “who accepted but never answered” (CONNECTED).
Parameters
string
Omit to search every campaign.
string
Search name, email or company.
enum (22 values)
Filter by pipeline status.
string[]
Tag ids — leads must carry at least one.
object
Date window as { from, to } — epoch milliseconds or ISO 8601. Omit for the backend default.
integer (min 1)
default:"1"
1-indexed page number.
integer (1–100)
default:"25"
Rows per page.
lead_move
Write Transfer leads into a different campaign. Understand what the backend actually does before offering this, because it is not a relocation: it INSERTS a new lead row in the destination at status FOUND, clearingacceptedAt and repliedAt, schedules a fresh activity on the destination’s first step, and soft-deletes the original with deleteReason: "MOVED". So the prospect restarts from the beginning and the per-step history does not come along — inbox conversations do, they are repointed at the new row. A lead already in the destination by profile URL or email is skipped. The destination must have a LinkedIn account attached or it throws “Destination campaign has no LinkedAccount.” — set one with campaign_update first. Beware selectAll: it moves every lead from the first listed lead’s campaign and ignores the rest of the list.
Parameters
string
required
Destination campaign id.
string[]
required
Lead ids, from
lead_list.boolean
Move every lead matching the current filter rather than the id list.
lead_note_add
Write Write an internal note on a lead. Never sent to the prospect — this is not a way to message anyone, and sending an inbox message has no tool at all. Uselead_note_update to change one afterwards; it replaces the whole body.
Parameters
string
required
Lead id, from
lead_list.string
required
Body text.
lead_note_update
Write Destructive Rewrite an existing internal note. Replaces the whole body — pass the full text, not a fragment, and read it withlead_notes_list first if you do not already have it. Editing a note changes nothing the prospect sees.
Parameters
string
required
Note id, from
lead_notes_list.string
required
Body text.
lead_notes_list
Read-only Internal notes your team has written about a lead. Not visible to the prospect. Notes are free text for humans and have no effect on sending. For the messages actually exchanged with the prospect readconversation_get.
Parameters
string
required
Lead id, from
lead_list.lead_update
Write Edit a lead: correct contact details, pause its sequence, exclude it from sending, or attach merge-field data.paused: true freezes just this lead; isExcluded: true takes it out of the campaign without deleting the record. Scope is one lead. It cannot pause a whole campaign — pausing a campaign has no tool and is web-app only — and it cannot move a lead elsewhere (lead_move) or change its tags for reply classification, which happens on the conversation via conversation_update.
Parameters
string
required
Lead id, from
lead_list.string (email)
Email address.
string
Given name.
string
Family name.
string
Job title.
string
Phone number.
string
Website URL.
string
Free-text hook for this person, available in copy as {{personalization}}.
boolean
Freeze this lead’s sequence without removing it.
boolean
Remove from sending while keeping the record.
boolean
Mark the reply as positive intent.
boolean
Mark as read.
object (free-form)
Extra merge-field data, e.g. { “recentPost”: ”…” }, usable in copy as {{recentPost}}.
