Mailcoach integration
Mailcoach (by Spatie) is an email marketing and transactional email platform. An agent can manage email lists, their tags and tag-based segments, subscribers (subscribe, confirm, unsubscribe, resubscribe, tag), subscriber imports from CSV, templates, campaigns (create, schedule, send, test-send, pause, resume, and read opens, clicks, unsubscribes and bounces), automation mails, individual sends, tracked links and the suppression list; send and resend transactional emails and read their log; upload images for email content; and trigger an automation's webhook trigger for subscribers. Sending, scheduling, confirmation and automation tools email real people. Rate limits: 5 requests per second per token (50 for transactional email routes). Authentication is a Mailcoach API token sent as a Bearer token, on your Mailcoach domain (yourteam.mailcoach.app, or your self-hosted domain).
Say what should happen.
The workflow builds itself.
What you can do with Mailcoach
Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.
Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.
Subscriber, 13 operations
confirm_subscriberConfirm subscriberPOSTConfirms an unconfirmed subscriber (double opt-in) by uuid.confirm_subscriber_by_emailConfirm subscriber by emailPOSTConfirms an unconfirmed subscriber of this list, found by email address (to use when you have no subscriber uuid).create_subscriberCreate subscriberPOSTSubscribes an email address to a list and returns the subscriber with its uuid. Passed tags are synced to it. skip_confirmation true skips the list's double opt-in email.delete_subscriberDelete subscriberDELETEDeletes a subscriber for good.get_subscriberGet subscriberGETGets one subscriber: email, first and last name, extra attributes, tags, list, subscribed and unsubscribed dates.list_subscribersList subscribersGETLists subscribers of an email list (email, names, extra attributes, tags, subscription dates); filter by exact email, status, search text, tags or segment. Paginated: pass page, read meta.last_page.resend_confirmation_by_emailResend confirmation by emailPOSTEmails the confirmation request again to an unconfirmed subscriber of this list, found by email address. Sends a real email.resend_subscriber_confirmationResend subscriber confirmationPOSTEmails the confirmation request again to an unconfirmed subscriber, by uuid. Sends a real email.resubscribe_subscriberResubscribe subscriberPOSTResubscribes a previously unsubscribed subscriber by uuid.resubscribe_subscriber_by_emailResubscribe subscriber by emailPOSTResubscribes a previously unsubscribed address to this list, found by email address.unsubscribe_subscriberUnsubscribe subscriberPOSTUnsubscribes a subscriber by uuid: they stop receiving the list's campaigns and automations.unsubscribe_subscriber_by_emailUnsubscribe subscriber by emailPOSTUnsubscribes a subscribed address from this list, found by email address. The subscriber stops receiving the list's campaigns and automations.update_subscriberUpdate subscriberPUTUpdates a subscriber's email, names, extra attributes or tags. Passed tags replace the current ones unless append_tags is true. Returns the updated subscriber.
Campaign, 9 operations
create_campaignCreate campaignPOSTCreates a draft campaign for an email list (name and email_list_uuid required). With schedule_at it is scheduled and will be sent to the list at that time.delete_campaignDelete campaignDELETEDeletes a campaign for good.get_campaignGet campaignGETGets one campaign: status, list, segment, content, schedule, sent date and open, click, unsubscribe and bounce counts and rates.list_campaignsList campaignsGETLists campaigns with status (draft, sending, paused, sent, cancelled), list, segment, schedule and open, click, unsubscribe and bounce statistics; newest sent first. Paginated: pass page, read meta.last_page.pause_campaignPause campaignPOSTPauses a campaign that is sending (no effect if already paused); resume_campaign continues it. Fails with 409 from any other status.resume_campaignResume campaignPOSTResumes sending a paused campaign to its remaining subscribers (no effect if already sending). Fails with 409 from another status or with an invalid segment.send_campaignSend campaignPOSTStarts sending a draft campaign to every subscriber of its list or segment, now. Real emails, cannot be undone (pause_campaign stops the rest). Fails if already sent or without content.send_campaign_testSend campaign testPOSTSends a test of a draft campaign to up to 10 addresses (comma-separated). Sends real emails to those addresses only.update_campaignUpdate campaignPUTUpdates a campaign; name and email_list_uuid are required, so read it with get_campaign first. Setting schedule_at schedules a real send to the list at that time.
Subscriber import, 7 operations
append_to_subscriber_importAppend to subscriber importPOSTAppends more CSV rows to an existing draft subscriber import. Returns the updated import.create_subscriber_importCreate subscriber importPOSTCreates a draft subscriber import from CSV text (an email column required) for a list. Nothing is imported until start_subscriber_import.delete_subscriber_importDelete subscriber importDELETEDeletes a subscriber import record for good.get_subscriber_importGet subscriber importGETGets one subscriber import: status, its CSV, options and imported and error counts. Call it after start_subscriber_import to follow progress.list_subscriber_importsList subscriber importsGETLists subscriber imports with status, target list, options and imported and error counts; filter by list or status. Paginated: pass page, read meta.last_page.start_subscriber_importStart subscriber importPOSTStarts processing a draft subscriber import: subscribes the CSV rows to the list (and, with unsubscribe_others, unsubscribes everyone else). Follow it with get_subscriber_import.update_subscriber_importUpdate subscriber importPUTReplaces a draft import's CSV and options (subscribers_csv and email_list_uuid required). Only imports in draft status can be updated.
Automation mail, 5 operations
create_automation_mailCreate automation mailPOSTCreates an automation mail (name required; subject defaults to the name), from a template with fields or from raw html. Returns it with its uuid.delete_automation_mailDelete automation mailDELETEDeletes an automation mail for good.get_automation_mailGet automation mailGETGets one automation mail: subject, template, content, tracking options and open and click statistics.list_automation_mailsList automation mailsGETLists automation mails (emails sent from automation workflows) with subject, template, content and open and click statistics. Paginated: pass page, read meta.last_page.update_automation_mailUpdate automation mailPUTUpdates an automation mail. name is required: read it with get_automation_mail first and send back the values you keep.
Email list, 5 operations
create_email_listCreate email listPOSTCreates an email list; name and default_from_email are required. Returns the list with its uuid, used by the subscriber, tag, segment and campaign tools.delete_email_listDelete email listDELETEDeletes an email list for good.get_email_listGet email listGETGets one email list and its settings: default sender and reply-to, active subscriber count, form subscription, double opt-in, mailers and report settings.list_email_listsList email listsGETLists email lists with their active subscriber count, default sender and reply-to, form subscription, confirmation and report settings. Paginated: pass page, read meta.last_page.update_email_listUpdate email listPUTUpdates an email list. Mailcoach expects every setting on update (same fields and rules as create): read the list with get_email_list first and send back each value you keep.
Segment, 5 operations
create_segmentCreate segmentPOSTCreates a tag-based segment on an email list: subscribers with the positive_tags and without the negative_tags. Returns its uuid, usable as segment_uuid on campaigns.delete_segmentDelete segmentDELETEDeletes a segment from an email list for good.get_segmentGet segmentGETGets one segment: name, positive and negative tags and whether all of them are required.list_segmentsList segmentsGETLists the segments of an email list: each with its positive and negative tag conditions. Paginated: pass page, read meta.last_page.update_segmentUpdate segmentPUTUpdates a segment's name and tag conditions. name is required: read the segment with get_segment first and send back the values you keep.
Tag, 5 operations
create_tagCreate tagPOSTCreates a tag on an email list. If a tag with that name already exists it is returned instead. visible_in_preferences shows it to subscribers on their preferences page.delete_tagDelete tagDELETEDeletes a tag from an email list for good.get_tagGet tagGETGets one tag of an email list: uuid, name, list, created and updated dates.list_tagsList tagsGETLists the tags of an email list (uuid, name); filter[search] matches the name, filter[type] filters by tag type. Paginated: pass page, read meta.last_page.update_tagUpdate tagPUTRenames a tag or changes whether subscribers see it on their preferences page. name is required: send the current name back if you only change visibility.
Template, 5 operations
create_templateCreate templatePOSTCreates an email template with a name and its html (or structured_html). Returns the template with its uuid, to pass as template_uuid to create_campaign or create_automation_mail.delete_templateDelete templateDELETEDeletes an email template for good.get_templateGet templateGETGets one email template: name, html, structured_html, its placeholder fields, created and updated dates.list_templatesList templatesGETLists email templates (uuid, name, html, fields), sorted by name by default; filter[search] matches the name. Paginated: pass page, read meta.last_page.update_templateUpdate templatePUTUpdates a template. name is required: read the current template with get_template and send its name back if you only change the html.
Suppression, 4 operations
create_suppressionCreate suppressionPOSTAdds an email address to the suppression list, so Mailcoach stops sending it any email (campaigns, automations, transactional). Returns the suppression with its uuid.delete_suppressionDelete suppressionDELETERemoves an address from the suppression list, so Mailcoach can email it again.get_suppressionGet suppressionGETGets one suppression entry: email, reason, created and updated dates.list_suppressionsList suppressionsGETLists suppressed email addresses (addresses Mailcoach never mails), with the reason; filter[search] matches the address, filter[reason] the exact reason. Paginated: pass page, read meta.last_page.
Transactional mail, 4 operations
get_transactional_mailGet transactional mailGETGets one logged transactional email: subject, from, to, cc, bcc, body, html and send date.list_transactional_mailsList transactional mailsGETLists the log of sent transactional emails: subject, from, to, cc, bcc, body, html, date; filter[search] matches the subject, newest first. Paginated: pass page, read meta.last_page.resend_transactional_mailResend transactional mailPOSTSends a logged transactional email again to its original recipients. Real email; fails with 406 when a recipient is on the suppression list.send_transactional_mailSend transactional mailPOSTSends a real transactional email now, from a stored template (mail_name) or with subject and html or text. from and to required. Returns the log uuid (none when store is false).
Send, 3 operations
delete_sendDelete sendDELETEDeletes a send record for good.get_sendGet sendGETGets one send: what was sent to whom, transport message id, sent or failed date and reason, open, click and bounce counts and dates.list_sendsList sendsGETLists sends (one email to one subscriber) with sent or failed date, failure reason, opens, clicks and bounces; filter by subscriber, campaign, automation mail or transactional mail. Paginated: pass page, read meta.last_page.
Subscriber tag, 2 operations
add_subscriber_tagsAdd subscriber tagsPOSTAdds tags (by name) to a subscriber, keeping its other tags. Returns the updated subscriber.remove_subscriber_tagsRemove subscriber tagsDELETERemoves tags (by name) from a subscriber. Returns the updated subscriber.
Transactional mail template, 2 operations
get_transactional_mail_templateGet transactional mail templateGETGets one transactional mail template: name, default recipients, subject, html and whether sends are stored in the log.list_transactional_mail_templatesList transactional mail templatesGETLists transactional mail templates (name, default to, cc, bcc, subject, html). Use a name as mail_name in send_transactional_mail. Paginated: pass page, read meta.last_page.
Automation, 1 operation
trigger_automationTrigger automationPOSTFires an automation's Webhook trigger for the given subscribers, which starts the automation (and its emails) for them for real. Fails with 400 when it has no Webhook trigger.
Campaign bounce, 1 operation
list_campaign_bouncesList campaign bouncesGETLists a campaign's bounces, one row per subscriber: email, bounce count and bounce type. Paginated: pass page, read meta.last_page.
Campaign click, 1 operation
list_campaign_clicksList campaign clicksGETLists a campaign's tracked links with their click and unique click counts; filter[search] matches the url. Paginated: pass page, read meta.last_page.
Campaign open, 1 operation
list_campaign_opensList campaign opensGETLists who opened a campaign, one row per subscriber: email, open count, first and last open; sorted by first open, newest first. Paginated: pass page, read meta.last_page.
Campaign unsubscribe, 1 operation
list_campaign_unsubscribesList campaign unsubscribesGETLists who unsubscribed from a campaign: subscriber uuid, email and details, newest first. Paginated: pass page, read meta.last_page.
Image, 1 operation
upload_imagesUpload imagesPOSTUploads 1 to 10 JPEG, PNG, GIF or WebP images (base64, max 8192 KB each by default, no SVG) and returns each hosted url in input order. Does not change any email: put the url into the email's html with an update tool.
Link, 1 operation
get_linkGet linkGETGets one tracked link of a campaign: url, click count and unique click count.
Use Mailcoach from Claude Code, Cursor or Codex
Connect Mailcoach in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its Mailcoach operations become tools the client can call, next to every other integration you connected.
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"
[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"{
"mcpServers": {
"livecontext": {
"type": "http",
"url": "https://livecontext.ai/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}How to connect Mailcoach
- Create your workspace
Sign up free. Nothing to install.
- Connect Mailcoach once
Add your Mailcoach connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.
- Describe the job in chat
The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.
Mailcoach integration FAQ
What can you do with the Mailcoach integration?
LiveContext exposes 76 operations on Mailcoach, covering subscriber, campaign, subscriber import and automation mail.
