Human channel tool map

Endpoints

  • list_channel_endpoints: list assigned SMS, MMS, RCS, WhatsApp, and voice endpoints.

Endpoint creation, detail, and enable/disable operations are REST/dashboard operations, not MCP tools. Endpoint renaming is not supported.

Endpoint assignment requires a trusted human session. Provider resources are allocated by the AgentMailer control plane and cannot be invented by an agent.

Messages

  • send_channel_message: queue one consented outbound message. Supply channel, endpointId, to, consent: { basis, capturedAt, reference }, and a stable idempotencyKey. For text use content: { type: "text", body: "..." }. MMS requires attachmentIds and allows optional text content. Inspect the tool schema for WhatsApp templates and channel-specific options.
  • list_channel_messages: inspect inbound and outbound messages, provider status, failure details, and safety disposition.

Message lifecycle states are queued, sent, delivered, read, failed, received, and blocked. Quarantined inbound content is represented by blocked, not a separate quarantined status. Provider receipts can update a message after the original send returns.

Conversations

  • list_channel_conversations: filter by endpointId, channel, or status (active/closed), with limit and pageToken pagination.
  • get_channel_conversation: inspect one conversation.
  • update_channel_conversation: supply conversationId and status: "closed" to close or status: "active" to reopen.

Conversation lifecycle is independent of consent. Reopening a conversation does not override an opt-out.

Recipient permission ledger

  • list_channel_recipient_permissions: inspect consent and opt-out state for a recipient and channel.

An explicit opt-out always wins. STOP-like inbound messages record an opt-out; START-like messages can restore consent. Outbound sends require a current consent basis even when the ledger has no prior opt-out.

Retry invariants

  • Use one idempotency key for one logical outbound message.
  • Reuse that key after timeouts or ambiguous transport failures.
  • Create a new key only when the human changes the recipient, channel, or message intent.
  • A queued message is not delivered. Inspect status before reporting a final outcome.