Preview: SendMock has no stable release yet. These docs follow develop.

CLI reference

Email commands

sendmock email attachments

Download one attachment.

sendmock email attachments <emailId> <attachmentIndex>
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
<attachmentIndex>requiredinteger
Position of the file in the email's attachments, starting at 0.Example: 0

Example

sendmock email attachments 01JB7T9Q2R5W8X3Y6Z1A4B7C9D 0

Output with --json: file (application/octet-stream). Exit codes: 0, 1, 2, 3.

API
GET/api/v1/emails/{emailId}/attachments/{attachmentIndex}
MCP tool
sendmock://emails/{emailId}/attachments/{attachmentIndex}
In the app
Mail > open email > Attachments

sendmock email check html

HTML and CSS support across email clients.

sendmock email check <emailId> html
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Example

sendmock email check 01JB7T9Q2R5W8X3Y6Z1A4B7C9D html

Output with --json: HtmlCheckReport. Exit codes: 0, 1, 2.

API
GET/api/v1/emails/{emailId}/html-check
MCP tool
sendmock_email_check
In the app
Mail > open email > Checks

sendmock email check spam

Score the message with the spam rules.

sendmock email check <emailId> spam
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Example

sendmock email check 01JB7T9Q2R5W8X3Y6Z1A4B7C9D spam

Output with --json: SpamCheckReport. Exit codes: 0, 1, 2.

API
POST/api/v1/emails/{emailId}/spam-check
MCP tool
sendmock_email_check
In the app
Mail > open email > Checks

sendmock email check unsubscribe

List-Unsubscribe and one-click unsubscribe checks.

sendmock email check <emailId> unsubscribe
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Example

sendmock email check 01JB7T9Q2R5W8X3Y6Z1A4B7C9D unsubscribe

Output with --json: ListUnsubscribeReport. Exit codes: 0, 1, 2.

API
GET/api/v1/emails/{emailId}/list-unsubscribe
MCP tool
sendmock_email_check
In the app
Mail > open email > Headers

sendmock email click

Record a click on one of the email's links and fire email.clicked.

sendmock email click <emailId> [flags]
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
FlagTypeDescription
--url <url>requiredstring
The link that was clicked; one of the email's links (extracted.links).Example: https://app.test/verify?token=abc123
--source <source>string
Who clicked it: ui (a link in the preview), manual (Simulate click) or api (a script). Defaults to api.One of: ui, manual, apiExample: api
--user-agent <user-agent>string
The browser or client that clicked, kept in the click history. The UI sends its own.Example: Mozilla/5.0 (Macintosh; Intel Mac OS X 14_5)
--webhook <webhook>string[] (repeat for more)
Send this action's webhooks to exactly these endpoints (IDs from GET /api/v1/webhooks/endpoints) instead of the ones the rules pick; an empty list sends none. Leave it out to let the rules decide.Example: ["01JB7T9Q2RENDPOINT00000000"]
--webhook-requests <webhook-requests>WebhookRequestEdit[] (JSON)
Payloads edited for this action, by endpoint: each body is sent as written instead of the rendered one and signed over those bytes. Leave it out to send the rendered payloads.Example: [{"endpoint_id":"01JB7T9Q2RENDPOINT00000000","event_type":"email.bounced","body":"{\"type\":\"email.bounced\",\"data\":{\"reason\":\"edited\"}}","headers":{"x-tenant":"acme"}}]

Example

sendmock email click 01JB7T9Q2R5W8X3Y6Z1A4B7C9D --url 'https://app.test/verify?token=abc123' --source api --user-agent 'Mozilla/5.0 (Macintosh; Intel Mac OS X 14_5)'

Output with --json: nothing. Exit codes: 0, 1, 2, 3.

API
POST/api/v1/emails/{emailId}/clicks
MCP tool
sendmock_email_click
In the app
Mail > open email > click a link in the preview, or Simulate click

