Marketing Automation
Wati
Connect Wati once and hand every teammate a governed MCP endpoint with 94 tools ready to call from Claude, ChatGPT, Cursor, or any MCP client, inside the same permissions they already have, with every call checked and logged.
See it in Elaichi
What connecting Wati gets you
6 screens from the product, each doing one job for your Wati account.
The agent
Ask wati questions, get live answers.
Type a question in plain language and get answers pulled straight from wati contacts and broadcasts.
- contacts
- broadcasts
- attributes
- recipients
Ask Elaichi to work across your apps.
Which contacts opened last week's broadcast?
Assign this batch of contacts to the support team.
How many contacts do we have per team?
Also runs in Claude, ChatGPT or Cursor
MCP clients
One wati endpoint, any client, no api keys.
Claude, ChatGPT and Cursor all reach wati through a single governed org endpoint.
Copy the endpoint
Tool catalogue
94 wati tools, zero integration code.
Every wati contact, broadcast and attribute method catalogued and ready to call.
- list_all_wati_contacts
- get_single_wati_contact_by_id
- create_a_wati_contact
- delete_a_wati_contact_by_id
Toolboxes
Every team gets its own wati toolbox.
Marketing, support and sales each work from a toolbox scoped to their wati needs.
- Marketing
- Support
- Sales
- Operations
Shared connections
Teammates use wati without seeing credentials.
See who connected each wati account and how many teams and members share it.
- Marketing EMEA
- Support APAC
- Sales US
- Growth Team
Audit log
Every wati action lands in one log.
See who did what in wati, when, and on which contact or broadcast.
- When
- Who
- What happened
- Resource
Automations & dashboards
From answering questions to doing the work
A person no longer has to ask. A trigger starts the work, inside the same permissions and the same audit log as everything else. Automations and live dashboards ship on the Black plan.
Automations
Wati broadcasts run themselves, with your approval.
A schedule fires, wati contacts are fetched and grouped, an agent drafts, a person approves, wati posts back.
Wati digest
Run 418 · started 2 minutes ago · on behalf of Emma Laurent
-
✓
Schedule
Every weekday at 08:00
0.2s -
✓
Fetch contacts
Wati
1.4s -
✓
Group by owner
Transform
0.1s -
✓
Draft the digest
Agent step
Ran with 4 tools, returned a structured summary
6.2s -
Approve the digest
Needs approval
Assigned to Michael Brennan
Approve Deny -
Post the digest
Wati
Queued
Collections and dashboards
Wati health, computed, not asked for.
Four metrics and a 14 day contact chart refresh on schedule, broken down by team.
Wati health
Refreshed 4 minutes ago · every 15 minutes · from the contacts collection
Contacts
1,284 ↓ 12%
Broadcasts
96 ↓ 8%
Needs attention
3 ↑ 2
Updated this week
412 ↑ 9%
Contacts created
Last 14 days
By workspace
Share of activity
Marketing EMEA 34%
Support APAC 27%
Sales US 21%
Growth Team 18%
AI tools
Wati tools for your AI agents
94 tools are ready to call through Elaichi's MCP endpoint the moment you connect Wati, governed by the same roles, restrictions, and audit log as everything else in Elaichi.
list_all_wati_contacts
List Wati contacts with pagination. Returns: id, phone, name, bsuid, parentBsuid, username. Max 100 items per page.
get_single_wati_contact_by_id
Get a single Wati contact by id. The id can be a ContactId, PhoneNumber, BSUID, or Channel:format identifier — the system auto-detects. Returns: id, phone, name, bsuid, parentBsuid, username. Required: id.
create_a_wati_contact
Create a new Wati contact with a WhatsApp number and name, optionally including custom parameters. Returns: id, phone, name, bsuid, parentBsuid, username. Required: whatsapp_number, name.
delete_a_wati_contact_by_id
Soft-delete a Wati contact by id, removing the contact and its linked records. The id can be a ContactId, PhoneNumber, or Channel:PhoneNumber. Returns: id, status. Required: id.
wati_contacts_assign_teams
Assign a Wati contact to one or more teams using a polymorphic target identifier (phone, Contact ID, or BSUID). Returns: id, name, phone, bsuid, parentBsuid, username, customParams. Required: target, teams.
wati_contacts_get_count
Get the total count of Wati contacts, optionally filtered by a date range using date_from and date_to. Returns: count.
wati_contacts_list_v_1
List Wati contacts with optional filtering by name, custom attributes, and creation date. Returns: id, name, phone, bsuid, parentBsuid, username, customParams.
wati_contacts_create_v_1
Add a new Wati contact by WhatsApp number with an optional name and custom parameters. Returns: id, name, phone, bsuid, parentBsuid, username, customParams. Required: whatsapp_number.
wati_contacts_update_attributes_multi
Update custom attributes for multiple Wati contacts in a single request. Each contact entry must include at least one of whatsappNumber or target. Returns: id, name, phone, bsuid, parentBsuid, username, customParams. Required: contacts.
wati_contacts_update_attributes
Update custom attributes for a single Wati contact identified by WhatsApp number, Contact ID, or BSUID. Returns: id, phone, bsuid, parentBsuid, username. Required: whatsapp_number.
wati_contacts_bulk_update
Update one or more Wati contacts by providing a list of contact updates with polymorphic target identifiers. Returns: id, phone, name, bsuid, parentBsuid, username. Required: contacts.
list_all_wati_broadcasts
List Wati broadcasts (campaigns) filtered by date range and optional channel. Returns: id, created_at, updated_at. Required: date_from, date_to. Max 100 per page.
get_single_wati_broadcast_by_id
Get a single Wati broadcast (campaign) by id. Returns: id, created_at, updated_at. Required: id.
wati_broadcasts_list_recipients
List recipients of a Wati broadcast (campaign). Returns: id, bsuid, created_at. Required: broadcast_id. Max 100 per page.
wati_broadcasts_get_overview
Get an overview of Wati broadcasts (campaigns) within a date range, optionally filtered by channel and search string. Returns the broadcast overview. Required: date_from, date_to.
wati_broadcasts_estimate_cost
Estimate the cost of sending a template broadcast to specified contacts in Wati. Returns the estimated cost. Required: contact_ids.
wati_broadcasts_enable_auto_retry
Enable auto-retry for a Wati broadcast (campaign) by configuring a retry window after the broadcast ends. Returns a 200 success response on success. Required: broadcast_id. Provide either retryDays or retryUntil in the request body, but not both.
list_all_wati_chatbots
List Wati chatbots available in the Pro plan. Returns: id, created_at, updated_at. Max 100 items per page.
wati_chatbots_start
Start a Wati chatbot for a specific recipient (Pro plan). Returns: id. Required: target, chatbot_id. The target parameter auto-detects ContactId, PhoneNumber, BSUID, and Channel-prefixed formats.
wati_chatbots_list_v_1
List existing Wati chatbots using the legacy v1 API. Returns: id, created_at, updated_at.
wati_chatbots_start_v_1
Start a Wati chatbot using the legacy v1 API. Returns: id. Required: chatbotId and at least one of whatsappNumber or target.
wati_account_get_credits
Get the authenticated tenant's credit balance in Wati. Returns: eventType, wabaId. No required parameters.
list_all_wati_channels
List Wati channels, excluding the default channel. Returns: id, channelPhoneNumber. The default channel is omitted from the result set. Max 100 items per page.
wati_channels_get_permissions
Get the permissions for a specific Wati channel by channel identifier. Returns: permissions. Required: channel. The upstream API reference does not enumerate the fields within the permissions object.
wati_conversations_list_messages
List messages in a Wati conversation identified by target. Returns each message with id, text, type, conversationId, statusString, and timestamp. Required: target. Supports ConversationId, PhoneNumber, Contact ID, BSUID, and Channel-scoped formats. Max 100 items per page.
wati_conversations_send_text
Send a text message to an active Wati conversation. Returns the sent message with id, text, type, conversationId, and statusString. Required: target, text.
wati_conversations_send_file
Send a file message to an active Wati conversation by uploading a file. Returns the sent message with id, text, type, conversationId, and statusString. Required: target, file.
wati_conversations_send_file_via_url
Send a file message to an active Wati conversation via a URL. Returns the sent message with id, text, type, conversationId, and statusString. Required: target, file_url.
wati_conversations_send_interactive
Send an interactive message (buttons, list, product, or productList) to an active Wati conversation. Returns the message result with id, type, conversationId, and statusString. Required: target, type.
wati_conversations_get_media
Download a media file from a Wati conversation message by file ID. Returns the media file as a binary stream. Required: file_id.
wati_conversations_assign_operator
Assign an operator to a Wati conversation by target identifier. Returns: result. Required: target, assignee_email. If assignee_email is null the conversation is assigned to the bot operator.
wati_conversations_send_typing_indicator
Send a typing indicator to a Wati conversation. Returns: result. Required: target.
wati_conversations_add_tags
Apply an existing tag to a Wati conversation by target identifier. Returns: result. Required: target, tag_name. This endpoint does not create new tag definitions.
wati_conversations_delete_tag
Remove a specific tag from a Wati conversation. Returns whether the existing conversation-tag binding was removed. Required: target (conversation ID, phone number, Channel:PhoneNumber, BSUID, or Channel:BSUID), tag_name (supports names containing slashes).
wati_conversations_create_group
Create a WhatsApp group in Wati. Returns: group_id, name, description, owner_email, operator_emails, contact_targets, join_approval_mode, channel. Required: name, owner_email. Group name is limited to 128 characters, description to 2048 characters, and contact_targets to a maximum of 7 entries.
wati_conversations_delete_group
Delete a conversation group in Wati by group ID. Returns the deletion result. Required: group_id.
wati_conversations_create_group_invite
Send group invites to contacts for an existing Wati conversation group. Returns: results. Required: group_id.
wati_conversations_delete_group_participant
Remove operators or contacts from a Wati conversation group. Returns: result. Required: group_id. At least one of operator_emails or contact_targets must be provided in the request body.
wati_conversations_list_groups
List active WhatsApp conversation groups in Wati, optionally filtered by channel or specific group IDs. Returns: id, name, description, owner_email, channel, operator_emails, join_approval_mode. Max 100 groups per page.
wati_conversations_assign_operator_v_1
Assign an operator by email to a WhatsApp conversation in Wati. If email is omitted, the chat is assigned to the bot. Returns: result. At least one of whatsappNumber or target must be provided.
wati_conversations_update_status_v_1
Update the ticket status of a Wati conversation to OPEN, SOLVED, PENDING, or BLOCK. Returns a 200 success response on success. Required: ticketStatus, channelPhoneNumber. At least one of whatsappNumber or target must be provided; returns 400 if neither is specified.
wati_conversations_send_interactive_list_v_1
Send an interactive list message to a WhatsApp contact in Wati. Returns: id, whatsappMessageId, conversationId. At least one of whatsappNumber or target must be provided. List sections support 1-10 rows; header text max 60 chars, body text max 1024 chars.
wati_conversations_send_interactive_buttons_v_1
Send an interactive buttons message to a WhatsApp contact in Wati. Returns: id, whatsappMessageId, conversationId. At least one of whatsappNumber or target must be provided. Buttons limited to 1-3; button text max 20 chars, body text max 1024 chars.
wati_conversations_list_messages_v_1
List messages for a WhatsApp conversation in Wati by phone number, Contact ID, or BSUID. Returns: id, created, whatsappMessageId, conversationId, ticketId, text, type, data, sourceId, sourceUrl, timestamp, owner, statusString, avatarUrl, assignedId, assigneeId, operatorName, operatorEmail, waId, messageContact, senderName, listReply, interactiveButtonReply, buttonReply, replyContextId,…
wati_conversations_send_session_file_v_1
Send a file to an opened WhatsApp session in Wati. Returns: id, created, whatsappMessageId, conversationId, ticketId, text, type, data, sourceId, sourceUrl, timestamp, owner, statusString, avatarUrl, assignedId, assigneeId, operatorName, operatorEmail, waId, messageContact, senderName, listReply, interactiveButtonReply, buttonReply, replyContextId, sourceType, frequentlyForwarded, forwarded,…
wati_conversations_send_session_message_v_1
Send a text message to an opened WhatsApp session in Wati. Returns: id, whatsappMessageId, conversationId, text, statusString. Required: whatsapp_number, messageText. The whatsapp_number parameter also accepts Contact ID or BSUID formats; messageText length must be between 0 and 4096 characters.
wati_conversations_send_session_file_via_url_v_1
Send a file to an opened WhatsApp session in Wati by providing a file URL. Returns the sent message including its id, whatsappMessageId, and conversationId. Required: whatsapp_number (accepts a phone number, Contact ID, or BSUID).
wati_conversations_send_request_contact_info
Send an interactive request contact info message in Wati to prompt a recipient to share their contact details. Returns a 200 response confirming the message was accepted by Wati (not yet delivered). The caller must supply either whatsappNumber or target as the recipient identifier.
wati_conversations_get_message_by_id
Get a specific WhatsApp message in Wati by channel phone number and local message ID. Returns the message object including its id, type, text, statusString, owner, and timestamp. Required: phone_number, local_message_id.
wati_conversations_bulk_update
Update the status of a Wati conversation by target identifier. Returns: result. Required: target, new_status. For statuses other than 'block', the conversation must be within the 24-hour session window and must not already be expired.
get_single_wati_message_template_by_id
Get a Wati message template by id. Returns: id, elementName, language, category, body, header, footer, buttons, buttonsType, type, subCategory, customParams, creationMethod, status. Required: id.
list_all_wati_message_templates
List Wati message templates. Returns each template's id, elementName, language, category, body, header, footer, buttons, and status.
wati_message_templates_send
Send WhatsApp template messages to multiple recipients in Wati. Returns the send result. Required: template_name, broadcast_name, recipients (1–10,000 items, each with at least phone_number or target).
wati_message_templates_schedule
Schedule template messages for future delivery in Wati. Returns the schedule result including id and attributes. Required: template_name, broadcast_name, scheduled_at, recipients. Recipients array supports 1 to 10,000 items; each recipient must have at least one of phone_number or target.
wati_message_templates_list_v_1
List Wati WhatsApp message templates. Returns: id, watiTemplateId, templateId, templateName, elementName, language, category, subCategory, status, type, body, header, footer, buttonsType, buttons, customParams, creationMethod, wabaId, channelId, channelPhoneNumber.
wati_message_templates_list_v_2
List WhatsApp message templates in Wati with optional filtering by template name and WhatsApp Business Account ID. Returns: watiTemplateId, templateName, wabaId, language, category, status.
create_a_wati_message_template
Create a WhatsApp message template in Wati. Returns the created template object including its id, elementName, category, language, body, and header.
wati_message_templates_delete_by_name
Delete a Wati WhatsApp message template by template name within a WhatsApp Business Account. Returns an empty 204 response on success. Required: waba_id, name.
wati_message_templates_delete_by_name_language
Delete a WhatsApp template by name and language in Wati. Returns an empty 204 response on success. Required: waba_id, name, language.
wati_message_templates_send_v_1
Send a WhatsApp template message to a single recipient in Wati. Returns a success response confirming the template message was sent. Required: parameters, template_name, broadcast_name, channel_number. At least one of whatsappNumber or target must be provided as a query parameter to identify the recipient (Phone Number, Contact ID, or BSUID).
wati_message_templates_send_v_2
Send a single WhatsApp template message to a recipient in Wati using the v2 Beta endpoint. Returns: id. Required: template_name, broadcast_name, channel_number, and parameters. At least one of whatsappNumber or target must be provided in the query, otherwise returns 400 Bad Request.
wati_message_templates_send_batch_v_1
Send WhatsApp template messages to multiple recipients in a single batch in Wati. Returns: id. Required: receivers, template_name, broadcast_name, channel_number (body). Each receiver must include at least one of whatsappNumber or target; returns 400 if neither is provided for any receiver.
wati_message_templates_send_batch_v_2
Send WhatsApp template messages to multiple recipients in Wati via the v2 batch endpoint. Returns: id. Required: receivers (each with at least whatsappNumber or target), template_name, broadcast_name, channel_number.
wati_message_templates_send_csv
Send WhatsApp template messages in Wati by uploading a CSV file of recipient phone numbers. Returns: id. Required: template_name, broadcast_name, whatsapp_numbers_csv.
list_all_wati_calls
List Wati call logs with optional filters for direction, operator, duration, and date range. Returns: call_id, direction, status, from_number, to_number, duration_seconds, timestamp, operator_id, team_name. Max 100 per page.
wati_calls_get_recording
Get the recording for a specific Wati call. Returns the recording download URL and file metadata. Returns: call_id, url, id, created, whatsappMessageId, conversationId, ticketId, text, timestamp, owner, eventType, statusString, assignedId, operatorName, operatorEmail, waId, senderName, replyContextId, sourceType, frequentlyForwarded, forwarded, channelPhoneNumber, bsuid, parentBsuid, username.…
wati_calls_get_transcript
Get the speaker-separated transcript for a specific Wati call. Returns: call_id, segments, id, created, whatsappMessageId, conversationId, ticketId, text, timestamp, owner, eventType, statusString, assignedId, operatorName, operatorEmail, waId, senderName, replyContextId, sourceType, frequentlyForwarded, forwarded, channelPhoneNumber, bsuid, parentBsuid, username. Required: call_id.
wati_calls_get_summary
Get the AI-generated summary for a specific Wati call. Returns: call_id, summary, id, created, whatsappMessageId, conversationId, ticketId, text, timestamp, owner, eventType, statusString, assignedId, operatorName, operatorEmail, waId, senderName, replyContextId, sourceType, frequentlyForwarded, forwarded, channelPhoneNumber, bsuid, parentBsuid, username. Required: call_id.
wati_calls_batch_recordings
Batch retrieve recordings for multiple Wati calls by their call IDs. Returns an array of recording objects with call_id and url for each requested call. Required: callIds (max 100).
wati_calls_batch_transcripts
Batch retrieve transcripts for multiple Wati calls by call ID. Returns: call_id, segments, id, created, whatsappMessageId, conversationId, ticketId, text, timestamp, owner, eventType, statusString, assignedId, operatorName, operatorEmail, waId, senderName, replyContextId, sourceType, frequentlyForwarded, forwarded, channelPhoneNumber, bsuid, parentBsuid, username. Required: callIds. Maximum 100…
wati_calls_batch_summaries
Batch retrieve AI-generated call summaries for multiple Wati calls in a single request. Returns: call_id, summary for each requested call. Required: callIds (max 100).
wati_orders_update_status
Update the WhatsApp Pay order status of an order in Wati. This endpoint is in Private Beta and the upstream documentation does not enumerate request body or response fields. Returns a success response on completion.
wati_orders_send_details
Send a WhatsApp Pay order detail message to a customer in Wati. This endpoint is in Private Beta and the upstream documentation does not enumerate request body or response fields. Returns a success response on completion.
get_single_wati_order_by_id
Get WhatsApp Pay order details of a particular order in Wati by referenceId. Returns the order object including its id and detail attributes. Required: id. This endpoint is in Private Beta.
wati_payments_get_status
Get WhatsApp Pay payment status information for a particular order in Wati by its referenceId (Private Beta). Returns: referenceId, status. Required: payment_statu_id.
list_all_wati_media
Get a media file by file name in Wati. Returns the media file stream (binary content) for the specified file path. Required: fileName.
wati_token_rotate
Rotate (block) a Wati API token so it can no longer be used for authentication. Returns a 200 success response. Required: token.
wati_phone_numbers_list_v_1
List WhatsApp phone numbers in Wati. Returns: id, wabaId, phoneNumber.
wati_phone_numbers_list_v_2
List WhatsApp phone numbers across multiple accounts in Wati. Returns: id, wabaId, phoneNumber.
wati_phone_numbers_get_profile
Get the profile detail of a specific WhatsApp phone number in Wati. Returns: id, wabaId, phoneNumber. Required: waba_id, phone_number.
list_all_wati_business_accounts
List WhatsApp Business Accounts configured in Wati. Returns: wabaId, accountReviewStatus.
create_a_wati_webhook
Create a webhook endpoint in Wati to receive callback notifications for message and status events. Accepts a callback URL, enabled status, and the event types to capture (e.g. messages received, messages sent, delivery status). Returns the created webhook endpoint including its id, url, status, and events. Required: url.
wati_segments_create_custom
Create a custom segment in Wati with either static or dynamic refresh behavior. Returns the created segment object including id, name, refreshType, and groups. Required: name, refreshType. For dynamic segments (refreshType 2), groups is required; for static segments (refreshType 1), provide either groups or contactIds.
list_all_wati_segments
List the tenant's contact segments in Wati. Returns each segment with id, name, refreshType, source, and groups. Supports filtering by source type and deleted status.
get_single_wati_segment_by_id
Get a single Wati segment by id, including its definition and current member count. Returns: id, name, refreshType, source, groups. Required: id.
wati_segments_evaluate
Evaluate a segment filter in Wati to preview matching contacts without saving. Returns contacts with id, name, phone, and bsuid. Empty or missing groups return an empty page.
list_all_wati_posts
List posts in Wati filtered by channel and optionally by media type. Returns: post_id, post_author_ig_id, channel, media_type. Required: channel.
get_single_wati_post_by_id
Get a single post in Wati by id. Returns: post_id, post_author_ig_id, channel, media_type. Required: id, post_author_ig_id.
wati_posts_list_comments
List comments for a Wati post. Returns: id, content, created_at. Required: post_id, post_author_ig_id. Max 100 items per page.
wati_posts_get_unread_count
Get the unread count for a Wati post by post id. Returns: count. Required: post_id.
wati_comments_create_reply
Reply to a comment on a Wati-connected Instagram post. Returns a 200 OK response confirming the reply was created. Required: comment_id, content, post_author_ig_id.
wati_comments_send_private_reply
Send a private reply to a Wati comment. Returns a 200 OK response on success. Required: comment_id, channel, user_id, user_name, and type.
wati_sales_analytics_get_pipeline
Get the Wati sales pipeline data for a given date range, optionally filtered by specific agents and lead stages. Returns: data. Required: from, to.
wati_sales_analytics_get_lead_stages
Get the list of Wati lead stages available in the sales analytics pipeline. Returns: data.
No tools match your search.
How it works
From Wati account to governed MCP endpoint
Connect
Link a Wati account through Elaichi's hosted connect flow. Credentials are vaulted, so nobody, including the AI, ever sees them.
Compose
The connection becomes a toolbox instantly. Curate which Wati tools are exposed, rename them, or freeze arguments.
Authorize
Point Claude, ChatGPT, Cursor, or any MCP client at the one Elaichi endpoint and sign in with OAuth, governed by roles, restrictions, and audit logs.
Put your agents to work in the tools you already use
Start a 14-day Gold trial. Connect a product, curate a toolbox, and paste a governed MCP endpoint into Claude, ChatGPT, or Cursor in minutes.