Skip to the documentation
MCP server

Sent and scheduled

Mail that went out or is waiting to.

Sent and scheduled tools

ToolWhat it does
listSentEmailsMail the workspace sent or will send, newest first, by status, sender, recipient, tag, broadcast, or a since and until or scheduledFrom and scheduledTo window.
getSentEmailOne sent or scheduled email: its status, when it is due or went out, what went wrong and where it stands with each recipient.
listEmailEventsWhat happened to one email, oldest first: sent, failed, rescheduled and, when tracked, every open, click and download.
rescheduleEmailMove an email that has not gone yet to a new time, an ISO 8601 instant or a duration such as PT2H.
updateScheduledEmailChange the subject, body, sender or recipients of an email that has not gone yet.
cancelEmailStop an email that has not gone yet. It cannot be brought back, only sent again.

Reading needs “Read sent messages and their delivery status” (emails:read), and moving, changing or cancelling needs “Send email” (emails:send). A client limited to some addresses reaches only the mail sent from them, and someone whose role does not reach every address may move, change or cancel only the mail they sent.

A message translated when it was accepted keeps its wording, and one that was encrypted keeps its wording and its recipients, so updateScheduledEmail refuses to change them. Cancel it and send again instead.

In the app’s chat, cancelEmail always asks first, and moving or changing an email asks unless you asked for it.

Reference

listSentEmails

Scopesemails:readThe app's assistant runs it without askingToolkitsent

Mail this workspace has sent or will send, newest first: messages sent through the app, the API and automations, with their status. status keeps some statuses: queued and scheduled are still waiting, sending, sent, partial, bounced, failed and cancelled are not. bounced means every recipient refused it after it left, partial that only some recipients have it. scheduledFrom and scheduledTo, ISO 8601 instants, keep the messages scheduled inside that window, which with status scheduled and queued is what is waiting to go out. since and until keep the messages made inside a window, recipient the ones that went to one address as a to, cc or bcc recipient, and tag the ones sent with a tag: name for any value, name:value for one, matched exactly. When more follow, the last line gives a cursor.

Inputs

statusstring[]
One of"queued""scheduled""sending""sent""partial""bounced""cancelled""failed"
fromstring
scheduledFromstring
Formatdate-time
scheduledTostring
Formatdate-time
sincestring
Formatdate-time
untilstring
Formatdate-time
recipientstring
Up to 320 charactersFormatemail
tagstring
1 to 330 characters
broadcastIdstring
limitinteger
At least 1At most 100
cursorstring

Also available in

API
GET /emails
TypeScript
emails.list()emails.listAll()emails.iterate()
Python
emails.list()emails.list_all()emails.iterate()
Ruby
emails.listemails.list_allemails.iterate
PHP
emails->listemails->listAllemails->iterate
Go
Emails.ListEmails.ListAllEmails.Iterate
Java
emails().listemails().listAllemails().iterate
C#
Emails.ListAsyncEmails.ListAllAsyncEmails.IterateAsync

listEmailEvents

Scopesemails:readThe app's assistant runs it without askingToolkitsent

What happened to one sent email, oldest first: accepted, queued, scheduled, sent, failed, cancelled, rescheduled and, when it was tracked, every counted open, click and download. When more follow, the last line gives a cursor.

Inputs

idstringRequired
Not empty
limitinteger
At least 1At most 100
cursorstring

Also available in

API
GET /emails/{id}/events
TypeScript
emails.listEvents()emails.listAllEvents()emails.iterateEvents()
Python
emails.list_events()emails.list_all_events()emails.iterate_events()
Ruby
emails.list_eventsemails.list_all_eventsemails.iterate_events
PHP
emails->listEventsemails->listAllEventsemails->iterateEvents
Go
Emails.ListEventsEmails.ListAllEventsEmails.IterateEvents
Java
emails().listEventsemails().listAllEventsemails().iterateEvents
C#
Emails.ListEventsAsyncEmails.ListAllEventsAsyncEmails.IterateEventsAsync

rescheduleEmail

Scopesemails:sendThe app's assistant asks first unless you asked for itToolkitsent

Move a scheduled or queued email to a new time. scheduledAt is an ISO 8601 instant or a duration such as PT2H, in the future and at most a year out. getCurrentDate gives the time now.

Inputs

idstringRequired
Not empty
scheduledAtstringRequired
Not empty

Also available in

API
PATCH /emails/{id}
TypeScript
emails.reschedule()emails.update()
Python
emails.reschedule()emails.update()
Ruby
emails.rescheduleemails.update
PHP
emails->rescheduleemails->update
Go
Emails.RescheduleEmails.Update
Java
emails().rescheduleemails().update
C#
Emails.RescheduleAsyncEmails.UpdateAsync

updateScheduledEmail

Scopesemails:sendThe app's assistant asks first unless you asked for itToolkitsent

Change an email that has not gone yet: its subject, its body as html or text, the address it goes out as, or who it goes to. A recipient list replaces the stored one whole. A field you leave out keeps its value. A message translated when it was accepted keeps its wording, and one that was encrypted keeps its wording and its recipients, so cancel it and send again instead.

Inputs

idstringRequired
Not empty
subjectstring
Up to 998 characters
htmlstring
Up to 1000000 characters
textstring
Up to 1000000 characters
fromstring
toobject[]
1 to 50 items
emailstringRequired
Up to 320 charactersFormatemail
namestring
Up to 128 characters
ccobject[]
Up to 50 items
emailstringRequired
Up to 320 charactersFormatemail
namestring
Up to 128 characters
bccobject[]
Up to 50 items
emailstringRequired
Up to 320 charactersFormatemail
namestring
Up to 128 characters

Also available in

API
PATCH /emails/{id}
TypeScript
emails.reschedule()emails.update()
Python
emails.reschedule()emails.update()
Ruby
emails.rescheduleemails.update
PHP
emails->rescheduleemails->update
Go
Emails.RescheduleEmails.Update
Java
emails().rescheduleemails().update
C#
Emails.RescheduleAsyncEmails.UpdateAsync

cancelEmail

Scopesemails:sendThe app's assistant always asks firstToolkitsent

Stop an email that has not gone yet: a scheduled one, or one still inside its undo window. It cannot be brought back afterwards, only sent again. One that has already gone cannot be cancelled. Cancelling twice is not an error.

Inputs

idstringRequired
Not empty

Also available in

API
POST /emails/{id}/cancel
TypeScript
emails.cancel()
Python
emails.cancel()
Ruby
emails.cancel
PHP
emails->cancel
Go
Emails.Cancel
Java
emails().cancel
C#
Emails.CancelAsync