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

MCP reference

Email tools

sendmock_email_check

HTML and CSS support across email clients. List-Unsubscribe and one-click unsubscribe checks. Check every link in the message. Score the message with the spam rules.

Toolset email.

  • Read only
InputTypeDescription
kindrequiredstring
Picks what to do. html: HTML and CSS support across email clients. unsubscribe: List-Unsubscribe and one-click unsubscribe checks. links: Check every link in the message. spam: Score the message with the spam rules.One of: html, unsubscribe, links, spamExample: html
email_idrequiredstring
The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Example call

{
  "name": "sendmock_email_check",
  "arguments": {
    "kind": "html",
    "email_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D"
  }
}

Result: HtmlCheckReport | ListUnsubscribeReport | LinkCheckResult[] | SpamCheckReport

API
kind: htmlGET/api/v1/emails/{emailId}/html-checkkind: unsubscribeGET/api/v1/emails/{emailId}/list-unsubscribekind: linksPOST/api/v1/emails/{emailId}/link-checkkind: spamPOST/api/v1/emails/{emailId}/spam-check
CLI
sendmock email check <emailId> html, sendmock email check <emailId> unsubscribe, sendmock email check <emailId> links, sendmock email check <emailId> spam
In the app
Mail > open email > Checks; Mail > open email > Headers

sendmock_email_click

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

