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

MCP reference

SMS tools

sendmock_sms_delete

Delete one message.

Toolset sms.

  • Destructive
  • Idempotent
InputTypeDescription
sms_idrequiredstring
The SMS's ID, from GET /api/v1/sms.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Example call

{
  "name": "sendmock_sms_delete",
  "arguments": {
    "sms_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D"
  }
}

Result: nothing

API
DELETE/api/v1/sms/{smsId}
CLI
sendmock sms delete <smsId>
In the app
SMS > message menu > Delete

sendmock_sms_delete_all

Delete every message.

Toolset sms.

  • Destructive
  • Idempotent

No inputs.

Example call

{
  "name": "sendmock_sms_delete_all",
  "arguments": {}
}

Result: nothing

API
DELETE/api/v1/sms
CLI
sendmock sms delete-all --yes
In the app
Settings > General > Delete all SMS

sendmock_sms_get

One message with its status history and callbacks.

Toolset sms.

  • Read only
InputTypeDescription
sms_idrequiredstring
The SMS's ID, from GET /api/v1/sms.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

Example call

{
  "name": "sendmock_sms_get",
  "arguments": {
    "sms_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D"
  }
}

Result: SmsMessageDetail

API
GET/api/v1/sms/{smsId}
CLI
sendmock sms show <smsId>
In the app
SMS > message > Message details

sendmock_sms_list

SMS and WhatsApp messages, newest first, with filters.

Toolset sms.

  • 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
Number or text.Example: code
fromstring
Sender number.Example: +15550001111
tostring
Recipient number.Example: +8801700000000
statusstring
Delivery status.One of: queued, sent, delivered, undelivered, failed, receivedExample: delivered
directionstring
Outbound from your app or inbound to it.One of: outbound, inboundExample: outbound
thread_idstring
Only this conversation.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
projectstring
Only this project's messages (its key); every project's when not set.Example: shop

Example call

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

Result: PageOf_SmsMessage

API
GET/api/v1/sms
CLI
sendmock sms list
In the app
SMS

sendmock_sms_open

Record a read and fire sms.opened.

