Mailchimp
Read and write a Mailchimp account - audiences and their members, tags and segments, campaigns from draft through send, and the reports afterwards.
Connect a Mailchimp account with an API key to work its email marketing end to end: list audiences with Mailchimp's own member counts, find and update contacts by email address (the MD5 subscriber hash is derived for you), tag and untag them, read the merge fields an audience actually defines, draft a campaign, set its content, send a test, then send or schedule it, and read the open/click/bounce report afterwards. Rates come back as fractions - 0.42 is 42%. Archiving a member is reversible; sending a campaign is not, and this integration never sends as a side effect of anything else. Permanently deleting a contact is intentionally not offered.
Connect
| Credential field | Required | Where it comes from |
|---|---|---|
API key (API_KEY) | Yes | From Account & billing → Extras → API keys in Mailchimp. It ends with the account's data centre (e.g. -us19), which is how Yekar.AI finds the right Mailchimp host - paste the key whole. It carries the full permissions of the Mailchimp user who created it. |
Tools
| Tool | Access | What it does |
|---|---|---|
Whoami (yekar.mailchimp.whoami) | Read | The Mailchimp account this connection's API key belongs to: account name, the login it was created by, the plan, and the total subscriber count. Call this first to confirm which account you are about to write to - a 403 later is about this user's role or plan, not about the key. |
List audiences (yekar.mailchimp.list-audiences) | Read | The audiences (Mailchimp's word for lists) on this account, each with Mailchimp's own member, unsubscribe and cleaned counts and its default from-name/subject. Every member and campaign call needs an audience id, so this is usually the first read. |
Get audience (yekar.mailchimp.get-audience) | Read | One audience with its counts, rating, double-opt-in setting and campaign defaults. The counts are Mailchimp's own totals for the audience, not a page of members. |
List merge fields (yekar.mailchimp.list-merge-fields) | Read | The merge fields defined on an audience - their TAG (FNAME, LNAME, …), type, whether they are required, and any dropdown choices. Read this before writing a member: merge values are keyed by TAG, not by the display name, and a required field with no value fails the whole write. |
List segments and tags (yekar.mailchimp.list-segments) | Read | Segments on an audience, with each one's member count. Mailchimp stores a TAG as a static segment, so tags appear here too - the type field is what tells them apart, and it matters: tagging a member and adding them to a saved segment are different operations. |
List members (yekar.mailchimp.list-members) | Read | A page of an audience's members with their status, merge fields and tags. total is Mailchimp's count for the whole filtered audience - the items are just this page. Archived members are hidden unless you ask for status=archived. |
Get member (yekar.mailchimp.get-member) | Read | One member of an audience by email address, with status, merge fields, tags and engagement rates. A 'not found' here means this address is not on THIS audience (or was permanently deleted) - the same address may well exist on another. |
Search members (yekar.mailchimp.search-members) | Read | Find contacts across every audience (or one) by email address or name. Returns exact matches and fuzzy matches SEPARATELY - a fuzzy match is a resemblance, not an identification, so never write to one without confirming it. |
Add or update member (yekar.mailchimp.upsert-member) | Write | Create a contact on an audience, or update them if the address is already there (Mailchimp's PUT upsert). Repeating the identical call is safe - it converges rather than duplicating. Subscribing someone who previously unsubscribed or bounced is refused by Mailchimp: only they can opt back in, though setting pending sends them a confirmation email. |
Update member (yekar.mailchimp.update-member) | Write | Update an EXISTING member - status, merge fields, language, VIP flag, or the address itself. Fails with not-found if the address is not already on the audience: use Add or update member to create. Changing the address changes Mailchimp's internal id for that member. |
Archive member (yekar.mailchimp.archive-member) | Write | Archive a contact on an audience (Mailchimp's DELETE, which archives rather than erases). They disappear from the audience and stop counting toward the plan, their history is kept, and re-adding them brings them back. This tool cannot permanently delete anyone. |
List member tags (yekar.mailchimp.list-member-tags) | Read | The tags currently on one member of an audience, with when each was added. |
Update member tags (yekar.mailchimp.update-member-tags) | Write | Add and/or remove tags on one member in a single call. Tags named in add that do not exist yet are created on the audience. Removing a tag from a member never deletes the tag itself. |
List campaigns (yekar.mailchimp.list-campaigns) | Read | Campaigns on the account - drafts, scheduled and sent - with subject line, audience, send time and (once sent) the open and click rates. Filter by status to separate what is still editable from what has already gone out. |
Get campaign (yekar.mailchimp.get-campaign) | Read | One campaign's settings and status: subject line, from-name, audience and segment, recipient count, and - once it has been sent - the summary open and click rates. |
Get campaign content (yekar.mailchimp.get-campaign-content) | Read | The HTML and plain-text body of a campaign as stored. Long bodies are cut to fit the prompt budget and the response says so - the campaign itself is never changed by reading it. |
Create campaign (yekar.mailchimp.create-campaign) | Write | Create a regular email campaign as a DRAFT - audience, subject, from-name and optional segment. It is not sent and not scheduled by this call; add the body with Set campaign content, then send or schedule it explicitly. |
Set campaign content (yekar.mailchimp.set-campaign-content) | Write | Replace a draft campaign's body. This is a full replacement, not a patch - whatever you send becomes the campaign. Mailchimp rejects a body with no unsubscribe merge tag, and a campaign that has already been sent cannot be edited at all. |
Send campaign (yekar.mailchimp.send-campaign) | Write | Send a draft campaign to its audience NOW. Irreversible - there is no recall. The campaign must already have content, a verified from-address and a non-empty audience; Mailchimp refuses otherwise. Use Send test email first to check the rendering. |
Schedule campaign (yekar.mailchimp.schedule-campaign) | Write | Schedule a draft campaign to send at a future UTC time. Mailchimp only accepts quarter-hour boundaries, and this refuses anything else locally so the reason is clear. Scheduling is a commitment: the send happens with no further call. |
Send test email (yekar.mailchimp.send-test-email) | Write | Send a proof of a campaign to a handful of addresses. Safe to run on a draft - it does not send the campaign, does not subscribe the test recipients, and leaves the campaign's status alone. |
Get campaign report (yekar.mailchimp.get-campaign-report) | Read | Performance of a sent campaign: emails sent, opens (total and unique), clicks, bounces, unsubscribes, abuse reports and e-commerce totals. Rates are FRACTIONS - 0.42 means 42%. A campaign that has not been sent has no report and reads as not found. |
List campaign reports (yekar.mailchimp.list-reports) | Read | Performance across sent campaigns in one call - the same numbers as Get campaign report, for a window of sends. Use this to compare campaigns rather than fetching each report separately. Rates are fractions. |
List automations (yekar.mailchimp.list-automations) | Read | Classic automations on the account with their status, trigger type and aggregate open/click rates. Read-only: Customer Journeys (Mailchimp's replacement for classic automations) are not driven through this API, so this integration deliberately offers no start/pause. |
Notes
- In Mailchimp, sign in as the user whose permissions Yekar.AI should have - an API key inherits that user's role exactly, and there are no per-key scopes to narrow afterwards.
- Go to Account & billing → Extras → API keys → Create A Key, name it (e.g. "Yekar.AI"), and copy it. Mailchimp shows the full key once.
- Paste it here. The data centre is read from the end of the key (
…-us19), so there is nothing else to configure. - Call Whoami to confirm which Mailchimp account and plan the key resolves to; a later 403 is about that user's role or the account's plan, not about the key.
- Add one credential per Mailchimp account - separate accounts can live on the same connection.