Skip to main content
Glama
Sendmux

Sendmux Email Inbox API + Sending

Official
by Sendmux

Send Email

sending_send_email

Send a single outbound email through the Sendmux API. Supports HTML/text bodies, attachments, CC/BCC, custom headers, and idempotency keys to avoid duplicate sends.

Instructions

Use this to send one outbound email through the sending API. For attachments, call sending_upload_attachment first for local/tiny content or sending_create_attachment_upload for delegated file PUTs, then pass attachments as attachment_id refs. Inline base64 is only for tiny generated content. Include an Idempotency-Key so retries do not create duplicate sends.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ccNoCC recipients (subject to 50 total To, CC, and BCC recipients)
toYesPrimary recipient
bccNoBCC recipients (subject to 50 total To, CC, and BCC recipients)
fromYesSender address
subjectYesEmail subject line (max 998 chars, RFC 5322)
reply_toNoReply-To address
html_bodyYesHTML email content (max 25MB)
text_bodyNoPlain text alternative (max 25MB)
attachmentsNoFile attachments (max 10). Use attachment_id refs for uploaded files.
return_pathNoEnvelope sender for VERP support
custom_headersNoCustom X-* headers to include in the email
delivery_groupNoOne delivery group public ID or a non-empty array of up to 50 IDs
Idempotency-KeyNoOptional client-generated key to make the request idempotent for 24 hours. Replays under the same key return the cached response; a reused key with a different body returns 409 idempotency_conflict.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.0.9
    • addedInput schema / properties / delivery_group
      Added value: +{
      +  "anyOf": [
      +    {
      +      "pattern": "^dgrp_[a-z0-9][a-z0-9_-]{0,122}$",
      +      "type": "string"
      +    },
      +    {
      +      "items": {
      +        "pattern": "^dgrp_[a-z0-9][a-z0-9_-]{0,122}$",
      +        "type": "string"
      +      },
      +      "maxItems": 50,
      +      "minItems": 1,
      +      "type": "array"
      +    }
      +  ],
      +  "description": "One delivery group public ID or a non-empty array of up to 50 IDs"
      +}
  2. Changed5 schema fields changedv1.0.8
    • addedInput schema / properties / Idempotency-Key / example
      Added value: +"order-12345-2026-04-24"
    • addedOutput schema / $schema
      Added value: +"https://json-schema.org/draft/2020-12/schema"
    • removedOutput schema / additionalProperties
      Removed value: -true
    • addedOutput schema / properties
      Added value: +{
      +  "result": {
      +    "allOf": [
      +      {
      +        "properties": {
      +          "meta": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "request_id": {
      +                "description": "Unique request identifier",
      +                "example": "req_clxxxxxxxxxxxxxxxxxxxxxxxxx",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "request_id"
      +            ],
      +            "type": "object"
      +          },
      +          "ok": {
      +            "enum": [
      +              true
      +            ],
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "ok",
      +          "meta"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "properties": {
      +          "data": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "message_id": {
      +                "description": "Unique message identifier (eml_ prefix + 24 alphanumeric chars)",
      +                "example": "eml_tz4a98xxat96iws9zmbrgj3a",
      +                "pattern": "^eml_[a-z0-9]{24}$",
      +                "type": "string"
      +              },
      +              "status": {
      +                "description": "Message queuing status",
      +                "enum": [
      +                  "queued"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "message_id",
      +              "status"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "data"
      +        ],
      +        "type": "object"
      +      }
      +    ],
      +    "unevaluatedProperties": {
      +      "not": {}
      +    },
      +    "x-fastmcp-top-level-schema": "SendSuccessResponse"
      +  }
      +}
    • addedOutput schema / required
      Added value: +[
      +  "result"
      +]
  3. Changed4 schema fields changedv1.0.1
    • changedInput schema / properties / bcc / description
      Previous value: -"BCC recipients (max 100)"New value: +"BCC recipients (subject to 50 total To, CC, and BCC recipients)"
    • changedInput schema / properties / bcc / maxItems
      Previous value: -100New value: +49
    • changedInput schema / properties / cc / description
      Previous value: -"CC recipients (max 100)"New value: +"CC recipients (subject to 50 total To, CC, and BCC recipients)"
    • changedInput schema / properties / cc / maxItems
      Previous value: -100New value: +49
  4. First observedv1.0.0

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and idempotentHint=false, so the write/non-idempotent nature is covered. The description adds useful context: attachments must be uploaded first, inline base64 is only for tiny content, and an Idempotency-Key prevents duplicate sends on retry. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: purpose first, attachment routing second, idempotency guidance third. Every sentence earns its place and there is no filler or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter tool with nested objects and an output schema, the description covers the core flow and the two riskiest operational areas: attachments and duplicate sends. The only notable gap is that batch-vs-single-send selection is implied by the word 'one' rather than stated explicitly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by prescribing the attachment_id workflow and adding the 'inline base64 is only for tiny generated content' constraint, which is not encoded in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'send one outbound email through the sending API.' The word 'one' helps distinguish it from the sibling sending_send_email_batch, and the phrase 'through the sending API' separates it from mailbox-related send tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly routes attachment workflows to sending_upload_attachment and sending_create_attachment_upload, and it gives a clear condition for when inline base64 is acceptable. It does not explicitly tell the agent when to prefer sending_send_email_batch over this single-send tool, so that sibling distinction is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.