MCP tool reference
ZOLLO exposes a remote MCP endpoint at https://mcp.zollo.run/mcp. A compatible MCP client (Claude, Codex, or another MCP-aware agent) authenticates through the standard ZOLLO account OAuth flow, the user selects an organization, and the client receives the organization-scoped tools below. Every tool that writes data returns the created or updated record; tools marked confirm required refuse to act until called a second time with confirm: true, after the caller has shown the user what will happen (for campaign sends, this means showing the preflight_campaign recipient count first).
Campaigns
| Tool | Parameters | Effect |
|---|---|---|
list_campaigns | search? (string) | Read-only. |
get_campaign | id (string) | Read-only. |
preflight_campaign | id (string) | Read-only. Returns recipient count and warnings. |
create_campaign | campaign fields, providerId?, segmentId?, listId? | Creates a campaign in DRAFT status. |
update_campaign | id (string), any campaign field | Updates an existing campaign, including sender and audience. |
schedule_campaignconfirm required | id (string), confirm (boolean) | Schedules the campaign to send at scheduledAt. Call preflight_campaign first and show the recipient count before confirming. |
send_campaignconfirm required | id (string), confirm (boolean) | Sends the campaign immediately to its recipients. Irreversible. Call preflight_campaign first and show the recipient count before confirming. |
pause_campaignconfirm required | id (string), confirm (boolean) | Pauses a currently sending campaign. |
Contacts
| Tool | Parameters | Effect |
|---|---|---|
list_contacts | none | Read-only. |
create_contact | email (required), plus optional name, company, tags, customFields, consentStatus, source, leadScore, status | Creates a contact. |
update_contact | id (string), any editable contact field | Updates a contact. |
add_suppression | email (string), reason? (string) | Suppresses an address from future campaigns. |
Segments
| Tool | Parameters | Effect |
|---|---|---|
list_segments | none | Read-only. Returns each segment id and filter; use the id as segmentId on a campaign. |
create_segment | name (string), filter (rule or rule group) | Creates a dynamic contact segment. |
update_segment | id (string), name?, filter? | Updates a segment's name or filter. |
preview_segment | filter (rule or rule group) | Read-only. Returns the estimated matching-contact count and a small sample. |
Templates
| Tool | Parameters | Effect |
|---|---|---|
list_templates | search? (string) | Read-only. |
get_template | id (string) | Read-only. |
create_template | name, category, subject, previewText?, companyAddress?, blocks? (array), html?, mjml?, isReusable? | Creates an editable template. Raw HTML or MJML is automatically imported into the block editor; native blocks are preferred. |
update_template | id (string), any template field | Updates an existing template. |
Automations
| Tool | Parameters | Effect |
|---|---|---|
list_automations | none | Read-only. |
create_automation | name (string), status? (string), definition (workflow graph: { id, name, nodes: [{ id, type: 'trigger'|'condition'|'action'|'wait'|'end', ... }] }) | Creates an automation workflow. |
update_automation | id (string), name?, status?, definition? | Updates a workflow's name, status, or definition. |
run_automationconfirm required | id (string), event (string), audienceType ('contact'|'list'|'segment'), contactId?/listId?/segmentId?, confirm (boolean) | Enrolls a contact, list, or segment into the automation. Sends live emails/actions to real recipients. |
list_automation_runs | id (string) | Read-only. Lists recent runs of a workflow. |
Providers
| Tool | Parameters | Effect |
|---|---|---|
list_email_providers | none | Read-only. Returns provider ids, sender addresses, default status, health, and sending limits; use an id as providerId. |
Authorization scope
Every tool call is scoped to the single organization selected during authorization. Requested permissions are shown to the user at connection time. An agent cannot read or write data belonging to an organization the user did not explicitly select.