sendmock email clicks

Every recorded click on the email's links, newest first.

sendmock email clicks <emailId>
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Example

sendmock email clicks 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Output with --json: EmailClickRecord[]. Exit codes: 0, 1, 2, 3.

API
GET/api/v1/emails/{emailId}/clicks
MCP tool
sendmock_email_clicks
In the app
Mail > open email > Timeline (clicked entries)

sendmock email delete

Delete one email.

sendmock email delete <emailId> [flags]
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
FlagTypeDescription
--yesboolean
Confirms a destructive command; without it the command stops.

Example

sendmock email delete 01JB7T9Q2R5W8X3Y6Z1A4B7C9D --yes

Output with --json: nothing. Exit codes: 0, 1, 2.

API
DELETE/api/v1/emails/{emailId}
MCP tool
sendmock_email_delete
In the app
Mail > open email > Delete

sendmock email delete-all

Delete every email, or only those that match the filters.

sendmock email delete-all --yes [flags]
FlagTypeDescription
--yesboolean
Confirms a destructive command; without it the command stops.
--query <query>string
Search text; supports from:, to: and tag: prefixes.Example: to:[email protected] reset
--from <from>string
Sender contains.Example: [email protected]
--to <to>string
A recipient contains.Example: [email protected]
--tag <tag>string
Has this tag.Example: signup
--unreadboolean
Only unread. --no-unread sets it to false.
--has-attachmentboolean
Only with attachments. --no-has-attachment sets it to false.
--source <source>string
How it arrived: smtp, sendmail, native_api, verify, simulated, or an email provider's key, e.g. sendgrid.Example: smtp
--direction <direction>string
Outbound from your app or inbound to it.One of: outbound, inboundExample: outbound
--project <project>string
Only this project's emails (its key); every project's when not set.Example: shop

Example

sendmock email delete-all --yes --query 'to:[email protected] reset' --from [email protected]

Output with --json: nothing. Exit codes: 0, 1, 2.

API
DELETE/api/v1/emails
MCP tool
sendmock_email_delete_all
In the app
Mail > Delete all

sendmock email forward

Forward as the recipient; the copy arrives as inbound email.

sendmock email forward <emailId> [flags]
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
FlagTypeDescription
--to <to>requiredstring
Where the email is forwarded, e.g. your app's inbound address.Example: [email protected]
--body <body>string
A note above the forwarded message.Example: Can you look at this one?
--from <from>string
Who forwards; defaults to the original recipient.Example: [email protected]
--subject <subject>string
Defaults to Fwd: <original subject>.Example: Fwd: Your invoice
--include-originalboolean
Adds the original below a "Forwarded message" block (default true). --no-include-original sets it to false.
--include-attachmentsboolean
Forwards the original attachments too (default true). --no-include-attachments sets it to false.
--webhook <webhook>string[] (repeat for more)
Send this action's webhooks to exactly these endpoints (IDs from GET /api/v1/webhooks/endpoints) instead of the ones the rules pick; an empty list sends none. Leave it out to let the rules decide.Example: ["01JB7T9Q2RENDPOINT00000000"]
--webhook-requests <webhook-requests>WebhookRequestEdit[] (JSON)
Payloads edited for this action, by endpoint: each body is sent as written instead of the rendered one and signed over those bytes. Leave it out to send the rendered payloads.Example: [{"endpoint_id":"01JB7T9Q2RENDPOINT00000000","event_type":"email.bounced","body":"{\"type\":\"email.bounced\",\"data\":{\"reason\":\"edited\"}}","headers":{"x-tenant":"acme"}}]

Example

sendmock email forward 01JB7T9Q2R5W8X3Y6Z1A4B7C9D --to [email protected] --body 'Can you look at this one?' --from [email protected]

Output with --json: EmailDetail. Exit codes: 0, 1, 2.

API
POST/api/v1/emails/{emailId}/forward
MCP tool
sendmock_email_forward
In the app
Mail > open email > Forward