Toolset email.

    InputTypeDescription
    email_idrequiredstring
    The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
    urlrequiredstring
    The link that was clicked; one of the email's links (extracted.links).Example: https://app.test/verify?token=abc123
    sourcestring
    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_agentstring
    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_endpoint_idsstring[]
    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_requestsWebhookRequestEdit[]
    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 call

    {
      "name": "sendmock_email_click",
      "arguments": {
        "email_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D",
        "url": "https://app.test/verify?token=abc123",
        "source": "api",
        "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_5)"
      }
    }

    Result: nothing

    API
    POST/api/v1/emails/{emailId}/clicks
    CLI
    sendmock email click <emailId>
    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.

    Toolset email.

    • Read only
    InputTypeDescription
    email_idrequiredstring
    The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

    Example call

    {
      "name": "sendmock_email_clicks",
      "arguments": {
        "email_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D"
      }
    }

    Result: EmailClickRecord[]

    API
    GET/api/v1/emails/{emailId}/clicks
    CLI
    sendmock email clicks <emailId>
    In the app
    Mail > open email > Timeline (clicked entries)

    sendmock_email_delete

    Delete one email.

    Toolset email.

    • Destructive
    • Idempotent
    InputTypeDescription
    email_idrequiredstring
    The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

    Example call

    {
      "name": "sendmock_email_delete",
      "arguments": {
        "email_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D"
      }
    }

    Result: nothing

    API
    DELETE/api/v1/emails/{emailId}
    CLI
    sendmock email delete <emailId>
    In the app
    Mail > open email > Delete

    sendmock_email_delete_all

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

    Toolset email.

    • Destructive
    • Idempotent
    InputTypeDescription
    querystring
    Search text; supports from:, to: and tag: prefixes.Example: to:[email protected] reset
    fromstring
    Sender contains.Example: [email protected]
    tostring
    A recipient contains.Example: [email protected]
    tagstring
    Has this tag.Example: signup
    is_unreadboolean
    Only unread.Example: true
    has_attachmentboolean
    Only with attachments.Example: true
    sourcestring
    How it arrived: smtp, sendmail, native_api, verify, simulated, or an email provider's key, e.g. sendgrid.Example: smtp
    directionstring
    Outbound from your app or inbound to it.One of: outbound, inboundExample: outbound
    projectstring
    Only this project's emails (its key); every project's when not set.Example: shop

    Example call

    {
      "name": "sendmock_email_delete_all",
      "arguments": {
        "query": "to:[email protected] reset",
        "from": "[email protected]"
      }
    }

    Result: nothing

    API
    DELETE/api/v1/emails
    CLI
    sendmock email delete-all --yes
    In the app
    Mail > Delete all

    sendmock_email_forward

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

    Toolset email.

      InputTypeDescription
      email_idrequiredstring
      The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
      torequiredstring
      Where the email is forwarded, e.g. your app's inbound address.Example: [email protected]
      bodystring
      A note above the forwarded message.Example: Can you look at this one?
      fromstring
      Who forwards; defaults to the original recipient.Example: [email protected]
      subjectstring
      Defaults to Fwd: <original subject>.Example: Fwd: Your invoice
      include_originalboolean
      Adds the original below a "Forwarded message" block (default true).Example: true
      include_attachmentsboolean
      Forwards the original attachments too (default true).Example: true
      webhook_endpoint_idsstring[]
      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_requestsWebhookRequestEdit[]
      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 call

      {
        "name": "sendmock_email_forward",
        "arguments": {
          "email_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D",
          "to": "[email protected]",
          "body": "Can you look at this one?",
          "from": "[email protected]"
        }
      }

      Result: EmailDetail

      API
      POST/api/v1/emails/{emailId}/forward
      CLI
      sendmock email forward <emailId>
      In the app
      Mail > open email > Forward

      sendmock_email_get

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

      Toolset email.

      • Read only
      InputTypeDescription
      email_idrequiredstring
      The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

      Example call

      {
        "name": "sendmock_email_get",
        "arguments": {
          "email_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D"
        }
      }

      Result: EmailDetail

      API
      GET/api/v1/emails/{emailId}
      CLI
      sendmock email show <emailId>
      In the app
      Mail > open email

      sendmock_email_inbound

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

      Toolset email.

        InputTypeDescription
        fromstring
        The sender, as an address or Name <address>.Example: Sam <[email protected]>
        tostring[]
        The recipients, usually your app's inbound address.Example: ["[email protected]"]
        subjectstring
        The subject line.Example: Order arrived damaged
        textstring
        The plain-text body.Example: The box was crushed, can I get a replacement?
        htmlstring
        The HTML body.Example: <p>The box was crushed, can I get a replacement?</p>
        rawstring
        A whole message (RFC 5322); when set, the other fields are ignored.Example: From: [email protected] To: [email protected] Subject: Hi Hello
        webhook_endpoint_idsstring[]
        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_requestsWebhookRequestEdit[]
        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 call

        {
          "name": "sendmock_email_inbound",
          "arguments": {
            "from": "Sam <[email protected]>",
            "to": [
              "[email protected]"
            ]
          }
        }

        Result: NativeSendResult

        API
        POST/api/v1/emails/inbound
        CLI
        sendmock email inbound
        In the app
        Mail > Import .eml > Incoming to your app

        sendmock_email_latest

        The newest email to a recipient.

        Toolset email.

        • Read only
        InputTypeDescription
        torequiredstring
        The recipient address.Example: [email protected]
        subjectstring
        Subject contains.Example: Reset your password
        projectstring
        Only this project's emails (its key); every project's when not set.Example: shop

        Example call

        {
          "name": "sendmock_email_latest",
          "arguments": {
            "to": "[email protected]",
            "subject": "Reset your password",
            "project": "shop"
          }
        }

        Result: EmailDetail

        API
        GET/api/v1/emails/latest
        CLI
        sendmock email latest --to <address>
        In the app
        Mail > search to:

        sendmock_email_list

        Stored emails, newest first, with search and filters.

        Toolset email; also answers as sendmock_email_search.

        • Read only
        InputTypeDescription
        cursorstring
        The next_cursor of the previous page.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
        limitinteger
        Items per page, 1 to 200 (default 50).Example: 50
        querystring
        Search text; supports from:, to: and tag: prefixes.Example: to:[email protected] reset
        fromstring
        Sender contains.Example: [email protected]
        tostring
        A recipient contains.Example: [email protected]
        tagstring
        Has this tag.Example: signup
        is_unreadboolean
        Only unread.Example: true
        has_attachmentboolean
        Only with attachments.Example: true
        sourcestring
        How it arrived: smtp, sendmail, native_api, verify, simulated, or an email provider's key, e.g. sendgrid.Example: smtp
        directionstring
        Outbound from your app or inbound to it.One of: outbound, inboundExample: outbound
        projectstring
        Only this project's emails (its key); every project's when not set.Example: shop

        Example call

        {
          "name": "sendmock_email_list",
          "arguments": {
            "cursor": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D",
            "limit": 50
          }
        }

        Result: PageOf_EmailSummary

        API
        GET/api/v1/emails
        CLI
        sendmock email list
        In the app
        Mail

        sendmock_email_mime

        The MIME tree of the message.

        Toolset email.

        • Read only
        InputTypeDescription
        email_idrequiredstring
        The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

        Example call

        {
          "name": "sendmock_email_mime",
          "arguments": {
            "email_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D"
          }
        }

        Result: MimePart

        API
        GET/api/v1/emails/{emailId}/mime
        CLI
        sendmock email mime <emailId>
        In the app
        Mail > open email > MIME

        sendmock_email_open

        Record an open and fire email.opened.

        Toolset email.

          InputTypeDescription
          email_idrequiredstring
          The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
          sourcestring
          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_agentstring
          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_endpoint_idsstring[]
          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_requestsWebhookRequestEdit[]
          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 call

          {
            "name": "sendmock_email_open",
            "arguments": {
              "email_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D",
              "source": "api",
              "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_5)"
            }
          }

          Result: nothing

          API
          POST/api/v1/emails/{emailId}/open
          CLI
          sendmock email open <emailId>
          In the app
          Mail > open email (opening it fires the open)

          sendmock_email_opens

          Every recorded open of the email, oldest first.

          Toolset email.

          • Read only
          InputTypeDescription
          email_idrequiredstring
          The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

          Example call

          {
            "name": "sendmock_email_opens",
            "arguments": {
              "email_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D"
            }
          }

          Result: OpenRecord[]

          API
          GET/api/v1/emails/{emailId}/opens
          CLI
          sendmock email opens <emailId>
          In the app
          Mail > open email > Timeline (opened entries)

          sendmock_email_release

          Send the email on through the allowlisted relay.

          Toolset email.

            InputTypeDescription
            email_idrequiredstring
            The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
            tostring[]
            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 call

            {
              "name": "sendmock_email_release",
              "arguments": {
                "email_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D",
                "to": [
                  "[email protected]"
                ]
              }
            }

            Result: nothing

            API
            POST/api/v1/emails/{emailId}/release
            CLI
            sendmock email release <emailId>
            In the app
            Mail > open email > Release to real SMTP

            sendmock_email_reply

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

            Toolset email.

              InputTypeDescription
              email_idrequiredstring
              The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
              bodystring
              The reply text, above the quoted original; empty or left out sends no text of its own.Example: Thanks, that fixed it!
              fromstring
              Who replies; defaults to the original recipient.Example: [email protected]
              subjectstring
              Defaults to Re: <original subject>.Example: Re: Ticket #318 updated
              reply_allboolean
              Also sends to the other original recipients, in Cc.Example: false
              include_originalboolean
              Quotes the original below an "On ... wrote:" line (default true).Example: true
              webhook_endpoint_idsstring[]
              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_requestsWebhookRequestEdit[]
              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 call

              {
                "name": "sendmock_email_reply",
                "arguments": {
                  "email_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D",
                  "body": "Thanks, that fixed it!",
                  "from": "[email protected]"
                }
              }

              Result: EmailDetail

              API
              POST/api/v1/emails/{emailId}/reply
              CLI
              sendmock email reply <emailId>
              In the app
              Mail > open email > Reply, Reply all

              sendmock_email_send

              Native send: JSON with optional base64 attachments.

              Toolset email.

                InputTypeDescription
                fromrequiredstring
                The sender, as an address or Name <address>.Example: Shop <[email protected]>
                torequiredstring[]
                The recipients.Example: ["[email protected]"]
                ccstring[]
                Copy recipients.Example: ["[email protected]"]
                bccstring[]
                Hidden copy recipients; stored with the email but not in its headers.Example: ["[email protected]"]
                subjectrequiredstring
                The subject line.Example: Your order #1042 has shipped
                textstring
                The plain-text body. Send text, html or both.Example: Hi Sam, your order is on its way.
                htmlstring
                The HTML body. Send text, html or both.Example: <p>Hi Sam, your order is <b>on its way</b>.</p>
                headersobject
                Extra headers, by name.
                tagsstring[]
                Tags to file the email under in Mail.Example: ["orders"]
                attachmentsNativeSendAttachment[]
                Files to attach.Example: [{"filename":"invoice-1042.pdf","content":"JVBERi0xLjQKJcfsj6IK","content_type":"application/pdf","content_id":"logo"}]

                Example call

                {
                  "name": "sendmock_email_send",
                  "arguments": {
                    "from": "Shop <[email protected]>",
                    "to": [
                      "[email protected]"
                    ],
                    "subject": "Your order #1042 has shipped",
                    "cc": [
                      "[email protected]"
                    ],
                    "bcc": [
                      "[email protected]"
                    ]
                  }
                }

                Result: NativeSendResult

                API
                POST/api/v1/send
                CLI
                sendmock email send
                In the app
                Settings > Connection > Send this request

                sendmock_email_send_raw

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

                Toolset email.

                  InputTypeDescription
                  contentrequiredstring
                  The raw request body (message/rfc822). Text as is; base64 for binary content.Example: From: [email protected] To: [email protected] Subject: Hello Hi!

                  Example call

                  {
                    "name": "sendmock_email_send_raw",
                    "arguments": {
                      "content": "From: [email protected]\r\nTo: [email protected]\r\nSubject: Hello\r\n\r\nHi!"
                    }
                  }

                  Result: NativeSendResult

                  API
                  POST/api/v1/send/raw
                  CLI
                  sendmock sendmail
                  In the app
                  Mail > Import .eml > Sent by your app

                  sendmock_email_simulate

                  Simulate a delivery outcome such as a bounce or complaint.

                  Toolset email.

                    InputTypeDescription
                    email_idrequiredstring
                    The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
                    eventrequiredstring
                    The delivery event to simulate; it is added to the timeline and fires its webhook.One of: delivered, deferred, bounced, complained, unsubscribedExample: bounced
                    bounce_typestring
                    For bounced only: a hard bounce (the address does not exist) or a soft one (try again later).One of: hard, softExample: hard
                    webhook_endpoint_idsstring[]
                    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_requestsWebhookRequestEdit[]
                    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 call

                    {
                      "name": "sendmock_email_simulate",
                      "arguments": {
                        "email_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D",
                        "event": "bounced",
                        "bounce_type": "hard",
                        "webhook_endpoint_ids": [
                          "01JB7T9Q2RENDPOINT00000000"
                        ]
                      }
                    }

                    Result: nothing

                    API
                    POST/api/v1/emails/{emailId}/simulate
                    CLI
                    sendmock email simulate <emailId> <event>
                    In the app
                    Mail > open email > Simulate

                    sendmock_email_timeline

                    Delivery events: received, delivered, opened, bounced.

                    Toolset email.

                    • Read only
                    InputTypeDescription
                    email_idrequiredstring
                    The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

                    Example call

                    {
                      "name": "sendmock_email_timeline",
                      "arguments": {
                        "email_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D"
                      }
                    }

                    Result: EmailTimelineEntry[]

                    API
                    GET/api/v1/emails/{emailId}/timeline
                    CLI
                    sendmock email timeline <emailId>
                    In the app
                    Mail > open email > Timeline

                    sendmock_email_update

                    Mark read or unread, or change tags.

                    Toolset email; also answers as sendmock_email_tag.

                    • Idempotent
                    InputTypeDescription
                    email_idrequiredstring
                    The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
                    is_readboolean
                    Marks the email as read (true) or unread (false).Example: true
                    tagsstring[]
                    Replaces the email's tags; an empty list removes them all.Example: ["signup","qa"]

                    Example call

                    {
                      "name": "sendmock_email_update",
                      "arguments": {
                        "email_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D",
                        "is_read": true,
                        "tags": [
                          "signup",
                          "qa"
                        ]
                      }
                    }

                    Result: EmailSummary

                    API
                    PATCH/api/v1/emails/{emailId}
                    CLI
                    sendmock email update <emailId>
                    In the app
                    Mail > open email > Mark as read, tags

                    sendmock://emails/{emailId}/mime/{partId}

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

                    Resource, read as application/octet-stream.

                    ParameterTypeDescription
                    emailIdrequiredstring
                    The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
                    partIdrequiredstring
                    The part's position in the MIME tree, as GET /emails/{emailId}/mime numbers it, e.g. 1.2.Example: 1.2
                    API
                    GET/api/v1/emails/{emailId}/mime/{partId}
                    CLI
                    sendmock email mime-part <emailId> <partId>
                    In the app
                    Mail > open email > MIME, download a part

                    sendmock://emails/{emailId}/raw

                    The raw message source.

                    Resource, read as message/rfc822.

                    ParameterTypeDescription
                    emailIdrequiredstring
                    The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
                    API
                    GET/api/v1/emails/{emailId}/raw
                    CLI
                    sendmock email raw <emailId>
                    In the app
                    Mail > open email > Source, download .eml

                    sendmock://emails/{emailId}/attachments/{attachmentIndex}

                    Download one attachment.

                    Resource, read as application/octet-stream.

                    ParameterTypeDescription
                    emailIdrequiredstring
                    The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
                    attachmentIndexrequiredinteger
                    Position of the file in the email's attachments, starting at 0.Example: 0
                    API
                    GET/api/v1/emails/{emailId}/attachments/{attachmentIndex}
                    CLI
                    sendmock email attachments <emailId> <attachmentIndex>
                    In the app
                    Mail > open email > Attachments

                    sendmock://emails/{emailId}/parts/{attachmentIndex}/thumbnail

                    A preview image of an attachment.

                    Resource, read as image/*.

                    ParameterTypeDescription
                    emailIdrequiredstring
                    The email's ID, from GET /api/v1/emails.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
                    attachmentIndexrequiredinteger
                    Position of the file in the email's attachments, starting at 0.Example: 0
                    API
                    GET/api/v1/emails/{emailId}/parts/{attachmentIndex}/thumbnail
                    CLI
                    sendmock email thumbnail <emailId> <attachmentIndex>
                    In the app
                    Mail > open email > Attachments (thumbnails)