Toolset sms.

    InputTypeDescription
    sms_idrequiredstring
    The SMS's ID, from GET /api/v1/sms.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_sms_open",
      "arguments": {
        "sms_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D",
        "source": "api",
        "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_5)"
      }
    }

    Result: nothing

    API
    POST/api/v1/sms/{smsId}/open
    CLI
    sendmock sms open <smsId>
    In the app
    SMS > message menu > Simulate read

    sendmock_sms_opens

    Every recorded read of an outbound message, oldest first.

    Toolset sms.

    • Read only
    InputTypeDescription
    sms_idrequiredstring
    The SMS's ID, from GET /api/v1/sms.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

    Example call

    {
      "name": "sendmock_sms_opens",
      "arguments": {
        "sms_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D"
      }
    }

    Result: OpenRecord[]

    API
    GET/api/v1/sms/{smsId}/opens
    CLI
    sendmock sms opens <smsId>
    In the app
    SMS > message ticks (read)

    sendmock_sms_reply_webhook_resend

    Send an inbound message's reply webhook again.

    Toolset sms.

      InputTypeDescription
      sms_idrequiredstring
      The SMS's ID, from GET /api/v1/sms.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D

      Example call

      {
        "name": "sendmock_sms_reply_webhook_resend",
        "arguments": {
          "sms_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D"
        }
      }

      Result: SmsMessageDetail

      API
      POST/api/v1/sms/{smsId}/reply-webhook/resend
      CLI
      sendmock sms resend-reply-webhook <smsId>
      In the app
      SMS > Message details > Reply webhook > Resend reply webhook

      sendmock_sms_send

      Native send, with optional media URLs or inline media.

      Toolset sms.

        InputTypeDescription
        fromrequiredstring
        The sender: an E.164 number or an alphanumeric sender ID.Example: +15550001111
        torequiredstring
        The recipient, an E.164 number; whatsapp:+... sends over WhatsApp.Example: +8801700000000
        bodyrequiredstring
        The message text. Its length and characters decide the segments and the encoding (GSM-7 or UCS-2).Example: Your code is 482913
        status_callbackstring
        Your app's URL that receives each status change (queued, sent, delivered, failed).Example: http://localhost:3000/sms/status
        metadataobject
        Any JSON you want stored with the message and echoed in its events.
        media_urlsstring[]
        Public links SendMock downloads, like Twilio's MediaUrl.Example: ["https://example.test/receipt.png"]
        mediaInlineSmsMedia[]
        Files sent inline as MMS media, base64 encoded.Example: [{"filename":"photo.jpg","content":"/9j/4AAQSkZJRgABAQ==","content_type":"image/jpeg"}]

        Example call

        {
          "name": "sendmock_sms_send",
          "arguments": {
            "from": "+15550001111",
            "to": "+8801700000000",
            "body": "Your code is 482913",
            "status_callback": "http://localhost:3000/sms/status",
            "media_urls": [
              "https://example.test/receipt.png"
            ]
          }
        }

        Result: SmsMessageDetail

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

        sendmock_sms_set_status

        Set a delivery status by hand and fire its callback.

        Toolset sms.

          InputTypeDescription
          sms_idrequiredstring
          The SMS's ID, from GET /api/v1/sms.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
          statusrequiredstring
          The new status; fires the status callback and the matching event.One of: queued, sent, delivered, undelivered, failed, receivedExample: delivered
          error_codestring
          A Twilio error code for failed or undelivered, e.g. 30003 (unreachable).Example: 30003
          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_sms_set_status",
            "arguments": {
              "sms_id": "01JB7T9Q2R5W8X3Y6Z1A4B7C9D",
              "status": "delivered",
              "error_code": "30003",
              "webhook_endpoint_ids": [
                "01JB7T9Q2RENDPOINT00000000"
              ]
            }
          }

          Result: SmsMessageDetail

          API
          POST/api/v1/sms/{smsId}/status
          CLI
          sendmock sms status <smsId> <status>
          In the app
          SMS > Message details > Set status

          sendmock_sms_simulate_inbound

          Simulate a message from a contact to one of your numbers.

          Toolset sms.

            InputTypeDescription
            fromrequiredstring
            Who texts your app: the user's number.Example: +8801700000000
            torequiredstring
            Your app's number that receives it, usually a virtual number.Example: +15550001111
            bodyrequiredstring
            The message text.Example: STOP
            channelstring
            sms (default) or whatsapp.One of: sms, whatsappExample: sms
            template_idstring
            The payload template for the inbound webhook, instead of the number's (e.g. twilio.inbound_sms).Example: twilio.inbound_sms
            mediaInlineSmsMedia[]
            Files sent with the message, as MMS or WhatsApp media.Example: [{"filename":"photo.jpg","content":"/9j/4AAQSkZJRgABAQ==","content_type":"image/jpeg"}]
            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_sms_simulate_inbound",
              "arguments": {
                "from": "+8801700000000",
                "to": "+15550001111",
                "body": "STOP",
                "channel": "sms",
                "webhook_endpoint_ids": [
                  "01JB7T9Q2RENDPOINT00000000"
                ]
              }
            }

            Result: SmsMessageDetail

            API
            POST/api/v1/sms/inbound
            CLI
            sendmock sms inbound
            In the app
            SMS > conversation > Reply as recipient

            sendmock_sms_threads

            Conversations, one per contact and your number.

            Toolset sms.

            • Read only
            InputTypeDescription
            projectstring
            Only this project's messages (its key); every project's when not set.Example: shop

            Example call

            {
              "name": "sendmock_sms_threads",
              "arguments": {
                "project": "shop"
              }
            }

            Result: SmsThread[]

            API
            GET/api/v1/sms/threads
            CLI
            sendmock sms threads
            In the app
            SMS > conversation list

            sendmock://sms/{smsId}/media/{mediaIndex}

            Download one media item of an MMS or WhatsApp message.

            Resource, read as */*.

            ParameterTypeDescription
            smsIdrequiredstring
            The SMS's ID, from GET /api/v1/sms.Example: 01JB7T9Q2R5W8X3Y6Z1A4B7C9D
            mediaIndexrequiredinteger
            Position of the media file in the SMS's media, starting at 0.Example: 0
            API
            GET/api/v1/sms/{smsId}/media/{mediaIndex}
            CLI
            sendmock sms media <smsId> <mediaIndex>
            In the app
            SMS > message > media