sendmock email inbound

Create an incoming email from fields or raw MIME; fires email.inbound.

sendmock email inbound [flags]
FlagTypeDescription
--from <from>string
The sender, as an address or Name <address>.Example: Sam <[email protected]>
--to <to>string[] (repeat for more)
The recipients, usually your app's inbound address.Example: ["[email protected]"]
--subject <subject>string
The subject line.Example: Order arrived damaged
--text <text>string
The plain-text body.Example: The box was crushed, can I get a replacement?
--html <html>string
The HTML body.Example: <p>The box was crushed, can I get a replacement?</p>
--raw <raw>string
A whole message (RFC 5322); when set, the other fields are ignored.Example: From: [email protected] To: [email protected] Subject: Hi Hello
--webhook <webhook>string[] (repeat for more)
Send this action's webhooks to exactly these endpoints (IDs from GET /api/v1/webhooks/endpoints) instead of the ones the rules pick; an empty list sends none. Leave it out to let the rules decide.Example: ["01JB7T9Q2RENDPOINT00000000"]
--webhook-requests <webhook-requests>WebhookRequestEdit[] (JSON)
Payloads edited for this action, by endpoint: each body is sent as written instead of the rendered one and signed over those bytes. Leave it out to send the rendered payloads.Example: [{"endpoint_id":"01JB7T9Q2RENDPOINT00000000","event_type":"email.bounced","body":"{\"type\":\"email.bounced\",\"data\":{\"reason\":\"edited\"}}","headers":{"x-tenant":"acme"}}]

Example

sendmock email inbound --from 'Sam <[email protected]>' --to [email protected]

Output with --json: NativeSendResult. Exit codes: 0, 1, 2.

API
POST/api/v1/emails/inbound
MCP tool
sendmock_email_inbound
In the app
Mail > Import .eml > Incoming to your app

sendmock email latest

The newest email to a recipient.

sendmock email latest --to <address> [flags]
FlagTypeDescription
--to <address>requiredstring
The recipient address.Example: [email protected]
--subject <subject>string
Subject contains.Example: Reset your password
--project <project>string
Only this project's emails (its key); every project's when not set.Example: shop

Example

sendmock email latest --to [email protected] --subject 'Reset your password' --project shop

Output with --json: EmailDetail. Exit codes: 0, 1, 2, 3.

API
GET/api/v1/emails/latest
MCP tool
sendmock_email_latest
In the app
Mail > search to:

sendmock email list

Stored emails, newest first, with search and filters.

sendmock email list [flags]
FlagTypeDescription
--cursor <cursor>string
The next_cursor of the previous page.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
--limit <limit>integer
Items per page, 1 to 200 (default 50).Example: 50
--query <query>string
Search text; supports from:, to: and tag: prefixes.Example: to:[email protected] reset
--from <from>string
Sender contains.Example: [email protected]
--to <to>string
A recipient contains.Example: [email protected]
--tag <tag>string
Has this tag.Example: signup
--unreadboolean
Only unread. --no-unread sets it to false.
--has-attachmentboolean
Only with attachments. --no-has-attachment sets it to false.
--source <source>string
How it arrived: smtp, sendmail, native_api, verify, simulated, or an email provider's key, e.g. sendgrid.Example: smtp
--direction <direction>string
Outbound from your app or inbound to it.One of: outbound, inboundExample: outbound
--project <project>string
Only this project's emails (its key); every project's when not set.Example: shop

Example

sendmock email list --cursor 01JB7T9Q2R5W8X3Y6Z1A4B7C9D --limit 50

Output with --json: PageOf_EmailSummary. Exit codes: 0, 1, 2.

API
GET/api/v1/emails
MCP tool
sendmock_email_list
In the app
Mail

sendmock email mime

The MIME tree of the message.

sendmock email mime <emailId>
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Example

