MailPoet
New in 3.19.0 (Pro). Two dispatcher tools work with MailPoet 5.x (the free edition is enough):
| Tool | Default | Purpose |
|---|---|---|
mailpoet-read | On | The setup, subscribers, lists, tags, custom fields, newsletters, recipient counts, automations and forms (12 operations) |
mailpoet-write | Off | Subscribers and statuses, imports and tagging, lists, tags and custom fields, newsletters and sending, automation status (25 operations) |
Enable the write tool under Tools > Plugins > MailPoet. EMCP drives MailPoet’s own code in-process: its public API for lists, tags, custom fields and memberships, its save controller for subscribers, its endpoints for newsletters and sending, and its REST routes for automations. Every operation checks MailPoet’s own capability for its domain (mailpoet_manage_subscribers, _segments, _emails, _automations, _forms).
Read first
Section titled “Read first”get-setup: version, double opt-in, the sending method, sender and reply-to, the subscriber limit, the system lists, the active automations, and the write operations you may run.list-subscribers,get-subscriber(by id or email, any case): profile, status, custom fields ascf_{id}, lists with the membership status, tags, emails sent, automation runs.list-lists,list-tags,list-custom-fields,list-newsletters,get-newsletter,get-recipient-count,list-automations,get-automation,list-forms.
Every subscriber, list, tag, newsletter, automation and the custom field definitions answer a version; pass it to every write. A different version is a conflict; force: true writes anyway.
Subscribers
Section titled “Subscribers”create-subscriberwithemail, names,custom_fields,list_ids,tag_ids. An email that exists in any case issubscriber_exists.update-subscriberchanges only the fields you pass;""ornullclears a name or custom field.add_lists,remove_lists,add_tags,remove_tagschange memberships one by one.- MailPoet’s consent record (source, IPs, confirmation dates, tracking consent) is never written.
- Subscribers that mirror a WordPress user or a WooCommerce customer keep their email and names from WordPress (
synced_subscriber) and cannot be deleted here. create-subscriberwithsend_confirmation: true, orsend-confirmation-emaillater, sends MailPoet’s double opt-in email.- Adding a list never changes anyone’s consent: it is refused with
consent_requiredfor anyone who unsubscribed, bounced or went inactive, or is unconfirmed while double opt-in is off, and withsubscriber_trashedfor someone in MailPoet’s trash. set-subscriber-status: unsubscribedruns MailPoet’s own unsubscribe and cannot be undone.subscribedworks only from unconfirmed, withconfirm: true.
Automations and welcome emails
Section titled “Automations and welcome emails”Every write that can subscribe, tag or change a status takes run_automations (default false). While false, EMCP holds MailPoet’s automation triggers, schedules no welcome email and sends no new-subscriber notice. Every answer carries emails: {sent, queued} and the automation runs started.
Batches
Section titled “Batches”import-subscribers and tag-subscribers take up to 200 subscribers per call (dry_run: true counts first). List and tag deletes take up to 500 members. Over a cap the answer is too_many_subscribers and nothing is written.
Newsletters and sending
Section titled “Newsletters and sending”create-newsletterandupdate-newsletterwrite standard newsletters in MailPoet’s block email editor, drafts only.nameis the campaign name MailPoet lists it by (it defaults to the subject); undo restores it.duplicate-newsletter,delete-newsletter.send-test-email(confirm) sends a preview to your own address only.send-newsletter(confirm): now, or atscheduled_atin the site’s local time. MailPoet stores the time in UTC and answers give it in site time withscheduled_at_utc.expected_recipientsmust equalget-recipient-count, or the answer isrecipients_mismatchand nothing is queued. A newsletter to a dynamic segment or with a segment filter answersrecipients_uncountable: send it from MailPoet.unschedule-newslettertakes a scheduled send back to draft, refused within two minutes of the send (sending_imminent): pause it instead.pause-newsletter,resume-newsletter.
Automations
Section titled “Automations”set-automation-status to active needs confirm: true, and MailPoet checks every step first (automation_invalid). Undoing an activation puts it back to draft. deactivating and draft cannot be undone.
On a real site
Section titled “On a real site”From our test run with the fictional Larkspur Kitchen School, recorded over a real MCP connection with MailPoet’s free edition. The MailPoet integration page shows every call the assistant made.

The newsletter in MailPoet’s own email editor, ready to review.

The newsletter while it was scheduled.
Erasure and History
Section titled “Erasure and History”delete-subscriber (confirm) erases a subscriber with their memberships, custom field values and tags, and removes their data from every earlier History entry; a delete in MailPoet’s admin or a WordPress privacy erasure does too.
Most writes can be undone in History. Undo never makes a subscriber sendable or subscribed again, never deletes or changes a membership that says unsubscribed, never undoes the creation of someone who has been emailed, confirmed or opted out since, and never touches a newsletter that started sending, force or not.
