Reference
MCP tool reference
Every tool on the hosted Emailit MCP server, grouped by toolset, with its kind, required scope, role requirement and arguments.
The hosted server at https://api.emailit.com/mcp exposes 109 tools in 15 toolsets. This reference is generated from the server’s tool catalog, so it always matches what your assistant sees. Tool and argument descriptions are shown as the server sends them, in English.
Scope. Tools with scope sending also work with full. See Workspaces and permissions.
Kind. Read makes no changes. Create and update change data. Action changes state. Delete removes data. Destructive can’t be undone. External calls a URL you own. Send reaches real recipients. Kinds map to MCP tool annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) so clients can ask before running write tools.
Workspace. With OAuth, every tool outside the Workspace toolset also takes an optional workspace argument (ID or exact name) to run that call in another allowed workspace. Tools marked Admin role are refused with admin_role_required for workspace Members. API key connections have no workspace argument and no role limits.
Results. Tools return JSON as text for every client and as structuredContent for clients that read structured results. List tools accept page, limit and structured filters ({ field, condition, value }).
Workspace workspace
get-current-workspaceReadsendingReturn the Emailit workspace this connection acts on by default, your role in it, and the granted scope. Call it to confirm which account changes apply to.
list-workspacesReadsendingOAuth onlyList the workspaces this connection may use, with your role in each. Pass a workspace ID or name as `workspace` to any tool to act in it.
switch-workspaceUpdatesendingOAuth onlyChange the default workspace for later tool calls on this connection. To act in another workspace for a single call, pass `workspace` to that tool instead.
1 argument
workspace_idstringrequiredWorkspace ID or exact name from list-workspaces.
create-workspaceCreatefullOAuth onlyCreate a new workspace, give this connection access to it, and switch to it.
1 argument
namestringrequiredWorkspace name.
Emails emails
send-emailSendsendingSend a transactional email from a verified sending domain. Supports HTML, plain text, templates with variables, attachments, CC/BCC, scheduling, and open/click tracking. Delivers to real recipients, so confirm recipients and content with the user first.
15 arguments
fromstringSender in RFC format, e.g. "Acme <hello@mail.acme.com>". Must use a verified domain.tostring | string[]requiredRecipient email address(es).subjectstringSubject line. Optional when a template provides it.htmlstringHTML body.textstringPlain-text body.reply_tostring | string[]ccstring | string[]bccstring | string[]templatestringTemplate ID (tem_xxx) or alias.variablesobjectTemplate variables.attachmentsobject[]headersobjectmetaobjectCustom metadata returned in events and webhooks.scheduled_atstringISO 8601 time or natural language like "tomorrow at 9am".trackingboolean | object
list-emailsReadfullList sent and received emails with pagination, status, recipient, sender, subject, domain, API key, and date filters.
16 arguments
pagenumberPage number (default: 1).limitnumberResults per page (max: 100).searchstringFree-text search.filtersobject[]Structured filters, combined with AND unless match is "or".match"all" | "or"Combine filters with AND (all, default) or OR.sortstringSort column: to, from, subject, status, tag, created_at, updated_at, spam_score, api_key_id, sending_domain_id.order"asc" | "desc"Sort direction.type"inbound" | "outbound"status"accepted" | "scheduled" | "clicked" | "loaded" | "delivered" | "bounced" | "attempted" | "failed" | "rejected" | "suppressed" | "received" | "complained" | "canceled" | "held"rcpt_tostringRecipient address contains.mail_fromstringSender address contains.subjectstringSubject contains.api_key_idstringsending_domain_idstringdate_fromstringISO date, inclusive.date_tostringISO date, inclusive.
get-emailReadfullRetrieve a single email with its status and delivery details.
1 argument
idstringrequiredEmail ID (em_xxx).
get-email-rawReadfullReturn the full raw MIME message of an email.
1 argument
idstringrequiredEmail ID (em_xxx).
get-email-bodyReadfullReturn the parsed text and HTML body of an email.
1 argument
idstringrequiredEmail ID (em_xxx).
get-email-attachmentsReadfullReturn the attachments of an email.
1 argument
idstringrequiredEmail ID (em_xxx).
get-email-metaReadfullReturn email metadata and headers without attachment content.
1 argument
idstringrequiredEmail ID (em_xxx).
update-emailUpdatesendingChange the send time of a scheduled email.
2 arguments
idstringrequiredEmail ID (em_xxx).scheduled_atstringrequiredNew send time, ISO 8601.
cancel-emailDestructivesendingBest-effort cancel of a scheduled, accepted, or attempted email. Pulls it from the send queue; not guaranteed if delivery already started.
1 argument
idstringrequiredEmail ID (em_xxx).
retry-emailSendsendingRetry delivery of a failed, errored, or held email to its original recipients.
1 argument
idstringrequiredEmail ID (em_xxx).
forward-emailSendsendingForward an outgoing email to a new recipient. Default is a plain resend. Set include_headers to add forwarded headers and an optional comment. Limited to 3 forwards per hour per workspace.
9 arguments
idstringrequiredEmail ID (em_xxx).tostring | string[]requiredNew recipient email address(es).include_headersbooleanAdd forwarded headers and an optional comment. Default is a plain resend.commentstringNote prepended when include_headers is true.bodystringAlias for comment.htmlstringtextstringfromstringsubjectstring
Domains domains
create-domainCreatefullAdd a sending domain. Returns the SPF, DKIM, return-path, and DMARC DNS records to publish before verifying.
7 arguments
namestringrequiredDomain or subdomain, e.g. mail.acme.com.outgoingbooleanAllow sending from this domain.incomingbooleanAccept inbound email for this domain.use_for_anybooleantrack_loadsbooleanTrack opens.track_clicksbooleanTrack link clicks.dmarc_reportsbooleanCollect DMARC aggregate reports.
get-domainReadfullRetrieve a domain with its DNS records and per-record verification status.
1 argument
idstringrequiredDomain ID.
list-domainsReadfullList sending domains in the workspace.
7 arguments
pagenumberPage number (default: 1).limitnumberResults per page (max: 100).searchstringFree-text search.filtersobject[]Structured filters, combined with AND unless match is "or".match"all" | "or"Combine filters with AND (all, default) or OR.sortstringSort column: name, created_at, spf_status, dkim_status, return_path_status.order"asc" | "desc"Sort direction.
update-domainUpdatefullUpdate domain settings such as open/click tracking, inbound, or DMARC report collection.
9 arguments
idstringrequiredDomain ID.outgoingbooleanAllow sending from this domain.incomingbooleanAccept inbound email for this domain.use_for_anybooleantrack_loadsbooleanTrack opens.track_clicksbooleanTrack link clicks.dmarc_reportsbooleanCollect DMARC aggregate reports.tracking_keystring | nullCustom tracking CNAME label.inbound_keystring | null
delete-domainDeletefullAdmin rolePermanently delete a domain. Sending from it stops immediately.
1 argument
idstringrequiredDomain ID.
verify-domainActionfullRun a DNS check now and update the verification status of each record.
1 argument
idstringrequiredDomain ID.
DMARC dmarc
list-dmarc-reportsReadfullList DMARC aggregate or forensic reports received for a domain.
11 arguments
idstringrequiredDomain ID.pagenumberPage number (default: 1).limitnumberResults per page (max: 100).filtersobject[]Structured filters, combined with AND unless match is "or".match"all" | "or"Combine filters with AND (all, default) or OR.type"aggregate" | "forensic"statusstringorg_namestringReporting organization, e.g. google.com.fromstringStart date, ISO 8601.tostringEnd date, ISO 8601.offsetnumber
get-dmarc-reportReadfullRetrieve one DMARC aggregate report with its records.
2 arguments
idstringrequiredDomain ID.report_idstringrequiredDMARC report ID.
list-dmarc-forensic-reportsReadfullList DMARC forensic (failure) reports for a domain.
5 arguments
idstringrequiredDomain ID.fromstringStart date, ISO 8601.tostringEnd date, ISO 8601.limitnumberoffsetnumber
get-dmarc-forensic-reportReadfullRetrieve one DMARC forensic report.
2 arguments
idstringrequiredDomain ID.report_idstringrequiredForensic report ID.
get-dmarc-statsReadfullDMARC pass/fail totals and alignment rates for a domain over a date range.
3 arguments
idstringrequiredDomain ID.fromstringStart date, ISO 8601.tostringEnd date, ISO 8601.
list-dmarc-sourcesReadfullSending sources (IPs and hostnames) seen in DMARC reports, with pass/fail counts.
3 arguments
idstringrequiredDomain ID.fromstringStart date, ISO 8601.tostringEnd date, ISO 8601.
list-dmarc-countriesReadfullDMARC message volume by sending country.
3 arguments
idstringrequiredDomain ID.fromstringStart date, ISO 8601.tostringEnd date, ISO 8601.
list-dmarc-asnsReadfullDMARC message volume by sending network (ASN).
3 arguments
idstringrequiredDomain ID.fromstringStart date, ISO 8601.tostringEnd date, ISO 8601.
list-dmarc-reportersReadfullOrganizations that sent DMARC reports for the domain.
3 arguments
idstringrequiredDomain ID.fromstringStart date, ISO 8601.tostringEnd date, ISO 8601.
upload-dmarc-reportCreatefullImport a DMARC aggregate report (XML, or base64 of a .xml/.gz/.zip file) for a domain.
4 arguments
idstringrequiredDomain ID.contentstringRaw report XML.content_base64stringBase64 of the report file.filenamestring
Templates templates
create-templateCreatefullCreate an email template. Reference it from send-email by ID or alias; publish it before use.
8 arguments
namestringrequiredaliasstringrequiredUnique slug used by send-email.fromstringDefault sender.subjectstringSubject; supports {{variables}}.reply_tostring | string[]htmlstringHTML body; supports {{variables}}.textstringeditor"html" | "text" | "dragit" | "tiptap"
get-templateReadfullRetrieve a template with its content.
1 argument
idstringrequiredTemplate ID (tem_xxx).
list-templatesReadfullList templates in the workspace.
7 arguments
pagenumberPage number (default: 1).limitnumberResults per page (max: 100).filtersobject[]Structured filters, combined with AND unless match is "or".match"all" | "or"Combine filters with AND (all, default) or OR.sortstringSort column: name, alias, editor, subject, created_at.order"asc" | "desc"Sort direction.include_contentbooleanInclude HTML and text bodies.
update-templateUpdatefullUpdate a template draft. Publish it to make the change live.
9 arguments
idstringrequiredTemplate ID (tem_xxx).namestringaliasstringfromstringDefault sender.subjectstringSubject; supports {{variables}}.reply_tostring | string[]htmlstringHTML body; supports {{variables}}.textstringeditor"html" | "text" | "dragit" | "tiptap"
delete-templateDeletefullPermanently delete a template.
1 argument
idstringrequiredTemplate ID (tem_xxx).
publish-templateActionfullPublish the current template draft so new sends use it.
1 argument
idstringrequiredTemplate ID (tem_xxx).
API keys api_keys
create-api-keyCreatefullAdmin roleCreate an API key. The secret is returned only once; tell the user to store it securely.
3 arguments
namestringrequiredscope"full" | "sending"sending = send-only, full = every endpoint.sending_domain_idstring | nullLock a sending key to one domain.
get-api-keyReadfullRetrieve an API key (without its secret).
1 argument
idstringrequiredAPI key ID.
list-api-keysReadfullList API keys in the workspace.
7 arguments
pagenumberPage number (default: 1).limitnumberResults per page (max: 100).searchstringFree-text search.filtersobject[]Structured filters, combined with AND unless match is "or".match"all" | "or"Combine filters with AND (all, default) or OR.sortstringSort column: name, type, scope, created_at.order"asc" | "desc"Sort direction.
update-api-keyUpdatefullAdmin roleRename an API key.
2 arguments
idstringrequiredAPI key ID.namestringrequired
delete-api-keyDeletefullAdmin rolePermanently revoke an API key. Apps using it stop working immediately.
1 argument
idstringrequiredAPI key ID.
regenerate-api-keyDestructivefullAdmin roleIssue a new secret for an API key and invalidate the old one immediately. The new secret is returned only once.
1 argument
idstringrequiredAPI key ID.
Audiences and subscribers audiences
create-audienceCreatefullCreate an audience (mailing list) for campaigns and automations.
1 argument
namestringrequired
get-audienceReadfullRetrieve an audience with subscriber counts.
1 argument
idstringrequiredAudience ID.
list-audiencesReadfullList audiences in the workspace.
7 arguments
pagenumberPage number (default: 1).limitnumberResults per page (max: 100).searchstringFree-text search.filtersobject[]Structured filters, combined with AND unless match is "or".match"all" | "or"Combine filters with AND (all, default) or OR.sortstringSort column: name, created_at.order"asc" | "desc"Sort direction.
update-audienceUpdatefullRename an audience.
2 arguments
idstringrequiredAudience ID.namestringrequired
delete-audienceDeletefullPermanently delete an audience and its subscriber records. Contacts are kept.
1 argument
idstringrequiredAudience ID.
list-audience-subscribersReadfullList subscribers of an audience, optionally only subscribed or unsubscribed.
9 arguments
idstringrequiredAudience ID.pagenumberPage number (default: 1).limitnumberResults per page (max: 100).searchstringFree-text search.filtersobject[]Structured filters, combined with AND unless match is "or".match"all" | "or"Combine filters with AND (all, default) or OR.sortstringSort column: email, first_name, last_name, subscribed, created_at.order"asc" | "desc"Sort direction.subscribedboolean
get-audience-subscriberReadfullRetrieve one subscriber of an audience.
2 arguments
idstringrequiredAudience ID.subscriber_idstringrequiredSubscriber ID.
add-audience-subscriberCreatefullAdd an email address to an audience. Creates the contact if it does not exist.
5 arguments
idstringrequiredAudience ID.emailstringrequiredfirst_namestringlast_namestringcustom_fieldsobject
update-audience-subscriberUpdatefullUpdate a subscriber, including subscribing or unsubscribing them from the audience.
7 arguments
idstringrequiredAudience ID.subscriber_idstringrequiredSubscriber ID.emailstringfirst_namestringlast_namestringcustom_fieldsobjectsubscribedboolean
remove-audience-subscriberDeletefullRemove a subscriber from an audience. The contact is kept.
2 arguments
idstringrequiredAudience ID.subscriber_idstringrequiredSubscriber ID.
Contacts contacts
create-contactCreatefullCreate a contact, optionally subscribing it to audiences and setting custom fields.
6 arguments
emailstringrequiredfirst_namestringlast_namestringcustom_fieldsobjectaudiencesstring[]Audience IDs to subscribe to.unsubscribedboolean
get-contactReadfullRetrieve a contact by ID or email address.
1 argument
idstringrequiredContact ID (con_xxx) or email address.
list-contactsReadfullList contacts with search, audience, subscription, and custom-field filters.
9 arguments
pagenumberPage number (default: 1).limitnumberResults per page (max: 100).searchstringFree-text search.filtersobject[]Structured filters, combined with AND unless match is "or".match"all" | "or"Combine filters with AND (all, default) or OR.sortstringSort column: email, first_name, last_name, name, audiences, created_at, updated_at, unsubscribed, audience_id, custom_fields.<key>.order"asc" | "desc"Sort direction.audience_idstringOnly contacts in this audience.unsubscribedboolean
update-contactUpdatefullUpdate a contact. Passing audiences replaces its audience memberships.
7 arguments
idstringrequiredContact ID (con_xxx) or email address.emailstringfirst_namestringlast_namestringcustom_fieldsobjectaudiencesstring[]unsubscribedboolean
delete-contactDeletefullPermanently delete a contact and its audience memberships.
1 argument
idstringrequiredContact ID (con_xxx) or email address.
bulk-update-contactsDestructivefullApply one action to up to 100 contacts: delete, add_to_audience, remove_from_audience, unsubscribe, or resubscribe.
3 arguments
action"delete" | "add_to_audience" | "remove_from_audience" | "unsubscribe" | "resubscribe"requiredidsstring[]requiredContact IDs (con_xxx).audience_idstringRequired for add_to_audience and remove_from_audience.
export-contactsReadfullExport contacts matching the filters as CSV text (email, names, subscription, audiences, custom fields).
9 arguments
pagenumberPage number (default: 1).limitnumberResults per page (max: 100).searchstringFree-text search.filtersobject[]Structured filters, combined with AND unless match is "or".match"all" | "or"Combine filters with AND (all, default) or OR.sortstringSort column: email, first_name, last_name, name, audiences, created_at, updated_at, unsubscribed, audience_id, custom_fields.<key>.order"asc" | "desc"Sort direction.audience_idstringOnly contacts in this audience.unsubscribedboolean
Suppressions suppressions
create-suppressionCreatefullAdd an email address to the suppression list so Emailit never sends to it.
4 arguments
emailstringrequiredtype"recipient" | "bounce" | "complaint" | "unsubscribe"reasonstringkeep_untilstring | number | nullExpiry as ISO 8601, Unix timestamp, or natural language like "in 30 days". Null keeps it forever.
get-suppressionReadfullRetrieve a suppression by ID or email address.
1 argument
idstringrequiredSuppression ID (sup_xxx) or email address.
list-suppressionsReadfullList suppressed addresses with search, type, reason, and expiry filters.
7 arguments
pagenumberPage number (default: 1).limitnumberResults per page (max: 100).searchstringFree-text search.filtersobject[]Structured filters, combined with AND unless match is "or".match"all" | "or"Combine filters with AND (all, default) or OR.sortstringSort column: email, reason, type, created_at, keep_until.order"asc" | "desc"Sort direction.
update-suppressionUpdatefullChange the type, reason, or expiry of a suppression.
4 arguments
idstringrequiredSuppression ID (sup_xxx) or email address.type"recipient" | "bounce" | "complaint" | "unsubscribe"reasonstringkeep_untilstring | number | nullExpiry as ISO 8601, Unix timestamp, or natural language like "in 30 days". Null keeps it forever.
delete-suppressionDeletefullRemove an address from the suppression list so it can receive email again.
1 argument
idstringrequiredSuppression ID (sup_xxx) or email address.
Webhooks webhooks
create-webhookCreatefullCreate a webhook endpoint for email, domain, contact, and campaign events. The response includes the signing secret.
6 arguments
namestringrequiredurlstringrequiredHTTPS endpoint that receives event POSTs.all_eventsbooleanSubscribe to every event type.enabledbooleanevents"email.accepted" | "email.scheduled" | "email.delivered" | "email.bounced" | "email.attempted" | "email.failed" | "email.rejected" | "email.clicked" | "email.loaded" | "email.complained" | "email.received" | "email.suppressed" | "email.canceled" | "email.unsubscribed" | "email.resubscribed" | "domain.created" | "domain.updated" | "domain.deleted" | "audience.created" | "audience.updated" | "audience.deleted" | "subscriber.created" | "subscriber.updated" | "subscriber.deleted" | "contact.created" | "contact.updated" | "contact.deleted" | "template.created" | "template.updated" | "template.deleted" | "suppression.created" | "suppression.updated" | "suppression.deleted" | "email_verification.created" | "email_verification.updated" | "email_verification_list.created" | "email_verification_list.updated" | "campaign.created" | "campaign.updated" | "campaign.deleted" | "campaign.scheduled" | "campaign.queued" | "campaign.sending" | "campaign.testing" | "campaign.sent" | "campaign.canceled" | "campaign.archived"[]Event types to subscribe to when all_events is false.filterobject | nullOnly deliver events matching these rules. Null clears the filter.
get-webhookReadfullRetrieve a webhook with its subscribed events and filter.
1 argument
idstringrequiredWebhook ID (wh_xxx).
list-webhooksReadfullList webhooks in the workspace.
7 arguments
pagenumberPage number (default: 1).limitnumberResults per page (max: 100).searchstringFree-text search.filtersobject[]Structured filters, combined with AND unless match is "or".match"all" | "or"Combine filters with AND (all, default) or OR.sortstringSort column: name, url, enabled, created_at.order"asc" | "desc"Sort direction.
update-webhookUpdatefullUpdate a webhook URL, name, events, filter, or enable it again.
7 arguments
idstringrequiredWebhook ID (wh_xxx).namestringurlstringHTTPS endpoint that receives event POSTs.all_eventsbooleanSubscribe to every event type.enabledbooleanevents"email.accepted" | "email.scheduled" | "email.delivered" | "email.bounced" | "email.attempted" | "email.failed" | "email.rejected" | "email.clicked" | "email.loaded" | "email.complained" | "email.received" | "email.suppressed" | "email.canceled" | "email.unsubscribed" | "email.resubscribed" | "domain.created" | "domain.updated" | "domain.deleted" | "audience.created" | "audience.updated" | "audience.deleted" | "subscriber.created" | "subscriber.updated" | "subscriber.deleted" | "contact.created" | "contact.updated" | "contact.deleted" | "template.created" | "template.updated" | "template.deleted" | "suppression.created" | "suppression.updated" | "suppression.deleted" | "email_verification.created" | "email_verification.updated" | "email_verification_list.created" | "email_verification_list.updated" | "campaign.created" | "campaign.updated" | "campaign.deleted" | "campaign.scheduled" | "campaign.queued" | "campaign.sending" | "campaign.testing" | "campaign.sent" | "campaign.canceled" | "campaign.archived"[]Event types to subscribe to when all_events is false.filterobject | nullOnly deliver events matching these rules. Null clears the filter.
delete-webhookDeletefullPermanently delete a webhook. Pending deliveries are dropped.
1 argument
idstringrequiredWebhook ID (wh_xxx).
test-webhookExternalfullSend a sample event of the given type to the webhook URL and return the response. Limited to 5 per minute.
2 arguments
idstringrequiredWebhook ID (wh_xxx).type"email.accepted" | "email.scheduled" | "email.delivered" | "email.bounced" | "email.attempted" | "email.failed" | "email.rejected" | "email.clicked" | "email.loaded" | "email.complained" | "email.received" | "email.suppressed" | "email.canceled" | "email.unsubscribed" | "email.resubscribed" | "domain.created" | "domain.updated" | "domain.deleted" | "audience.created" | "audience.updated" | "audience.deleted" | "subscriber.created" | "subscriber.updated" | "subscriber.deleted" | "contact.created" | "contact.updated" | "contact.deleted" | "template.created" | "template.updated" | "template.deleted" | "suppression.created" | "suppression.updated" | "suppression.deleted" | "email_verification.created" | "email_verification.updated" | "email_verification_list.created" | "email_verification_list.updated" | "campaign.created" | "campaign.updated" | "campaign.deleted" | "campaign.scheduled" | "campaign.queued" | "campaign.sending" | "campaign.testing" | "campaign.sent" | "campaign.canceled" | "campaign.archived"requiredEvent type to send, e.g. email.delivered.
reset-webhook-secretDestructivefullRotate the webhook signing secret. The old secret stops working immediately; the new one is returned once.
1 argument
idstringrequiredWebhook ID (wh_xxx).
retry-failed-webhook-requestsActionfullQueue every failed delivery of a webhook for retry and re-enable the webhook.
1 argument
idstringrequiredWebhook ID (wh_xxx).
retry-webhook-requestActionfullQueue one webhook delivery for retry.
2 arguments
idstringrequiredWebhook ID (wh_xxx).request_idstringrequiredWebhook request ID.
Campaigns campaigns
list-campaignsReadfullList marketing campaigns, optionally by status.
4 arguments
pagenumberPage number (default: 1).limitnumberResults per page (max: 100).searchstringSearch by name or subject.status"all" | "draft" | "scheduled" | "sending" | "sent" | "archived"
get-campaignReadfullRetrieve a campaign with its content, recipients, and stats.
1 argument
idstringrequiredCampaign ID (cmp_xxx) or name.
create-campaignCreatefullCreate a draft campaign. Add recipients with update-campaign, then send with send-campaign.
8 arguments
namestringrequiredsubjectstringfrom_emailstringSender address on a verified domain.from_namestringreply_tostringpreview_textstringInbox preview text.contentstringCampaign body in content_type format.content_type"html" | "text" | "mjml"
update-campaignUpdatefullUpdate a draft campaign. Passing recipients replaces the audience list; at least one audience must be included.
10 arguments
idstringrequiredCampaign ID (cmp_xxx) or name.namestringsubjectstringfrom_emailstringSender address on a verified domain.from_namestringreply_tostringpreview_textstringInbox preview text.contentstringCampaign body in content_type format.content_type"html" | "text" | "mjml"recipientsobject[]
delete-campaignDeletefullPermanently delete a campaign that has not been sent.
1 argument
idstringrequiredCampaign ID (cmp_xxx) or name.
send-campaignSendfullSend a campaign to its audiences now, or schedule it with scheduled_at. Delivers to real subscribers, so confirm with the user first.
2 arguments
idstringrequiredCampaign ID (cmp_xxx) or name.scheduled_atstringFuture send time, ISO 8601 or natural language.
cancel-campaignDestructivefullCancel a draft or sending campaign. Scheduled campaigns cannot be canceled; delete them to stop the send. Emails already delivered are not recalled.
1 argument
idstringrequiredCampaign ID (cmp_xxx) or name.
Automations automations
list-automationsReadfullList automations with context, status, and name filters.
7 arguments
pagenumberPage number (default: 1).per_pagenumberResults per page (max: 100).context"contact" | "email" | "event"status"draft" | "running" | "paused" | "stopped" | "archived"namestringName contains.sort"name" | "created_at" | "updated_at" | "last_triggered_at"order"asc" | "desc"
get-automationReadfullRetrieve an automation with its steps and connections.
1 argument
idstringrequiredAutomation ID (aut_xxx).
create-automationCreatefullCreate a draft automation from a trigger step, action steps, and connections between step keys. Start it with start-automation.
6 arguments
context"contact" | "email" | "event"requiredWhat the automation runs on.namestringrequireddescriptionstring | nullsettingsobjectstepsobject[]requiredconnectionsobject[]required
update-automationUpdatefullUpdate an automation. Passing steps or connections replaces the whole graph.
6 arguments
idstringrequiredAutomation ID (aut_xxx).namestringdescriptionstringsettingsobjectstepsobject[]connectionsobject[]
delete-automationDeletefullDelete an automation and stop any runs in progress.
1 argument
idstringrequiredAutomation ID (aut_xxx).
start-automationActionfullStart or resume an automation so new triggers enroll contacts.
1 argument
idstringrequiredAutomation ID (aut_xxx).
pause-automationActionfullPause an automation. Runs in progress wait until it is started again.
1 argument
idstringrequiredAutomation ID (aut_xxx).
stop-automationActionfullStop an automation and cancel runs in progress.
1 argument
idstringrequiredAutomation ID (aut_xxx).
trigger-automationSendfullManually trigger a running automation with an optional payload. Its steps may send real emails.
2 arguments
idstringrequiredAutomation ID (aut_xxx).payloadobjectTrigger data, e.g. { "email": "jane@example.com" }.
list-automation-runsReadfullList runs of an automation, optionally by status.
4 arguments
idstringrequiredAutomation ID (aut_xxx).pagenumberPage number (default: 1).per_pagenumberResults per page (max: 100).status"running" | "completed" | "failed" | "skipped" | "canceled" | "paused"
get-automation-runReadfullRetrieve one automation run with its step history.
2 arguments
idstringrequiredAutomation ID (aut_xxx).run_idstringrequiredAutomation run ID.
get-automation-statsReadfullReturn run totals by status and outcome for an automation.
3 arguments
idstringrequiredAutomation ID (aut_xxx).sincestringISO 8601 start time.untilstringISO 8601 end time.
get-automation-step-statsReadfullReturn totals for one step, including the delivery funnel for send_email steps.
4 arguments
idstringrequiredAutomation ID (aut_xxx).step_keystringrequiredStep key from the automation definition.sincestringISO 8601 start time.untilstringISO 8601 end time.
Forms forms
list-formsReadfullList signup forms with name, type, and status filters.
7 arguments
pagenumberPage number (default: 1).limitnumberResults per page (max: 100).searchstringFree-text search.filtersobject[]Structured filters, combined with AND unless match is "or".match"all" | "or"Combine filters with AND (all, default) or OR.sortstringSort column: name, type, status, created_at.order"asc" | "desc"Sort direction.
get-formReadfullRetrieve a signup form with its definition and settings.
1 argument
idstringrequiredForm ID (frm_xxx).
create-formCreatefullCreate a draft signup form (popup, full page, flyout, embed, or banner).
4 arguments
namestringrequiredtype"popup" | "full_page" | "flyout" | "embed" | "banner"definitionobjectForm steps and fields. Omit on create to start from the default template.settingsobjectDisplay and audience settings.
update-formUpdatefullUpdate a form name, type, definition, or settings.
5 arguments
idstringrequiredForm ID (frm_xxx).namestringtype"popup" | "full_page" | "flyout" | "embed" | "banner"definitionobjectForm steps and fields. Omit on create to start from the default template.settingsobjectDisplay and audience settings.
delete-formDeletefullPermanently delete a form. Embedded copies stop working.
1 argument
idstringrequiredForm ID (frm_xxx).
publish-formActionfullPublish a form so it starts collecting signups.
1 argument
idstringrequiredForm ID (frm_xxx).
unpublish-formActionfullTake a form offline. It stops collecting signups.
1 argument
idstringrequiredForm ID (frm_xxx).
reset-form-tokenDestructivefullRotate the public form token. Existing embed codes stop working until updated.
1 argument
idstringrequiredForm ID (frm_xxx).
Email verification verification
verify-emailCreatefullCheck whether one address is deliverable (syntax, MX, disposable, role, and optional SMTP checks). Uses verification credits.
2 arguments
emailstringrequiredmode"fast" | "full"fast: DNS and syntax checks. full: adds an SMTP mailbox check.
create-verification-listCreatefullVerify up to 10,000 addresses in the background. Uses one verification credit per address; poll get-verification-list for progress.
2 arguments
namestringrequiredemailsstring[]required
list-verification-listsReadfullList bulk verification lists with their progress.
4 arguments
pagenumberPage number (default: 1).limitnumberResults per page (max: 100).status"pending" | "processing" | "completed" | "failed" | "canceled"searchstring
get-verification-listReadfullRetrieve a verification list with progress and result counts.
1 argument
idstringrequiredVerification list ID (evl_xxx).
get-verification-list-resultsReadfullReturn per-address results of a verification list, optionally by status or result.
5 arguments
idstringrequiredVerification list ID (evl_xxx).pagenumberPage number (default: 1).limitnumberResults per page (max: 100).status"pending" | "processing" | "completed" | "failed" | "canceled"result"safe" | "invalid" | "disposable" | "disabled" | "inbox_full" | "unknown"
Events events
list-eventsReadfullList workspace events (email delivered, bounced, clicked, contact created, and more), newest first.
4 arguments
pagenumberPage number (default: 1).limitnumberResults per page (max: 100).typestringEvent type or comma-separated types, e.g. "email.bounced,email.complained".include_databooleanInclude the full event payload. Default false.
get-eventReadfullRetrieve one event with its full payload.
1 argument
idstringrequiredEvent ID (evt_xxx).