sendmock email mime 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Output with --json: MimePart. Exit codes: 0, 1, 2.

API
GET/api/v1/emails/{emailId}/mime
MCP tool
sendmock_email_mime
In the app
Mail > open email > MIME

sendmock email mime-part

Download one MIME part, decoded, by its position in the MIME tree.

sendmock email mime-part <emailId> <partId>
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
<partId>requiredstring
The part's position in the MIME tree, as GET /emails/{emailId}/mime numbers it, e.g. 1.2.Example: 1.2

Example

sendmock email mime-part 01JB7T9Q2R5W8X3Y6Z1A4B7C9D 1.2

Output with --json: file (application/octet-stream). Exit codes: 0, 1, 2, 3.

API
GET/api/v1/emails/{emailId}/mime/{partId}
MCP tool
sendmock://emails/{emailId}/mime/{partId}
In the app
Mail > open email > MIME, download a part

sendmock email open

Record an open and fire email.opened.

sendmock email open <emailId> [flags]
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
FlagTypeDescription
--source <source>string
Who opened it: ui (the SendMock UI), manual (a person marking it) or api (a script). Defaults to api.One of: ui, manual, apiExample: api
--user-agent <user-agent>string
The browser or client that opened it, kept in the open history. The UI sends its own.Example: Mozilla/5.0 (Macintosh; Intel Mac OS X 14_5)
--webhook <webhook>string[] (repeat for more)
Send this action's webhooks to exactly these endpoints (IDs from GET /api/v1/webhooks/endpoints) instead of the ones the rules pick; an empty list sends none. Leave it out to let the rules decide.Example: ["01JB7T9Q2RENDPOINT00000000"]
--webhook-requests <webhook-requests>WebhookRequestEdit[] (JSON)
Payloads edited for this action, by endpoint: each body is sent as written instead of the rendered one and signed over those bytes. Leave it out to send the rendered payloads.Example: [{"endpoint_id":"01JB7T9Q2RENDPOINT00000000","event_type":"email.bounced","body":"{\"type\":\"email.bounced\",\"data\":{\"reason\":\"edited\"}}","headers":{"x-tenant":"acme"}}]

Example

sendmock email open 01JB7T9Q2R5W8X3Y6Z1A4B7C9D --source api --user-agent 'Mozilla/5.0 (Macintosh; Intel Mac OS X 14_5)'

Output with --json: nothing. Exit codes: 0, 1, 2, 3.

API
POST/api/v1/emails/{emailId}/open
MCP tool
sendmock_email_open
In the app
Mail > open email (opening it fires the open)

sendmock email opens

Every recorded open of the email, oldest first.

sendmock email opens <emailId>
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Example

sendmock email opens 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Output with --json: OpenRecord[]. Exit codes: 0, 1, 2, 3.

API
GET/api/v1/emails/{emailId}/opens
MCP tool
sendmock_email_opens
In the app
Mail > open email > Timeline (opened entries)

sendmock email raw

The raw message source.

sendmock email raw <emailId>
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Example

sendmock email raw 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Output with --json: file (message/rfc822). Exit codes: 0, 1, 2.

API
GET/api/v1/emails/{emailId}/raw
MCP tool
sendmock://emails/{emailId}/raw
In the app
Mail > open email > Source, download .eml

sendmock email release

Send the email on through the allowlisted relay.

sendmock email release <emailId> [flags]
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
FlagTypeDescription
--to <to>string[] (repeat for more)
Who receives it on the real SMTP server; empty sends to the original recipients. Every address must match the release allowlist.Example: ["[email protected]"]

Example

sendmock email release 01JB7T9Q2R5W8X3Y6Z1A4B7C9D --to [email protected]

Output with --json: nothing. Exit codes: 0, 1, 2.

API
POST/api/v1/emails/{emailId}/release
MCP tool
sendmock_email_release
In the app
Mail > open email > Release to real SMTP

sendmock email reply

