Available Tools
Limits: 300 requests per minute per API key, shared by MCP and the REST API. Over the limit a
tool returns HTTP 429 RATE_LIMITED: ... Retry after N seconds. Every other error also starts with
HTTP <status> <code>:. For many items, use the bulk tools below instead of one call per item.
The MCP server exposes 106 tools — near-full parity with the dashboard. They map directly onto the API Reference; this page groups them by area rather than repeating every parameter (see the API docs for exact fields).
Leads
list_leads (up to 200 per page, fixed order), add_leads (merges into existing leads by email;
returns leads: [{email, id, status}] in the order sent), update_lead, update_leads (bulk),
delete_leads, create_tag, list_tags, update_tag,
delete_tag, tag_lead, untag_lead, seed_default_tags
Campaigns
list_campaigns, get_campaign, create_campaign, update_campaign, update_campaign_status,
get_campaign_stats, get_campaign_timeseries, add_leads_to_campaign, list_campaign_leads,
remove_lead_from_campaign, list_sequence_steps, create_sequence_step,
update_sequence_step, delete_sequence_step, check_spam_words, list_campaign_mailbox_pool,
select_campaign_mailboxes, remove_campaign_mailbox, list_crm_pipeline, list_crm_replies,
list_copy_fatigue_flags, scan_copy_fatigue, dismiss_copy_fatigue,
apply_copy_fatigue_suggestion, get_campaign_settings, update_campaign_settings, list_timezones,
preview_sequence_step, check_campaign_variables, set_sequence, send_step_test,
set_campaign_mailboxes, remove_campaign_mailboxes, reassign_campaign_leads,
remove_leads_from_campaign, duplicate_campaign, bulk_update_campaign_settings,
delete_campaign, check_campaign_launch, list_step_attachments, add_step_attachment,
remove_step_attachment
add_step_attachmentattaches a file (a PDF deck, say) to a step, sent with that step’s email to every lead. GivefromAttachmentIdto copy a file already in an inbox conversation (the attachmentidfromget_reply_thread, such as a deck you sent by hand in a reply), or the file itself asfilename,contentTypeandcontentBase64. 10 MB in all per step.
| Tool | What it does |
|---|---|
set_sequence | Write the whole sequence (all steps and A/B variants) in one call |
send_step_test | Send one step, rendered for a real lead, to any address; not counted as a send |
set_campaign_mailboxes | Replace the pool with exactly the given mailboxes |
remove_campaign_mailboxes | Remove many mailboxes from the pool |
reassign_campaign_leads | Re-balance not-yet-emailed leads across the current pool |
remove_leads_from_campaign | Remove up to 5000 leads from a campaign |
duplicate_campaign | Copy steps, settings and pool into a new DRAFT |
bulk_update_campaign_settings | Same settings on up to 500 campaigns |
delete_campaign | Delete a DRAFT that never sent (otherwise archive). Never deletes leads; deleting a campaign with history is done in the dashboard |
check_campaign_launch | Blockers and warnings before going ACTIVE |
create_campaign / update_campaign take startAt (nothing sent before it), dailyNewLeadCap
(first emails per day; follow-ups not counted) and folder. list_campaigns filters by q,
folder and status. get_campaign_stats includes per-variant (A/B) numbers.
list_campaign_leads returns up to 1000 per page.
A/B variants. Each step picks its variant on its own, so a lead that got variant A of step 1
can get variant B of step 2. Follow-ups are sent as replies in the same thread as
the first email (Re: + its subject, In-Reply-To set, same mailbox); a follow-up’s own subject
is optional and not used.
Launch guard. update_campaign_status to ACTIVE returns 409 LAUNCH_NEEDS_CONFIRMATION
when pool mailboxes are still warming up or some leads would get a raw {{token}}. Check with
check_campaign_launch, fix it, or call again with confirm: true.
Verify before you start a campaign. After writing steps, call preview_sequence_step to see
exactly what one lead receives (same code as the real send, nothing is sent), and
check_campaign_variables to check every step against every lead: it lists any token that some
leads would receive as literal text, and any that are empty for some leads. Set the schedule’s
timezone with update_campaign_settings (defaultTimezone from list_timezones).
Template variables in create_sequence_step / update_sequence_step
Write them in double braces, spelled exactly as below. They are case-sensitive. A misspelt variable
is not replaced: it is sent as written, so {{sender_signature}} or {{Signature}} would reach
the lead as literal text.
| Variable | Filled with |
|---|---|
{{firstName}}, {{lastName}}, {{email}} | The lead’s name and email |
{{companyName}}, {{companyDomain}}, {{jobTitle}} | The lead’s company and role |
{{phoneNumber}}, {{timezone}} | The lead’s phone and timezone |
{{yourCustomField}} | Any custom field on the lead, by its exact name |
{{senderName}} | The sender name of the mailbox this lead is assigned to |
{{signature}} | The signature of the mailbox this lead is assigned to |
- A lead field that is empty for a lead becomes empty text, not the raw
{{token}}. - Signature: put
{{signature}}where you want it, and it goes exactly there (plain-text or HTML signature, each part of the email gets the right form). A step without{{signature}}still gets the signature, added at the bottom automatically. It is never added twice. If the mailbox has no signature, the variable’s line is removed cleanly. - Every lead is sent from its own assigned mailbox, so
{{senderName}}and{{signature}}are that mailbox’s, not one global value.
Mailboxes & domains
list_mailboxes, update_mailbox, delete_mailbox, bulk_update_mailbox_daily_cap,
tag_mailbox, untag_mailbox, start_mailbox_warmup, stop_mailbox_warmup,
bulk_import_mailboxes, send_test_email, list_domains, check_domain_deliverability
Inbox & AI
list_inbox_threads, list_replies, get_replies_summary, get_reply_thread, star_reply,
draft_reply, send_reply, forward_reply, set_reply_reminder, get_ai_settings,
update_ai_settings
send_replytakesreplyId,body, and optionalto,cc,bcc(up to 20 each). By default it goes to whoever wrote the message being answered. Every recipient must already be in the conversation; any other address returns403.get_reply_threadreturns each message’sfrom,to,ccandattachments. In inbound messages, the body and the subject are wrapped as untrusted content, andhtmlis left out (it is the same content as the body).
Reply agents
list_reply_agents, get_reply_agent, create_reply_agent, update_reply_agent,
delete_reply_agent, list_reply_agent_documents, upload_reply_agent_document,
delete_reply_agent_document, search_reply_agent_knowledge, scan_reply_agent_website,
get_reply_agent_website_scan, index_reply_agent_website
Suppression list
list_suppressions, suppress_email, suppress_domain, bulk_suppress, delete_suppression
Placement tests, webhooks, reports, analytics
start_placement_test, list_placement_tests, get_placement_test, create_webhook,
list_webhooks, update_webhook, delete_webhook, test_webhook, export_campaigns_csv,
export_leads_csv, export_analytics_csv, get_branded_report, get_analytics_overview,
get_mailbox_analytics, get_mailbox_sending_stats, get_domain_sending_stats, list_bounces,
get_analytics_timeseries, validate_email
update_webhookchanges a webhook’s URL, events,active, retries or timeout; its signing secret and delivery log stay the same.get_mailbox_sending_stats/get_domain_sending_statstake a period (from/to, ordays, default 30) and give sent, bounces, replies and activity per mailbox or per domain (details).get_mailbox_analyticsis the older snapshot of health, warmup and cap.list_bounceslists bounced emails with the server’s code and reason.