Sign inGet started
Menu
TOOL REFERENCE / SOURCE GENERATEDMAILMAN MCP / MAIL

email_send_message

Composes and immediately sends a new message. This delivers mail to real people and cannot be undone. Only use it when the user has explicitly asked to send now. If there is any doubt about the wording, the recipients, or which mailbox to send from, use email_create_draft instead and let them approve it. account_id selects the sending mailbox and is never inferred — take it from email_accounts_list and confirm with the user when they have more than one account. from may only be a verified alias of that account. idempotency_key is required; retry with the same key after a timeout rather than composing a second message.

Input fields

{
  "type": "object",
  "properties": {
    "account_id": {
      "type": "string",
      "minLength": 1,
      "description": "The connected mailbox to act on, from email_accounts_list. Never guess this value and never reuse one across mailboxes — it selects both the credential and the permission set the call runs under."
    },
    "from": {
      "description": "Send as this address. Must be an identity the account is allowed to send as (alias or shared mailbox); anything else is INVALID_FROM_IDENTITY. Omit to use the account's default address.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "to": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "description": "At least one recipient address."
    },
    "cc": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "bcc": {
      "description": "Blind copies. Other recipients cannot see these addresses.",
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "subject": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "text_body": {
      "description": "Plain-text body. Prefer this unless HTML is needed.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "html_body": {
      "description": "HTML body. Supply text_body too so non-HTML clients render something.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "attachments": {
      "description": "Files to attach. Supply either content_base64 or source_url per item.",
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "filename": {
                "type": "string",
                "minLength": 1
              },
              "content_type": {
                "type": "string",
                "minLength": 1,
                "description": "MIME type, e.g. application/pdf."
              },
              "content_base64": {
                "description": "Base64 content. Use for small files.",
                "type": "string"
              },
              "source_url": {
                "description": "URL the server fetches instead of inline content.",
                "type": "string"
              },
              "size_bytes": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "filename",
              "content_type"
            ]
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 1,
      "description": "A unique value you generate for this attempt, e.g. a UUID. Retrying with the same key returns the original result instead of acting twice. Reusing a key with different arguments is an IDEMPOTENCY_CONFLICT."
    }
  },
  "required": [
    "account_id",
    "to",
    "idempotency_key"
  ]
}

Tool behavior

May change provider state. Check the explicit account, required access and provider capabilities before invoking.

Inspect isError and per-account errors. General write tools do not all enforce exact-plan approval. This reference does not certify any current AI client version.

YOUR AI POSTAL SYSTEM

YOUR INBOXES.
UNDER CONTROL.

Get started

Start with a free account and one read-only search. Existing accounts keep their connection.