Reply as the recipient; the reply arrives as inbound email.

sendmock email reply <emailId> [flags]
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
FlagTypeDescription
--body <body>string
The reply text, above the quoted original; empty or left out sends no text of its own.Example: Thanks, that fixed it!
--from <from>string
Who replies; defaults to the original recipient.Example: [email protected]
--subject <subject>string
Defaults to Re: <original subject>.Example: Re: Ticket #318 updated
--reply-allboolean
Also sends to the other original recipients, in Cc. --no-reply-all sets it to false.
--include-originalboolean
Quotes the original below an "On ... wrote:" line (default true). --no-include-original sets it to false.
--webhook <webhook>string[] (repeat for more)
Send this action's webhooks to exactly these endpoints (IDs from GET /api/v1/webhooks/endpoints) instead of the ones the rules pick; an empty list sends none. Leave it out to let the rules decide.Example: ["01JB7T9Q2RENDPOINT00000000"]
--webhook-requests <webhook-requests>WebhookRequestEdit[] (JSON)
Payloads edited for this action, by endpoint: each body is sent as written instead of the rendered one and signed over those bytes. Leave it out to send the rendered payloads.Example: [{"endpoint_id":"01JB7T9Q2RENDPOINT00000000","event_type":"email.bounced","body":"{\"type\":\"email.bounced\",\"data\":{\"reason\":\"edited\"}}","headers":{"x-tenant":"acme"}}]

Example

sendmock email reply 01JB7T9Q2R5W8X3Y6Z1A4B7C9D --body 'Thanks, that fixed it!' --from [email protected]

Output with --json: EmailDetail. Exit codes: 0, 1, 2.

API
POST/api/v1/emails/{emailId}/reply
MCP tool
sendmock_email_reply
In the app
Mail > open email > Reply, Reply all

sendmock email send

Native send: JSON with optional base64 attachments.

sendmock email send [flags]
FlagTypeDescription
--from <from>requiredstring
The sender, as an address or Name <address>.Example: Shop <[email protected]>
--to <to>requiredstring[] (repeat for more)
The recipients.Example: ["[email protected]"]
--cc <cc>string[] (repeat for more)
Copy recipients.Example: ["[email protected]"]
--bcc <bcc>string[] (repeat for more)
Hidden copy recipients; stored with the email but not in its headers.Example: ["[email protected]"]
--subject <subject>requiredstring
The subject line.Example: Your order #1042 has shipped
--text <text>string
The plain-text body. Send text, html or both.Example: Hi Sam, your order is on its way.
--html <html>string
The HTML body. Send text, html or both.Example: <p>Hi Sam, your order is <b>on its way</b>.</p>
--headers <headers>object (JSON)
Extra headers, by name.
--tag <tag>string[] (repeat for more)
Tags to file the email under in Mail.Example: ["orders"]
--attachments <attachments>NativeSendAttachment[] (JSON)
Files to attach.Example: [{"filename":"invoice-1042.pdf","content":"JVBERi0xLjQKJcfsj6IK","content_type":"application/pdf","content_id":"logo"}]

Example

sendmock email send --from 'Shop <[email protected]>' --to [email protected] --subject 'Your order #1042 has shipped' --cc [email protected] --bcc [email protected]

Output with --json: NativeSendResult. Exit codes: 0, 1, 2.

API
POST/api/v1/send
MCP tool
sendmock_email_send
In the app
Settings > Connection > Send this request

sendmock email show

One email with bodies, headers, attachments and extracted codes.

sendmock email show <emailId>

Also runs as sendmock email html <emailId>.

ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Example

sendmock email show 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Output with --json: EmailDetail. Exit codes: 0, 1, 2, 3.

API
GET/api/v1/emails/{emailId}
MCP tool
sendmock_email_get
In the app
Mail > open email

sendmock email simulate

Simulate a delivery outcome such as a bounce or complaint.

