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
SetscheduledAt 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
scheduledAtand retries with a newidempotencyKey. It does not describe that message as sent. - If you do not name a timezone, the assistant calls
get_api_keyand usestimeZone. - If you name a zone, it passes an ISO offset, for example
2026-10-25T09:00:00-04:00. A value withZor an offset is that exact instant. - A success body with
scheduled: trueis 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.
