Skip to main content
send_message is the only tool that starts a WhatsApp message from the MCP server. The assistant calls it only after you ask it to send.

Session text

type is text. text is the body. to is the customer phone number with country code. GreenTick strips formatting and validates the number before it calls WhatsApp. Text works only inside the 24-hour customer service window, counted from the customer’s last message. Outside that window, WhatsApp rejects free-form text. The assistant sends an approved template instead. Text cannot be scheduled. scheduledAt on a text message returns INVALID_SCHEDULE.

Templates

type is template. The template name and language must match an approved template from list_templates. Variables are named. A template that is not APPROVED returns TEMPLATE_NOT_APPROVED. The assistant does not describe that call as delivered. A failed send was not delivered. The assistant reports the error message and stops. It does not say the customer received it.

Scheduling

Set scheduledAt only for type: template, and only after you ask to send later.
  • The time is at least 5 minutes from now and within 30 days.
  • A past time, a time inside the next 5 minutes, or a time past 30 days is rejected. The assistant fixes scheduledAt and retries with a new idempotencyKey. It does not describe that message as sent.
  • If you do not name a timezone, the assistant calls get_api_key and uses timeZone.
  • If you name a zone, it passes an ISO offset, for example 2026-10-25T09:00:00-04:00. A value with Z or an offset is that exact instant.
  • A success body with scheduled: true is a schedule, not a delivery. The assistant tells you the time it will send.
cancel_scheduled_message takes scheduledId from the schedule result. GreenTick refuses the cancel in the last minute before the message sends. A cancelled schedule is not a delivery.

Read state

mark_message_read takes the GreenTick messageId of one inbound message. To mark a whole thread, use mark_conversation_read on Inbox.