sendmock email simulate <emailId> <event> [flags]
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
<event>requiredstring
The delivery event to simulate; it is added to the timeline and fires its webhook.One of: delivered, deferred, bounced, complained, unsubscribedExample: bounced
FlagTypeDescription
--bounce-type <bounce-type>string
For bounced only: a hard bounce (the address does not exist) or a soft one (try again later).One of: hard, softExample: hard
--webhook <webhook>string[] (repeat for more)
Send this action's webhooks to exactly these endpoints (IDs from GET /api/v1/webhooks/endpoints) instead of the ones the rules pick; an empty list sends none. Leave it out to let the rules decide.Example: ["01JB7T9Q2RENDPOINT00000000"]
--webhook-requests <webhook-requests>WebhookRequestEdit[] (JSON)
Payloads edited for this action, by endpoint: each body is sent as written instead of the rendered one and signed over those bytes. Leave it out to send the rendered payloads.Example: [{"endpoint_id":"01JB7T9Q2RENDPOINT00000000","event_type":"email.bounced","body":"{\"type\":\"email.bounced\",\"data\":{\"reason\":\"edited\"}}","headers":{"x-tenant":"acme"}}]

Example

sendmock email simulate 01JB7T9Q2R5W8X3Y6Z1A4B7C9D bounced --bounce-type hard --webhook 01JB7T9Q2RENDPOINT00000000

Output with --json: nothing. Exit codes: 0, 1, 2, 3.

API
POST/api/v1/emails/{emailId}/simulate
MCP tool
sendmock_email_simulate
In the app
Mail > open email > Simulate

sendmock email thumbnail

A preview image of an attachment.

sendmock email thumbnail <emailId> <attachmentIndex>
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
<attachmentIndex>requiredinteger
Position of the file in the email's attachments, starting at 0.Example: 0

Example

sendmock email thumbnail 01JB7T9Q2R5W8X3Y6Z1A4B7C9D 0

Output with --json: file (image/*). Exit codes: 0, 1, 2.

API
GET/api/v1/emails/{emailId}/parts/{attachmentIndex}/thumbnail
MCP tool
sendmock://emails/{emailId}/parts/{attachmentIndex}/thumbnail
In the app
Mail > open email > Attachments (thumbnails)

sendmock email timeline

Delivery events: received, delivered, opened, bounced.

sendmock email timeline <emailId>
ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Example

sendmock email timeline 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Output with --json: EmailTimelineEntry[]. Exit codes: 0, 1, 2.

API
GET/api/v1/emails/{emailId}/timeline
MCP tool
sendmock_email_timeline
In the app
Mail > open email > Timeline

sendmock email update

Mark read or unread, or change tags.

sendmock email update <emailId> [flags]

Also runs as sendmock email tag <emailId>.

ArgumentTypeDescription
<emailId>requiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
FlagTypeDescription
--readboolean
Marks the email as read (true) or unread (false). --no-read sets it to false.
--tag <tag>string[] (repeat for more)
Replaces the email's tags; an empty list removes them all.Example: ["signup","qa"]

Example

sendmock email update 01JB7T9Q2R5W8X3Y6Z1A4B7C9D --read --tag signup --tag qa

Output with --json: EmailSummary. Exit codes: 0, 1, 2, 3.

API
PATCH/api/v1/emails/{emailId}
MCP tool
sendmock_email_update
In the app
Mail > open email > Mark as read, tags

sendmock sendmail

Store a raw message as sent by your app, as the sendmail shim does.

sendmock sendmail [flags]
FlagTypeDescription
--file <path>requiredpath
The raw request body (message/rfc822). From a file; - reads stdin.Example: message.eml

Example

sendmock sendmail --file message.eml

Output with --json: NativeSendResult. Exit codes: 0, 1, 2.

API
POST/api/v1/send/raw
MCP tool
sendmock_email_send_raw
In the app
Mail > Import .eml > Sent by your app