Mailchimp
Email marketing. Manage audiences, members, and tags, build segments, send campaigns, and read how each one performed.
| Property | Value |
|---|---|
| Slug | mailchimp |
| Definition version | 0.1.0 |
| Base URL | https://api.mailchimp.com/3.0 |
| Auth schemes | oauth2, api_key |
| Action tools | 39 |
| By class | 14 read, 18 write, 7 destructive |
| Triggers | 0 |
| Provider rate limit | not declared, so outbound calls are unpaced |
Measured routing accuracy
72 golden cases replayed through the router over the whole index: measured over corpus ea4f12ad2948 (65 toolkits, 2283 tools indexed and 13 declared uncallable), 39 cases written by hand and 33 cases from the paraphrase pass. A case counts as top-1 when its gold tool ranked first and top-8 when it reached the slate at all.
| Measure | Cases | Share |
|---|---|---|
| top-1 | 43/72 | 59.7% |
| top-8 | 68/72 | 94.4% |
The sweep is offline: the reranker is a deterministic identity fake that returns candidates in the order retrieval produced them, so top-1 measures retrieval order rather than a reranked slate. just eval-live measures the same cases through the live reranker.
Authentication
Connect an entity with ConnectionsService.InitiateConnection, naming this toolkit's slug. Credentials stay in the connections vault; callers hold connected-account ids only.
oauth2
| Property | Value |
|---|---|
| Authorization URL | https://login.mailchimp.com/oauth2/authorize |
| Token URL | https://login.mailchimp.com/oauth2/token |
| Refresh tokens | no, so the end user reauthorizes when the token expires |
api_key
| Property | Value |
|---|---|
| Placement | header |
| Name | Authorization |
| Rendered as | Basic {key} |
Submit the key with ConnectionsService rather than putting it in a request; it is sealed at rest and never returned.
Tools
39 action tools. The catalog-wide slug is mailchimp.<tool>, which is what search_tools returns and call_tool takes.
mailchimp.list_audiences
List the mailing list audiences in a Mailchimp account, paginated. Use when the user asks what audiences, lists, or subscriber groups exist in Mailchimp, rather than looking for one specific audience.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /lists.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
count | integer | no | Page size, default 10. |
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
offset | integer | no | Number of audiences to skip, for pagination. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
lists | array of object | |
lists[].id | string | |
lists[].name | string | |
lists[].permission_reminder | string | |
lists[].stats | object | |
lists[].stats.member_count | integer | |
lists[].stats.unsubscribe_count | integer | |
total_items | integer |
Also retrieved by: "what mailing lists do we have set up", "show every subscriber group in the account", "browse all our newsletter lists", "see what audiences exist".
mailchimp.get_audience
Get one Mailchimp audience's full details by list id: name, permission reminder text, default from-name and reply-to, and subscriber stats. Use when the user names a specific audience or mailing list rather than browsing all of them.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /lists/{{params.list_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
list_id | string | yes | Mailchimp audience (list) id. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
campaign_defaults | object | |
campaign_defaults.from_email | string | |
campaign_defaults.from_name | string | |
campaign_defaults.language | string | |
campaign_defaults.subject | string | |
id | string | |
name | string | |
permission_reminder | string | |
stats | object | |
stats.click_rate | number | |
stats.member_count | integer | |
stats.open_rate | number | |
stats.unsubscribe_count | integer |
Also retrieved by: "pull up details on the newsletter list", "show me this subscriber group's info", "check the settings on one mailing list".
mailchimp.create_audience
Create a new mailing list audience in Mailchimp. Use when the user wants to start a new subscriber list or audience, not add a person to an existing one. Requires a name, permission reminder, and default from-name, from-email, subject, and language for campaigns sent to it.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /lists.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
email_type_option | boolean | no | Whether subscribers may choose plain-text over HTML email. |
from_email | string | yes | Default "from" email address for campaigns sent to this audience. |
from_name | string | yes | Default "from" name for campaigns sent to this audience. |
language | string | yes | Default subscriber language, e.g. "en". |
name | string | yes | Audience name, e.g. "Newsletter Subscribers". |
permission_reminder | string | yes | Text reminding subscribers why they are receiving mail from this audience, shown in every campaign footer. |
subject_default | string | yes | Default campaign subject line for this audience. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
id | string | |
name | string | |
permission_reminder | string |
Also retrieved by: "start a brand new subscriber list", "set up a new newsletter audience", "build a fresh mailing list from scratch", "spin up a new group of subscribers".
mailchimp.update_audience
Update an existing Mailchimp audience's name, permission reminder, or default campaign settings. Use when the user wants to edit an audience rather than create a new one or change a single member.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PATCH /lists/{{params.list_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
from_email | string | no | New default "from" email address for this audience. |
from_name | string | no | New default "from" name for campaigns sent to this audience. |
list_id | string | yes | Mailchimp audience (list) id. |
name | string | no | New audience name. |
permission_reminder | string | no | New permission reminder text. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
id | string | |
name | string | |
permission_reminder | string |
Also retrieved by: "fix the reminder text on this mailing list", "change the default sender for this newsletter", "edit the settings on a subscriber group".
mailchimp.delete_audience
Permanently delete a Mailchimp audience and every member, tag, and segment inside it. Use when the user wants to remove, purge, or erase an entire mailing list, not unsubscribe one person. Irreversible.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /lists/{{params.list_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
list_id | string | yes | Mailchimp audience (list) id. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
deleted | boolean |
Also retrieved by: "wipe out this entire mailing list", "get rid of a subscriber group for good", "erase this newsletter list completely", "scrap this whole audience".
mailchimp.add_list_member
Add a new subscriber to a Mailchimp audience, or update one that already exists there. Use when the user wants to subscribe, sign up, or add someone's email to a mailing list. Requires the audience and an email address; status defaults to "subscribed".
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /lists/{{params.list_id}}/members.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
email_address | string | yes | Subscriber's email address. |
first_name | string | no | Subscriber's first name, stored as the FNAME merge field. |
last_name | string | no | Subscriber's last name, stored as the LNAME merge field. |
list_id | string | yes | Mailchimp audience (list) id. |
status | string | no | Subscription status: "subscribed", "unsubscribed", "cleaned", or "pending" (double opt-in). Defaults to "subscribed". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
email_address | string | |
id | string | |
merge_fields | object | |
merge_fields.FNAME | string | |
merge_fields.LNAME | string | |
status | string |
Also retrieved by: "sign someone up for the newsletter", "add this email to the mailing list", "get a new person subscribed", "put someone on our email list".
mailchimp.get_list_member
Get one Mailchimp subscriber's full record by audience and subscriber hash: email, subscription status, merge fields, and tags. Use when the user names a specific person already on the list. For finding a subscriber by name or partial email use search_members instead.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /lists/{{params.list_id}}/members/{{params.subscriber_hash}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
list_id | string | yes | Mailchimp audience (list) id. |
subscriber_hash | string | yes | MD5 hash of the subscriber's lowercased email address. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
email_address | string | |
id | string | |
merge_fields | object | |
merge_fields.FNAME | string | |
merge_fields.LNAME | string | |
status | string | |
tags | array of object | |
tags[].id | integer | |
tags[].name | string |
Also retrieved by: "pull up a subscriber's profile", "check what we have on file for this person", "look up someone's subscription status".
mailchimp.update_list_member
Update fields on an existing Mailchimp subscriber: subscription status, first name, or last name. Use when the user wants to edit or correct a subscriber's record, or resubscribe or unsubscribe them, not add a new person.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PATCH /lists/{{params.list_id}}/members/{{params.subscriber_hash}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
first_name | string | no | New first name, stored as the FNAME merge field. |
last_name | string | no | New last name, stored as the LNAME merge field. |
list_id | string | yes | Mailchimp audience (list) id. |
status | string | no | New subscription status: "subscribed", "unsubscribed", "cleaned", or "pending". |
subscriber_hash | string | yes | MD5 hash of the subscriber's lowercased email address. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
email_address | string | |
id | string | |
status | string |
Also retrieved by: "fix this subscriber's name on file", "resubscribe someone who opted out", "correct a person's info on the mailing list", "unsubscribe this person from the newsletter".
mailchimp.list_members
List the subscribers in a Mailchimp audience, paginated, optionally filtered by subscription status. Use for browsing or exporting an audience's membership rather than looking for one specific subscriber.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /lists/{{params.list_id}}/members.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
count | integer | no | Page size, default 10. |
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
list_id | string | yes | Mailchimp audience (list) id. |
offset | integer | no | Number of members to skip, for pagination. |
status | string | no | Filter to one status: "subscribed", "unsubscribed", "cleaned", or "pending". Omit to list every status. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
members | array of object | |
members[].email_address | string | |
members[].id | string | |
members[].status | string | |
total_items | integer |
Also retrieved by: "show me everyone on this mailing list", "browse the subscribers in this audience", "export the whole newsletter list", "see who's on this list right now".
mailchimp.search_members
Search for a Mailchimp subscriber across some or all audiences by name or partial email address. Use when the user describes a person rather than naming a known audience and subscriber hash.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /search-members.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
list_id | string | no | Restrict the search to one audience. Omit to search every audience. |
query | string | yes | Free-text search over email address and name. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
exact_matches | object | |
exact_matches.members | array of object | |
exact_matches.members[].email_address | string | |
exact_matches.members[].id | string | |
exact_matches.members[].list_id | string | |
exact_matches.members[].status | string | |
exact_matches.total_items | integer |
Also retrieved by: "find a subscriber by their email", "look up someone across all our lists", "hunt down a person's subscription record".
mailchimp.archive_list_member
Archive a Mailchimp subscriber, removing them from the active audience without erasing their history. Use when the user wants to unsubscribe, remove, or take someone off a mailing list. Recoverable by re-adding the same email address; for a full, irreversible erasure use permanently_delete_list_member instead.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /lists/{{params.list_id}}/members/{{params.subscriber_hash}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
list_id | string | yes | Mailchimp audience (list) id. |
subscriber_hash | string | yes | MD5 hash of the subscriber's lowercased email address. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
archived | boolean |
Also retrieved by: "take this person off the mailing list", "remove someone from the newsletter", "unsubscribe this contact from the list".
mailchimp.permanently_delete_list_member
Permanently erase a Mailchimp subscriber's data from an audience: the email address, merge fields, and history stop existing everywhere, including exports. Use when the user wants a person's data wiped entirely, for example a GDPR deletion request, not a normal unsubscribe. Irreversible.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls POST /lists/{{params.list_id}}/members/{{params.subscriber_hash}}/actions/delete-permanent.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
list_id | string | yes | Mailchimp audience (list) id. |
subscriber_hash | string | yes | MD5 hash of the subscriber's lowercased email address. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
deleted | boolean |
Also retrieved by: "wipe this person's data for good, gdpr request", "erase someone's email entirely from every list", "scrub a subscriber's info completely".
mailchimp.tag_member
Add one or more tags to a Mailchimp subscriber, for example to mark them "VIP" or "webinar-attendee". Use when the user wants to label or categorize a subscriber for later segmentation, not remove a tag.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /lists/{{params.list_id}}/members/{{params.subscriber_hash}}/tags.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
list_id | string | yes | Mailchimp audience (list) id. |
subscriber_hash | string | yes | MD5 hash of the subscriber's lowercased email address. |
tags | array of string | yes | Tag names to add, e.g. ["VIP", "webinar-attendee"]. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
tagged | boolean |
Also retrieved by: "label this subscriber as a vip", "mark someone as a webinar attendee", "add a category tag to a contact".
mailchimp.untag_member
Remove one or more tags from a Mailchimp subscriber. Use when the user wants to un-label a subscriber or take them out of a tag-based segment, not add a new tag.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /lists/{{params.list_id}}/members/{{params.subscriber_hash}}/tags.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
list_id | string | yes | Mailchimp audience (list) id. |
subscriber_hash | string | yes | MD5 hash of the subscriber's lowercased email address. |
tags | array of string | yes | Tag names to remove. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
untagged | boolean |
Also retrieved by: "take a label off this subscriber", "remove someone's vip tag", "drop a tag from a contact's profile".
mailchimp.list_segments
List the segments defined on a Mailchimp audience, paginated. Use when the user asks what segments or saved groups exist within an audience, rather than looking for one specific segment.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /lists/{{params.list_id}}/segments.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
count | integer | no | Page size, default 10. |
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
list_id | string | yes | Mailchimp audience (list) id. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
segments | array of object | |
segments[].id | integer | |
segments[].member_count | integer | |
segments[].name | string | |
segments[].type | string | |
total_items | integer |
Also retrieved by: "what groups have we carved out of this list", "show the saved segments on this audience", "browse the subsets of this mailing list".
mailchimp.create_segment
Create a new segment on a Mailchimp audience: either a static segment you add specific members to, or a saved match rule that Mailchimp evaluates automatically. Use when the user wants to build a named subset of an audience for targeted sending.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /lists/{{params.list_id}}/segments.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
list_id | string | yes | Mailchimp audience (list) id. |
name | string | yes | Segment name, e.g. "Opened last campaign". |
static_member_emails | array of string | no | Email addresses to seed a static segment with. Omit to create an empty static segment. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
id | integer | |
member_count | integer | |
name | string |
Also retrieved by: "build a new group within this audience", "carve out a targeted subset of subscribers", "set up a saved segment for this list".
mailchimp.get_segment
Get one Mailchimp segment's details by audience and segment id: its name, type, and member count. Use when the user names a specific segment rather than browsing all of them.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /lists/{{params.list_id}}/segments/{{params.segment_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
list_id | string | yes | Mailchimp audience (list) id. |
segment_id | string | yes | Mailchimp segment id. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
id | integer | |
member_count | integer | |
name | string | |
type | string |
Also retrieved by: "check how many people are in this segment", "pull up details on this saved group", "look at what this subset of the audience contains".
mailchimp.add_members_to_segment
Add existing audience members to a static Mailchimp segment by email address. Use when the user wants to grow a hand-picked segment, not a rule-based one that updates itself.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /lists/{{params.list_id}}/segments/{{params.segment_id}}/members.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
email_addresses | array of string | yes | Email addresses of existing members to add to the segment. |
list_id | string | yes | Mailchimp audience (list) id. |
segment_id | string | yes | Mailchimp segment id. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
members_added | integer |
Also retrieved by: "drop these subscribers into the vip segment", "add specific people to a saved group", "grow a hand-picked subset with more emails".
mailchimp.delete_segment
Permanently delete a Mailchimp segment definition. Use when the user wants to remove a saved segment or group entirely. Deletes only the segment definition, not the members within it, but the segment itself cannot be recovered.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /lists/{{params.list_id}}/segments/{{params.segment_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
list_id | string | yes | Mailchimp audience (list) id. |
segment_id | string | yes | Mailchimp segment id. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
deleted | boolean |
Also retrieved by: "remove this saved group definition", "get rid of a segment we no longer need", "scrap this subset entirely".
mailchimp.list_campaigns
List Mailchimp email campaigns across the account, paginated, optionally filtered by status. Use when the user asks what campaigns or email blasts exist, rather than looking for one specific campaign.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /campaigns.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
count | integer | no | Page size, default 10. |
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
offset | integer | no | Number of campaigns to skip, for pagination. |
status | string | no | Filter by status: "save" (draft), "paused", "schedule", "sending", or "sent". Omit to list every status. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
campaigns | array of object | |
campaigns[].id | string | |
campaigns[].settings | object | |
campaigns[].settings.subject_line | string | |
campaigns[].settings.title | string | |
campaigns[].status | string | |
total_items | integer |
Also retrieved by: "what email blasts have we sent or drafted", "show every newsletter campaign", "browse our past and upcoming sends".
mailchimp.get_campaign
Get one Mailchimp campaign's full details by id: status, subject line, audience, send time, and settings. Use when the user names a specific campaign or email blast rather than browsing all of them.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /campaigns/{{params.campaign_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
campaign_id | string | yes | Mailchimp campaign id. |
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
id | string | |
recipients | object | |
recipients.list_id | string | |
send_time | string (date-time) | |
settings | object | |
settings.from_name | string | |
settings.reply_to | string | |
settings.subject_line | string | |
settings.title | string | |
status | string |
Also retrieved by: "pull up details on this email blast", "check the status of a newsletter send", "show me what this campaign's set up to do".
mailchimp.create_campaign
Create a new Mailchimp email campaign as a draft, targeting one audience. Use when the user wants to start, draft, or set up a new email blast or newsletter, not send one immediately. Requires the audience and a subject line; set the body afterward with set_campaign_content.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /campaigns.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
from_name | string | yes | From" name shown to recipients. |
list_id | string | yes | Mailchimp audience (list) id to send this campaign to. |
reply_to | string | yes | Reply-to email address. |
subject_line | string | yes | Email subject line. |
title | string | no | Internal campaign title, not shown to recipients. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
id | string | |
settings | object | |
settings.subject_line | string | |
settings.title | string | |
status | string |
Also retrieved by: "start drafting a new email blast", "set up a new newsletter to send later", "kick off a fresh campaign draft".
mailchimp.update_campaign_settings
Update an existing Mailchimp campaign's subject line, from-name, reply-to, or title before it sends. Use when the user wants to edit a draft or scheduled campaign's settings, not its body content.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PATCH /campaigns/{{params.campaign_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
campaign_id | string | yes | Mailchimp campaign id. |
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
from_name | string | no | New "from" name shown to recipients. |
reply_to | string | no | New reply-to email address. |
subject_line | string | no | New email subject line. |
title | string | no | New internal campaign title. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
id | string | |
settings | object | |
settings.subject_line | string | |
settings.title | string |
Also retrieved by: "change the subject line on this draft", "fix the sender name on this email blast", "edit a campaign's settings before it goes out".
mailchimp.set_campaign_content
Set a Mailchimp campaign's email body as HTML. Use when the user wants to write or replace what a campaign actually says, distinct from its subject line or audience settings.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PUT /campaigns/{{params.campaign_id}}/content.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
campaign_id | string | yes | Mailchimp campaign id. |
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
html | string | yes | The campaign's full email body as HTML. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
html | string |
Also retrieved by: "write the body of this newsletter", "fill in the html for this email blast", "replace what this campaign actually says".
mailchimp.get_campaign_content
Get a Mailchimp campaign's current email body, as HTML and plain text. Use when the user wants to review, read back, or check what a campaign's content currently says.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /campaigns/{{params.campaign_id}}/content.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
campaign_id | string | yes | Mailchimp campaign id. |
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
html | string | |
plain_text | string |
Also retrieved by: "show me what this email currently says", "read back the body of this campaign", "check the content before it sends".
mailchimp.send_test_email
Send a Mailchimp campaign as a test to specific email addresses only, without sending it to the real audience. Use when the user wants to preview, proof, or check a campaign before the real send.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /campaigns/{{params.campaign_id}}/actions/test.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
campaign_id | string | yes | Mailchimp campaign id. |
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
test_emails | array of string | yes | Email addresses to receive the test send. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
sent | boolean |
Also retrieved by: "proof this campaign to my own inbox first", "preview the email blast before sending", "fire a test copy to a few addresses".
mailchimp.schedule_campaign
Schedule a Mailchimp campaign to send at a future time. Use when the user wants to queue, time, or schedule an email blast rather than send it right away. Reversible before the scheduled time with unschedule_campaign.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /campaigns/{{params.campaign_id}}/actions/schedule.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
campaign_id | string | yes | Mailchimp campaign id. |
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
schedule_time | string | yes | When to send the campaign, RFC 3339, in UTC. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
scheduled | boolean |
Also retrieved by: "queue this newsletter for tomorrow morning", "set this email blast to go out later", "time this campaign for a future date".
mailchimp.unschedule_campaign
Cancel a Mailchimp campaign's scheduled send and return it to draft. Use when the user wants to stop, pull back, or unschedule a campaign that has not sent yet, not one already sent.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /campaigns/{{params.campaign_id}}/actions/unschedule.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
campaign_id | string | yes | Mailchimp campaign id. |
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
unscheduled | boolean |
Also retrieved by: "pull back a scheduled send before it fires", "stop this campaign from going out as planned", "cancel the scheduled time on this email".
mailchimp.send_campaign
Send a Mailchimp campaign to its audience right now. Use when the user explicitly wants an email blast or newsletter to go out immediately, not scheduled or tested. Irreversible once sent; every recipient in the target audience receives it.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls POST /campaigns/{{params.campaign_id}}/actions/send.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
campaign_id | string | yes | Mailchimp campaign id. |
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
sent | boolean |
Also retrieved by: "blast this newsletter out right now", "send this email to the whole audience", "fire off this campaign immediately".
mailchimp.delete_campaign
Permanently delete a Mailchimp campaign. Use when the user wants to remove a draft or already-sent campaign from the account entirely. Irreversible; deleting a sent campaign does not recall the emails.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /campaigns/{{params.campaign_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
campaign_id | string | yes | Mailchimp campaign id. |
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
deleted | boolean |
Also retrieved by: "remove this draft entirely", "get rid of an old email blast for good", "scrap this campaign completely".
mailchimp.replicate_campaign
Duplicate a Mailchimp campaign into a new draft with the same content and settings. Use when the user wants to reuse, copy, or resend a past campaign as a starting point, rather than build a new one from scratch.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /campaigns/{{params.campaign_id}}/actions/replicate.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
campaign_id | string | yes | Mailchimp campaign id to duplicate. |
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
id | string | |
settings | object | |
settings.title | string | |
status | string |
Also retrieved by: "copy last month's newsletter as a starting point", "duplicate an old email blast", "reuse a past campaign's content".
mailchimp.list_templates
List the reusable email templates saved in a Mailchimp account, paginated. Use when the user asks what templates or email designs exist, rather than looking for one specific template.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /templates.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
count | integer | no | Page size, default 10. |
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
templates | array of object | |
templates[].id | integer | |
templates[].name | string | |
templates[].type | string | |
total_items | integer |
Also retrieved by: "what email designs do we have saved", "show every reusable template", "browse our saved newsletter layouts".
mailchimp.create_template
Save a new reusable email template in Mailchimp from HTML. Use when the user wants to save a design for reuse across future campaigns, not set the content of one specific campaign.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /templates.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
html | string | yes | The template's HTML source. |
name | string | yes | Template name. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
id | integer | |
name | string |
Also retrieved by: "save this html design for reuse", "store a new reusable email layout", "add a fresh template to the library".
mailchimp.delete_template
Permanently delete a saved Mailchimp email template. Use when the user wants to remove a reusable design from the account entirely; existing campaigns already built from it are unaffected.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /templates/{{params.template_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
template_id | string | yes | Mailchimp template id. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
deleted | boolean |
Also retrieved by: "remove a saved design for good", "get rid of an old email layout", "scrap a template we don't use anymore".
mailchimp.list_automations
List the automated email workflows configured in a Mailchimp account, paginated. Use when the user asks what automations, drip campaigns, or autoresponders exist, rather than looking for one specific workflow.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /automations.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
automations | array of object | |
automations[].id | string | |
automations[].settings | object | |
automations[].settings.title | string | |
automations[].status | string | |
total_items | integer |
Also retrieved by: "what drip campaigns are running", "show every autoresponder we've set up", "browse our automated workflows".
mailchimp.pause_automation
Pause every email in a Mailchimp automated workflow, so no further sends go out until it is restarted. Use when the user wants to stop or hold an automation or drip campaign temporarily, not delete it.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /automations/{{params.workflow_id}}/actions/pause-all-emails.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
workflow_id | string | yes | Mailchimp automation workflow id. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
paused | boolean |
Also retrieved by: "stop this drip campaign temporarily", "hold off on this autoresponder for now", "freeze an automated workflow".
mailchimp.start_automation
Resume every email in a paused Mailchimp automated workflow. Use when the user wants to restart, resume, or turn back on an automation or drip campaign that was previously paused.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /automations/{{params.workflow_id}}/actions/start-all-emails.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
workflow_id | string | yes | Mailchimp automation workflow id. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
started | boolean |
Also retrieved by: "turn this drip campaign back on", "resume a paused autoresponder", "restart an automated workflow".
mailchimp.get_campaign_report
Get a sent Mailchimp campaign's performance report: emails sent, opens, clicks, unsubscribes, and bounces. Use when the user asks how a campaign performed, its open rate, or its click rate, not its content or settings.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /reports/{{params.campaign_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
campaign_id | string | yes | Mailchimp campaign id. |
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
bounces | object | |
bounces.hard_bounces | integer | |
bounces.soft_bounces | integer | |
campaign_title | string | |
clicks | object | |
clicks.click_rate | number | |
clicks.clicks_total | integer | |
clicks.unique_clicks | integer | |
emails_sent | integer | |
id | string | |
opens | object | |
opens.open_rate | number | |
opens.opens_total | integer | |
opens.unique_opens | integer | |
unsubscribed | integer |
Also retrieved by: "how did this newsletter perform", "check the open rate on this email blast", "what's the click rate on our last campaign", "pull up performance numbers for this send".
mailchimp.get_account_info
Get the connected Mailchimp account's own details: account name, contact email, plan type, and total subscriber count. Use to confirm which Mailchimp account is connected, or when the user asks about their own account rather than a specific audience or campaign.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
dc | string | yes | Mailchimp account datacenter, e.g. "us21". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
account_id | string | |
account_name | string | |
email | string | |
pricing_plan_type | string | |
total_subscribers | integer |
Also retrieved by: "which mailchimp account is this connected to", "check our plan and subscriber count", "what account are we hooked up to".