> ## Documentation Index
> Fetch the complete documentation index at: https://docs.greentick.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Messages

> Send session text and approved templates, schedule a template, and cancel a schedule.

`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](https://docs.greentick.ai/mcp/inbox.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.