WhatsMCP: MCP for WhatsApp
Server Details
WhatsMCP connects Claude and other MCP-compatible AI agents directly to WhatsApp. Send and receive text, images, documents, and voice notes; manage groups (create, add/remove members, promote admins); look up contacts and profiles; follow channels; and read call and message history — all through a standard MCP interface.
For voice use cases, WhatsMCP offers SIP-based calling plans (inbound-only, or full inbound/outbound) so AI voice agents can answer and place WhatsApp calls, plus low-latency WebSocket integrations with voice agent providers like ElevenLabs.
Multiple WhatsApp accounts can be paired and managed per workspace, with webhook support for real-time inbound message delivery to your own infrastructure.
The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- Uptime
- 81.2% over 51 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 46 tools
The 46 tools span many distinct WhatsApp resources and most action/resource boundaries are explicit. The main overlap is among message-reading tools (wa_list_messages, wa_get_chat, wa_get_message), and wa_list_calls versus wa_ai_list_calls can be confused by name, though the descriptions clarify the intended distinction.
Most names use a consistent wa_ prefix, snake_case, and verb_noun pattern such as wa_send_message, wa_list_groups, and wa_delete_template. Minor deviations like wa_react, wa_report, and the wa_ai_call_* subgroup keep it from being perfectly uniform but remain predictable.
At 46 tools this is well above a comfortably scoped surface, even for a broad WhatsApp integration. Many niche areas (AI calls, webhooks, templates, pairing, plan introspection) could be grouped or conditionally exposed, and the large set raises discovery and selection cost.
The surface covers account pairing, messaging and media, contacts and blocking, groups, channels, templates, calls, AI calls, profile, presence, and plan introspection. Minor gaps remain, notably that webhook tools are unusable in this workspace and there is no message search or forwarding operation.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
wa_list_accounts1 field changed- added
Output schema / properties / accounts / items / properties / last_inbound_atAdded value: +{ + "description": "the time this number last received a live (non-history) message, across all chats, RFC3339; absent when none is stored. Read it alongside status: a live number that is receiving has a recent last_inbound_at, so an empty message window with a recent last_inbound_at is a quiet conversation, not a missed one", + "type": "string" +}
44 tool updates
- Changed
wa_ai_call_get1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_ai_call_hangup1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_ai_call_start1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_ai_list_calls1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_ai_list_presets1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_block_contact1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_create_group1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_create_template1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_delete_group1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_delete_message3 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"the account, as returned by wa_list_accounts"New value: +"the account, as returned by wa_list_accounts; omit it when the workspace has only one account" - changed
Input schema / requiredPrevious value: -[ - "account_id", - "chat", - "message_id" -]New value: +[ + "chat", + "message_id" +] - added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_delete_template1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_delete_webhook1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_edit_message3 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"the account, as returned by wa_list_accounts"New value: +"the account, as returned by wa_list_accounts; omit it when the workspace has only one account" - changed
Input schema / requiredPrevious value: -[ - "account_id", - "chat", - "message_id", - "text" -]New value: +[ + "chat", + "message_id", + "text" +] - added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_enable_webhook1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_follow_channel1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_get_chat6 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"the account whose conversation to read, from wa_list_accounts"New value: +"the account whose conversation to read, from wa_list_accounts; omit it when the workspace has only one account" - added
Input schema / properties / include_media_urlsAdded value: +{ + "description": "also return attachment.media_url on each available attachment — a time-limited (1h) signed URL to GET the bytes with plain HTTP instead of a wa_get_media call; off by default", + "type": "boolean" +} - removed
Input schema / requiredRemoved value: -[ - "account_id" -] - changed
Output schema / properties / messages / items / properties / attachment / descriptionPrevious value: -"present on an image, video, audio, document or sticker message: the file's mime type, size and name; fetch the bytes with wa_get_media"New value: +"present on an image, video, audio, document or sticker message: the file's mime type, size and name; fetch the bytes with wa_get_media, or pass include_media_urls on the read to get a direct media_url" - added
Output schema / properties / messages / items / properties / attachment / properties / media_urlAdded value: +{ + "description": "a time-limited (1h) signed URL to GET the attachment's bytes, present only when the read passed include_media_urls and the attachment is available; an expired link is refused — read again for a fresh one", + "type": "string" +} - added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_get_group_invite_link1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_get_media3 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"the account that received the message, from wa_list_accounts"New value: +"the account that received the message, from wa_list_accounts; omit it when the workspace has only one account" - changed
Input schema / requiredPrevious value: -[ - "account_id", - "message_id" -]New value: +[ + "message_id" +] - added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_get_message6 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"the account the message belongs to, from wa_list_accounts"New value: +"the account the message belongs to, from wa_list_accounts; omit it when the workspace has only one account" - added
Input schema / properties / include_media_urlsAdded value: +{ + "description": "also return attachment.media_url when the message carries an available attachment — a time-limited (1h) signed URL to GET the bytes with plain HTTP instead of a wa_get_media call; off by default", + "type": "boolean" +} - removed
Input schema / requiredRemoved value: -[ - "account_id" -] - changed
Output schema / properties / message / properties / attachment / descriptionPrevious value: -"present on an image, video, audio, document or sticker message: the file's mime type, size and name; fetch the bytes with wa_get_media"New value: +"present on an image, video, audio, document or sticker message: the file's mime type, size and name; fetch the bytes with wa_get_media, or pass include_media_urls on the read to get a direct media_url" - added
Output schema / properties / message / properties / attachment / properties / media_urlAdded value: +{ + "description": "a time-limited (1h) signed URL to GET the attachment's bytes, present only when the read passed include_media_urls and the attachment is available; an expired link is refused — read again for a fresh one", + "type": "string" +} - added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_get_plan1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_get_profile3 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"which of your accounts to ask from, from wa_list_accounts"New value: +"which of your accounts to ask from, from wa_list_accounts; omit it when the workspace has only one account" - removed
Input schema / requiredRemoved value: -[ - "account_id" -] - added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_join_group1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_leave_chat1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_list_blocked1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_list_calls1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_list_channels1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_list_contacts1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_list_group_members1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_list_groups1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_list_messages4 fields changed- added
Input schema / properties / include_media_urlsAdded value: +{ + "description": "also return attachment.media_url on each available attachment — a time-limited (1h) signed URL to GET the bytes with plain HTTP instead of a wa_get_media call; off by default", + "type": "boolean" +} - changed
Output schema / properties / messages / items / properties / attachment / descriptionPrevious value: -"present on an image, video, audio, document or sticker message: the file's mime type, size and name; fetch the bytes with wa_get_media"New value: +"present on an image, video, audio, document or sticker message: the file's mime type, size and name; fetch the bytes with wa_get_media, or pass include_media_urls on the read to get a direct media_url" - added
Output schema / properties / messages / items / properties / attachment / properties / media_urlAdded value: +{ + "description": "a time-limited (1h) signed URL to GET the attachment's bytes, present only when the read passed include_media_urls and the attachment is available; an expired link is refused — read again for a fresh one", + "type": "string" +} - added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_list_templates1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_load_history3 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"the account, as returned by wa_list_accounts"New value: +"the account, as returned by wa_list_accounts; omit it when the workspace has only one account" - changed
Input schema / requiredPrevious value: -[ - "account_id", - "chat" -]New value: +[ + "chat" +] - added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_pair_account1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_pair_status1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_react3 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"the account, as returned by wa_list_accounts"New value: +"the account, as returned by wa_list_accounts; omit it when the workspace has only one account" - changed
Input schema / requiredPrevious value: -[ - "account_id", - "chat", - "message_id", - "reaction" -]New value: +[ + "chat", + "message_id", + "reaction" +] - added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_remove_participants1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_report1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_send_message3 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"the account to send from, as returned by wa_list_accounts"New value: +"the account to send from — the account_id on the message row you are replying to, or from wa_list_accounts; omit it when the workspace has only one account" - changed
Input schema / requiredPrevious value: -[ - "account_id", - "to" -]New value: +[ + "to" +] - added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_set_presence3 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"the account, as returned by wa_list_accounts"New value: +"the account, as returned by wa_list_accounts; omit it when the workspace has only one account" - changed
Input schema / requiredPrevious value: -[ - "account_id", - "state" -]New value: +[ + "state" +] - added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_set_profile_photo1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_set_webhook1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_unpair_account1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_update_group1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
- Changed
wa_update_participants1 field changed- added
Output schema / properties / refusal / properties / candidatesAdded value: +{ + "description": "on an account_ambiguous refusal: the accounts to choose from — retry with one of these as account_id", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the id to retry with as account_id", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + }, + "status": { + "description": "whether the number works right now — live, connecting, or why not, as wa_list_accounts reports it", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +}
8 tool updates
- Changed
wa_get_chat2 fields changed- changed
Output schema / properties / messages / items / properties / chat / descriptionPrevious value: -"the conversation JID; pass it to wa_send_message's 'to' to reply here — a group is …@g.us, a channel …@newsletter"New value: +"the conversation JID; pass it to wa_send_message's 'to' to reply here — a group is …@g.us, a channel …@newsletter; on a Telegram account a Telegram id: <id>@telegram for a user, -<id>@telegram for a basic group, -100<id>@telegram for a channel or supergroup" - changed
Output schema / properties / messages / items / properties / peer / descriptionPrevious value: -"the other party's phone number (for a group/channel this is the individual SENDER; use chat to reply)"New value: +"the other party's phone number (for a group/channel this is the individual SENDER; use chat to reply); on a Telegram account the other party's Telegram id, <id>@telegram"
- Changed
wa_get_media1 field changed- changed
Input schema / properties / message_id / descriptionPrevious value: -"the WhatsApp message id whose attachment to fetch, from wa_list_messages"New value: +"the message id whose attachment to fetch, from wa_list_messages (a WhatsApp message id, or on a Telegram account one of the form <chat>_<n>)"
- Changed
wa_get_message2 fields changed- changed
Output schema / properties / message / properties / chat / descriptionPrevious value: -"the conversation JID; pass it to wa_send_message's 'to' to reply here — a group is …@g.us, a channel …@newsletter"New value: +"the conversation JID; pass it to wa_send_message's 'to' to reply here — a group is …@g.us, a channel …@newsletter; on a Telegram account a Telegram id: <id>@telegram for a user, -<id>@telegram for a basic group, -100<id>@telegram for a channel or supergroup" - changed
Output schema / properties / message / properties / peer / descriptionPrevious value: -"the other party's phone number (for a group/channel this is the individual SENDER; use chat to reply)"New value: +"the other party's phone number (for a group/channel this is the individual SENDER; use chat to reply); on a Telegram account the other party's Telegram id, <id>@telegram"
- Changed
wa_list_accounts4 fields changed- changed
Output schema / properties / accounts / descriptionPrevious value: -"the WhatsApp accounts this API key can use"New value: +"the accounts this API key can use — WhatsApp numbers and Telegram accounts; each says which in backend" - changed
Output schema / properties / accounts / items / properties / backend / descriptionPrevious value: -"the account's backend: official (WhatsApp Business API) or personal (a linked device)"New value: +"the account's backend: official (WhatsApp Business API), personal (a WhatsApp linked device) or telegram (a Telegram user account; its chats and senders are Telegram ids of the form <id>@telegram)" - changed
Output schema / properties / accounts / items / properties / push_name / descriptionPrevious value: -"the display name WhatsApp shows for this account"New value: +"the display name WhatsApp (or Telegram) shows for this account" - changed
Output schema / properties / accounts / items / properties / status / descriptionPrevious value: -"whether the number is actually working: live, connecting, starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked"New value: +"whether the number is actually working: live, connecting, starting, not_running, whatsapp_down (telegram_down for a Telegram account), suspended, pairing, unlinked or locked"
- Changed
wa_list_messages3 fields changed- changed
Input schema / properties / chat / descriptionPrevious value: -"only this conversation — a phone number or a group JID"New value: +"only this conversation — a phone number or a group JID, or on a Telegram account the chat's Telegram id (<id>@telegram)" - changed
Output schema / properties / messages / items / properties / chat / descriptionPrevious value: -"the conversation JID; pass it to wa_send_message's 'to' to reply here — a group is …@g.us, a channel …@newsletter"New value: +"the conversation JID; pass it to wa_send_message's 'to' to reply here — a group is …@g.us, a channel …@newsletter; on a Telegram account a Telegram id: <id>@telegram for a user, -<id>@telegram for a basic group, -100<id>@telegram for a channel or supergroup" - changed
Output schema / properties / messages / items / properties / peer / descriptionPrevious value: -"the other party's phone number (for a group/channel this is the individual SENDER; use chat to reply)"New value: +"the other party's phone number (for a group/channel this is the individual SENDER; use chat to reply); on a Telegram account the other party's Telegram id, <id>@telegram"
- Changed
wa_pair_account5 fields changed- changed
Input schema / properties / import_history / descriptionPrevious value: -"import the phone's recent message history (about two months) as read-only history for this pairing; omit to use the workspace default"New value: +"import the phone's recent message history (about two months) as read-only history for this pairing; omit to use the workspace default (WhatsApp only)" - added
Input schema / properties / networkAdded value: +{ + "description": "the messaging network of the account to link: whatsapp (the default) or telegram. A Telegram account links by QR only: the user scans it from Telegram → Settings → Devices → Link Desktop Device. Telegram accounts must be enabled for the workspace, or the call is refused", + "type": "string" +} - changed
Input schema / properties / phone / descriptionPrevious value: -"link by phone-number code instead of a QR: the number to link, in international format with its country code (for example +52 998 123 4567). WhatsApp on that phone is asked to accept an 8-character code, returned as pair_code. Use it when the user has only the one phone that runs WhatsApp and cannot scan a QR from another screen"New value: +"link by phone-number code instead of a QR: the number to link, in international format with its country code (for example +52 998 123 4567). WhatsApp on that phone is asked to accept an 8-character code, returned as pair_code. Use it when the user has only the one phone that runs WhatsApp and cannot scan a QR from another screen (WhatsApp only)" - added
Output schema / properties / networkAdded value: +{ + "description": "the messaging network the pairing links on: whatsapp or telegram", + "type": "string" +} - changed
Output schema / properties / state / descriptionPrevious value: -"starting, qr, code, paired or failed"New value: +"starting, qr, code, password_needed (a Telegram account with two-step verification: the user must enter their cloud password on the console's pairing page — never ask for it here), paired or failed"
- Changed
wa_pair_status2 fields changed- added
Output schema / properties / networkAdded value: +{ + "description": "the messaging network the pairing links on: whatsapp or telegram", + "type": "string" +} - changed
Output schema / properties / state / descriptionPrevious value: -"starting, qr, code, paired or failed"New value: +"starting, qr, code, password_needed (a Telegram account with two-step verification: the user must enter their cloud password on the console's pairing page — never ask for it here), paired or failed"
- Changed
wa_send_message1 field changed- changed
Input schema / properties / to / descriptionPrevious value: -"the recipient: a phone number in international form (digits only, e.g. 447700900123) for a 1:1 chat, or a full group/channel JID (…@g.us for a group, …@newsletter for a channel)"New value: +"the recipient. WhatsApp: a phone number in international form (digits only, e.g. 447700900123) for a 1:1 chat, or a full group/channel JID (…@g.us for a group, …@newsletter for a channel). Telegram (an account whose backend is telegram): the chat id exactly as wa_list_messages reports it (<id>@telegram; a group is -<id>@telegram, a channel or supergroup -100<id>@telegram) to reply, or to start a conversation an @username, a t.me/<name> link or a phone in +E.164 form — never a bare number, which could be a phone or a user id"
1 tool update
- Changed
wa_list_messages1 field changed- added
Output schema / properties / hintAdded value: +{ + "description": "present when the read found nothing new: wait before polling again", + "type": "string" +}
2 tool updates
- Changed
wa_get_media4 fields changed- changed
Output schema / properties / media_base64 / descriptionPrevious value: -"base64 of the attachment, present when status is ok"New value: +"base64 of the attachment, present for a small attachment" - added
Output schema / properties / media_urlAdded value: +{ + "description": "a time-limited (1h) URL to GET a large attachment's bytes, present instead of media_base64 when the attachment is over the inline cap", + "type": "string" +} - added
Output schema / properties / sizeAdded value: +{ + "description": "the attachment size in bytes", + "type": "integer" +} - changed
Output schema / properties / status / descriptionPrevious value: -"ok (media returned) or refused"New value: +"ok (media returned, inline or as a url) or refused"
- Changed
wa_set_webhook1 field changed- changed
Input schema / properties / events / descriptionPrevious value: -"which events to receive; defaults to message.inbound"New value: +"which events to receive — any of message.inbound, message.outbound, message.status, account.connected, account.disconnected, account.unlinked, account.blocked, call.completed, call.missed; defaults to message.inbound"
1 tool update
- Changed
wa_pair_account1 field changed- changed
Input schema / properties / phone / descriptionPrevious value: -"link by phone-number code instead of a QR: the number to link, in international format with its country code (for example +52 998 123 4567). WhatsApp on that phone is asked to accept an 8-character code, returned as pair_code. Use it when the user has only that phone and cannot scan a QR"New value: +"link by phone-number code instead of a QR: the number to link, in international format with its country code (for example +52 998 123 4567). WhatsApp on that phone is asked to accept an 8-character code, returned as pair_code. Use it when the user has only the one phone that runs WhatsApp and cannot scan a QR from another screen"
3 tool updates
- Changed
wa_get_chat1 field changed- changed
Output schema / properties / messages / items / properties / kind / descriptionPrevious value: -"what the message is: text, image, video, audio, document, sticker, reaction, location, live_location, contact, poll, poll_vote, video_note, album, event, comment, pin, group_invite or template; other is a type this server does not classify. text carries a body, and so do image/video/document captions and template text; an image, video, audio, document or sticker attachment can be fetched with wa_get_media"New value: +"what the message is: text, image, video, audio, document, sticker, reaction, location, live_location, contact, poll, poll_vote, video_note, album, event, comment, pin, group_invite, template or call_permission; other is a type this server does not classify. text carries a body, and so do image/video/document captions, template text and a call_permission request or answer; an image, video, audio, document or sticker attachment can be fetched with wa_get_media"
- Changed
wa_get_message1 field changed- changed
Output schema / properties / message / properties / kind / descriptionPrevious value: -"what the message is: text, image, video, audio, document, sticker, reaction, location, live_location, contact, poll, poll_vote, video_note, album, event, comment, pin, group_invite or template; other is a type this server does not classify. text carries a body, and so do image/video/document captions and template text; an image, video, audio, document or sticker attachment can be fetched with wa_get_media"New value: +"what the message is: text, image, video, audio, document, sticker, reaction, location, live_location, contact, poll, poll_vote, video_note, album, event, comment, pin, group_invite, template or call_permission; other is a type this server does not classify. text carries a body, and so do image/video/document captions, template text and a call_permission request or answer; an image, video, audio, document or sticker attachment can be fetched with wa_get_media"
- Changed
wa_list_messages1 field changed- changed
Output schema / properties / messages / items / properties / kind / descriptionPrevious value: -"what the message is: text, image, video, audio, document, sticker, reaction, location, live_location, contact, poll, poll_vote, video_note, album, event, comment, pin, group_invite or template; other is a type this server does not classify. text carries a body, and so do image/video/document captions and template text; an image, video, audio, document or sticker attachment can be fetched with wa_get_media"New value: +"what the message is: text, image, video, audio, document, sticker, reaction, location, live_location, contact, poll, poll_vote, video_note, album, event, comment, pin, group_invite, template or call_permission; other is a type this server does not classify. text carries a body, and so do image/video/document captions, template text and a call_permission request or answer; an image, video, audio, document or sticker attachment can be fetched with wa_get_media"
45 tool updates
- Changed
wa_ai_call_get3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_ai_call_hangup3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_ai_call_start3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_ai_list_calls3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_ai_list_presets3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_block_contact3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_create_group3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_create_template4 fields changed- added
Input schema / properties / call_permissionAdded value: +{ + "description": "true asks the customer to allow the business to call them (WhatsApp's call permission request); MARKETING or UTILITY only, and no buttons", + "type": "boolean" +} - added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_delete_group3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_delete_message3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_delete_template3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_delete_webhook3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_edit_message3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_enable_webhook3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_follow_channel3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_get_chat4 fields changed- added
Output schema / properties / account_noticesAdded value: +{ + "description": "present when a number this read covers is not working: new messages are not arriving on it; says why and what to do", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the account this notice is about", + "type": "string" + }, + "message": { + "description": "what is wrong and what to do; tell the user", + "type": "string" + }, + "since": { + "description": "when it stopped working, RFC3339, when known", + "type": "string" + }, + "status": { + "description": "why it is not live: starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" + }, + "status_reason": { + "description": "the detail, e.g. no_egress, no_plan, stopped", + "type": "string" + } + }, + "required": [ + "account_id", + "status", + "message" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +} - added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_get_group_invite_link3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_get_media3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_get_message4 fields changed- added
Output schema / properties / account_noticesAdded value: +{ + "description": "present when a number this read covers is not working: new messages are not arriving on it; says why and what to do", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the account this notice is about", + "type": "string" + }, + "message": { + "description": "what is wrong and what to do; tell the user", + "type": "string" + }, + "since": { + "description": "when it stopped working, RFC3339, when known", + "type": "string" + }, + "status": { + "description": "why it is not live: starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" + }, + "status_reason": { + "description": "the detail, e.g. no_egress, no_plan, stopped", + "type": "string" + } + }, + "required": [ + "account_id", + "status", + "message" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +} - added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_get_plan3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_get_profile3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_join_group3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_leave_chat3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_list_accounts4 fields changed- added
Output schema / properties / accounts / items / properties / statusAdded value: +{ + "description": "whether the number is actually working: live, connecting, starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / accounts / items / properties / status_reasonAdded value: +{ + "description": "the detail when it is not live, e.g. no_egress, no_plan, stopped", + "type": "string" +} - added
Output schema / properties / accounts / items / properties / status_sinceAdded value: +{ + "description": "when it stopped working, RFC3339, when known", + "type": "string" +} - added
Output schema / properties / accounts / items / properties / what_to_doAdded value: +{ + "description": "what is wrong and what to do, when it is not live; tell the user", + "type": "string" +}
- Changed
wa_list_blocked3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_list_calls3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_list_channels3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_list_contacts3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_list_group_members3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_list_groups3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_list_messages4 fields changed- added
Output schema / properties / account_noticesAdded value: +{ + "description": "present when a number this read covers is not working: new messages are not arriving on it; says why and what to do", + "items": { + "additionalProperties": false, + "properties": { + "account_id": { + "description": "the account this notice is about", + "type": "string" + }, + "message": { + "description": "what is wrong and what to do; tell the user", + "type": "string" + }, + "since": { + "description": "when it stopped working, RFC3339, when known", + "type": "string" + }, + "status": { + "description": "why it is not live: starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" + }, + "status_reason": { + "description": "the detail, e.g. no_egress, no_plan, stopped", + "type": "string" + } + }, + "required": [ + "account_id", + "status", + "message" + ], + "type": "object" + }, + "type": [ + "null", + "array" + ] +} - added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_list_templates4 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +} - added
Output schema / properties / templates / items / properties / call_permissionAdded value: +{ + "description": "true when the template asks the customer to allow the business to call them (WhatsApp's call permission request)", + "type": "boolean" +}
- Changed
wa_load_history3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_pair_account3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_pair_status3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_react3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_remove_participants3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_report3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_send_message3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_set_presence3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_set_profile_photo3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_set_webhook3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_unpair_account3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_update_group3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
- Changed
wa_update_participants3 fields changed- added
Output schema / properties / refusal / properties / account_statusAdded value: +{ + "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked", + "type": "string" +} - added
Output schema / properties / refusal / properties / account_status_reasonAdded value: +{ + "description": "the detail of account_status, e.g. no_egress, stopped, no_plan", + "type": "string" +} - added
Output schema / properties / refusal / properties / sinceAdded value: +{ + "description": "when the number stopped working, RFC3339, when known", + "type": "string" +}
2 tool updates
- Changed
wa_pair_account4 fields changed- added
Input schema / properties / phoneAdded value: +{ + "description": "link by phone-number code instead of a QR: the number to link, in international format with its country code (for example +52 998 123 4567). WhatsApp on that phone is asked to accept an 8-character code, returned as pair_code. Use it when the user has only that phone and cannot scan a QR", + "type": "string" +} - added
Output schema / properties / expires_atAdded value: +{ + "description": "when pair_code stops working, RFC 3339 (phone-number pairing only)", + "type": "string" +} - added
Output schema / properties / pair_codeAdded value: +{ + "description": "the 8-character code the user types on their phone (phone-number pairing only)", + "type": "string" +} - changed
Output schema / properties / state / descriptionPrevious value: -"starting, qr, paired or failed"New value: +"starting, qr, code, paired or failed"
- Changed
wa_pair_status3 fields changed- added
Output schema / properties / expires_atAdded value: +{ + "description": "when pair_code stops working, RFC 3339 (phone-number pairing only)", + "type": "string" +} - added
Output schema / properties / pair_codeAdded value: +{ + "description": "the 8-character code the user types on their phone (phone-number pairing only)", + "type": "string" +} - changed
Output schema / properties / state / descriptionPrevious value: -"starting, qr, paired or failed"New value: +"starting, qr, code, paired or failed"
1 tool update
- Added
wa_report
7 tool updates
- Added
wa_create_template - Added
wa_delete_template - Changed
wa_get_chat9 fields changed- added
Input schema / properties / sinceAdded value: +{ + "description": "only messages sent at or after this time: RFC3339 with a zone (2026-10-01T09:00:00+03:00) or a date (2026-10-01 = midnight UTC); omit for no lower bound", + "type": "string" +} - added
Input schema / properties / untilAdded value: +{ + "description": "only messages sent BEFORE this time — exclusive, so all of 1 October is since 2026-10-01 until 2026-10-02; same formats as since; omit for no upper bound", + "type": "string" +} - added
Output schema / properties / accountAdded value: +{ + "additionalProperties": false, + "description": "the account this conversation was read from", + "properties": { + "account_id": { + "description": "the id to pass to other wa_ tools", + "type": "string" + }, + "name": { + "description": "the account's WhatsApp display name", + "type": "string" + }, + "phone": { + "description": "the account's phone number, E.164", + "type": "string" + } + }, + "required": [ + "account_id" + ], + "type": [ + "null", + "object" + ] +} - added
Output schema / properties / has_moreAdded value: +{ + "description": "true when older messages match than were returned; page them with wa_list_messages(account_id, chat, since, until, include_history=true)", + "type": "boolean" +} - added
Output schema / properties / messages / items / properties / account_nameAdded value: +{ + "description": "the WhatsApp display name of that account", + "type": "string" +} - added
Output schema / properties / messages / items / properties / account_phoneAdded value: +{ + "description": "the phone number of your account this message was sent from or received on, E.164", + "type": "string" +} - added
Output schema / properties / messages / items / properties / attachmentAdded value: +{ + "additionalProperties": false, + "description": "present on an image, video, audio, document or sticker message: the file's mime type, size and name; fetch the bytes with wa_get_media", + "properties": { + "available": { + "description": "true when the file should be fetchable with wa_get_media(account_id, message_id) — a live received attachment; false for history and for files you sent, which are not kept", + "type": "boolean" + }, + "file_name": { + "description": "documents only: the file name the sender gave it", + "type": "string" + }, + "mime": { + "description": "the attachment's mime type as the sender declared it, e.g. image/jpeg or application/pdf; empty for a message stored before this was recorded", + "type": "string" + }, + "size": { + "description": "the attachment's size in bytes as the sender declared it; 0 when unknown", + "type": "integer" + } + }, + "required": [ + "available" + ], + "type": [ + "null", + "object" + ] +} - added
Output schema / properties / messages / items / properties / received_atAdded value: +{ + "description": "when this server received and stored the message, RFC3339; later than at for a message delivered late or loaded as history", + "type": "string" +} - added
Output schema / properties / messages / items / properties / sender_nameAdded value: +{ + "description": "who wrote the message, by name: for inbound the sender's name as saved in this account's contacts, or else the name they chose for themselves; for outbound this account's own WhatsApp name. Empty when no name is known", + "type": "string" +}
- Changed
wa_get_message5 fields changed- added
Output schema / properties / message / properties / account_nameAdded value: +{ + "description": "the WhatsApp display name of that account", + "type": "string" +} - added
Output schema / properties / message / properties / account_phoneAdded value: +{ + "description": "the phone number of your account this message was sent from or received on, E.164", + "type": "string" +} - added
Output schema / properties / message / properties / attachmentAdded value: +{ + "additionalProperties": false, + "description": "present on an image, video, audio, document or sticker message: the file's mime type, size and name; fetch the bytes with wa_get_media", + "properties": { + "available": { + "description": "true when the file should be fetchable with wa_get_media(account_id, message_id) — a live received attachment; false for history and for files you sent, which are not kept", + "type": "boolean" + }, + "file_name": { + "description": "documents only: the file name the sender gave it", + "type": "string" + }, + "mime": { + "description": "the attachment's mime type as the sender declared it, e.g. image/jpeg or application/pdf; empty for a message stored before this was recorded", + "type": "string" + }, + "size": { + "description": "the attachment's size in bytes as the sender declared it; 0 when unknown", + "type": "integer" + } + }, + "required": [ + "available" + ], + "type": [ + "null", + "object" + ] +} - added
Output schema / properties / message / properties / received_atAdded value: +{ + "description": "when this server received and stored the message, RFC3339; later than at for a message delivered late or loaded as history", + "type": "string" +} - added
Output schema / properties / message / properties / sender_nameAdded value: +{ + "description": "who wrote the message, by name: for inbound the sender's name as saved in this account's contacts, or else the name they chose for themselves; for outbound this account's own WhatsApp name. Empty when no name is known", + "type": "string" +}
- Changed
wa_list_calls4 fields changed- added
Input schema / properties / sinceAdded value: +{ + "description": "only calls at or after this time: RFC3339 with a zone (2026-10-01T09:00:00+03:00) or a date (2026-10-01 = midnight UTC); omit for no lower bound", + "type": "string" +} - added
Input schema / properties / untilAdded value: +{ + "description": "only calls BEFORE this time — exclusive, so all of 1 October is since 2026-10-01 until 2026-10-02; same formats as since; omit for no upper bound", + "type": "string" +} - added
Output schema / properties / calls / items / properties / account_nameAdded value: +{ + "description": "the WhatsApp display name of that account", + "type": "string" +} - added
Output schema / properties / calls / items / properties / account_phoneAdded value: +{ + "description": "the phone number of your account that placed or received this call, E.164", + "type": "string" +}
- Changed
wa_list_messages11 fields changed- added
Input schema / properties / account_idAdded value: +{ + "description": "only this account's messages, from wa_list_accounts; omit for every account", + "type": "string" +} - added
Input schema / properties / chatAdded value: +{ + "description": "only this conversation — a phone number or a group JID", + "type": "string" +} - added
Input schema / properties / include_historyAdded value: +{ + "description": "also return imported history (pairing sync and wa_load_history); off by default. With it on, a page is in storage order rather than time order — sort by at", + "type": "boolean" +} - added
Input schema / properties / sinceAdded value: +{ + "description": "only messages sent at or after this time: RFC3339 with a zone (2026-10-01T09:00:00+03:00) or a date (2026-10-01 = midnight UTC); omit for no lower bound", + "type": "string" +} - added
Input schema / properties / untilAdded value: +{ + "description": "only messages sent BEFORE this time — exclusive, so all of 1 October is since 2026-10-01 until 2026-10-02; same formats as since; omit for no upper bound", + "type": "string" +} - added
Output schema / properties / messages / items / properties / account_nameAdded value: +{ + "description": "the WhatsApp display name of that account", + "type": "string" +} - added
Output schema / properties / messages / items / properties / account_phoneAdded value: +{ + "description": "the phone number of your account this message was sent from or received on, E.164", + "type": "string" +} - added
Output schema / properties / messages / items / properties / attachmentAdded value: +{ + "additionalProperties": false, + "description": "present on an image, video, audio, document or sticker message: the file's mime type, size and name; fetch the bytes with wa_get_media", + "properties": { + "available": { + "description": "true when the file should be fetchable with wa_get_media(account_id, message_id) — a live received attachment; false for history and for files you sent, which are not kept", + "type": "boolean" + }, + "file_name": { + "description": "documents only: the file name the sender gave it", + "type": "string" + }, + "mime": { + "description": "the attachment's mime type as the sender declared it, e.g. image/jpeg or application/pdf; empty for a message stored before this was recorded", + "type": "string" + }, + "size": { + "description": "the attachment's size in bytes as the sender declared it; 0 when unknown", + "type": "integer" + } + }, + "required": [ + "available" + ], + "type": [ + "null", + "object" + ] +} - added
Output schema / properties / messages / items / properties / received_atAdded value: +{ + "description": "when this server received and stored the message, RFC3339; later than at for a message delivered late or loaded as history", + "type": "string" +} - added
Output schema / properties / messages / items / properties / sender_nameAdded value: +{ + "description": "who wrote the message, by name: for inbound the sender's name as saved in this account's contacts, or else the name they chose for themselves; for outbound this account's own WhatsApp name. Empty when no name is known", + "type": "string" +} - added
Output schema / properties / refusalAdded value: +{ + "additionalProperties": false, + "description": "present only when the request was declined; next_cursor is then your after_cursor, unchanged", + "properties": { + "message": { + "description": "a human-readable explanation", + "type": "string" + }, + "reason": { + "description": "why the call was declined", + "type": "string" + }, + "refused": { + "description": "true when the call was declined rather than performed", + "type": "boolean" + }, + "retry_after_seconds": { + "description": "seconds to wait before retrying; absent or 0 means retrying will not help", + "type": "integer" + } + }, + "required": [ + "refused", + "reason", + "message" + ], + "type": [ + "null", + "object" + ] +}
- Changed
wa_list_templates6 fields changed- changed
Output schema / properties / templates / descriptionPrevious value: -"the approved message templates, with the name/language/variables to pass to wa_send_message"New value: +"every message template with its review status; only APPROVED ones can be sent, with the name/language/variables to pass to wa_send_message" - added
Output schema / properties / templates / items / properties / bodyAdded value: +{ + "description": "the template's body text as Meta holds it, with its {{n}} variables", + "type": "string" +} - added
Output schema / properties / templates / items / properties / buttonsAdded value: +{ + "description": "one line per button, e.g. 'Quick reply: Yes' or 'Link: Shop → https://…'", + "items": { + "type": "string" + }, + "type": [ + "null", + "array" + ] +} - added
Output schema / properties / templates / items / properties / footerAdded value: +{ + "description": "the template's footer, if any", + "type": "string" +} - added
Output schema / properties / templates / items / properties / headerAdded value: +{ + "description": "the template's text header, if any", + "type": "string" +} - added
Output schema / properties / templates / items / properties / rejected_reasonAdded value: +{ + "description": "for a REJECTED template, Meta's reason code (e.g. INVALID_FORMAT, TAG_CONTENT_MISMATCH); fix the template and create it again under a new name", + "type": "string" +}
4 tool updates
- Changed
wa_get_chat1 field changed- added
Output schema / properties / messages / items / properties / statusAdded value: +{ + "description": "delivery status of an outbound message from the provider's receipts: sent, delivered, read or failed; empty when no receipt has arrived (or for inbound). Only Business (Cloud API) numbers report this today", + "type": "string" +}
- Changed
wa_get_message1 field changed- added
Output schema / properties / message / properties / statusAdded value: +{ + "description": "delivery status of an outbound message from the provider's receipts: sent, delivered, read or failed; empty when no receipt has arrived (or for inbound). Only Business (Cloud API) numbers report this today", + "type": "string" +}
- Changed
wa_list_messages1 field changed- added
Output schema / properties / messages / items / properties / statusAdded value: +{ + "description": "delivery status of an outbound message from the provider's receipts: sent, delivered, read or failed; empty when no receipt has arrived (or for inbound). Only Business (Cloud API) numbers report this today", + "type": "string" +}
- Added
wa_list_templates
1 tool update
- Changed
wa_send_message3 fields changed- added
Input schema / properties / templateAdded value: +{ + "description": "optional: the name of a pre-approved message template to send (Business/WABA numbers only), e.g. hello_world. Use this to start a conversation or to message outside the 24-hour window; text and attachments are ignored when set", + "type": "string" +} - added
Input schema / properties / template_languageAdded value: +{ + "description": "optional: the template's language/locale code, e.g. en_US; defaults to en_US", + "type": "string" +} - added
Input schema / properties / template_variablesAdded value: +{ + "description": "optional: values that fill the template body's positional {{1}}, {{2}}, … placeholders, in order", + "items": { + "type": "string" + }, + "type": [ + "null", + "array" + ] +}
1 tool update
- Changed
wa_list_accounts3 fields changed- added
Output schema / properties / accounts / items / properties / backendAdded value: +{ + "description": "the account's backend: official (WhatsApp Business API) or personal (a linked device)", + "type": "string" +} - added
Output schema / properties / accounts / items / properties / featuresAdded value: +{ + "description": "the functions this number supports, e.g. messaging, templates, groups, calls; call only tools whose function is listed here", + "items": { + "type": "string" + }, + "type": [ + "null", + "array" + ] +} - changed
Output schema / properties / accounts / items / requiredPrevious value: -[ - "account_id", - "phone", - "push_name", - "state" -]New value: +[ + "account_id", + "phone", + "push_name", + "state", + "backend", + "features" +]
2 tool updates
- Added
wa_ai_call_hangup - Changed
wa_ai_list_presets3 fields changed- added
Output schema / properties / presets / items / properties / ring_delay_secsAdded value: +{ + "type": "integer" +} - added
Output schema / properties / presets / items / properties / start_delay_secsAdded value: +{ + "type": "integer" +} - changed
Output schema / properties / presets / items / requiredPrevious value: -[ - "id", - "name", - "description", - "provider", - "agent_id", - "agent_name", - "account_id", - "line", - "default_variables", - "expected_variables", - "enabled", - "answers_inbound", - "ready" -]New value: +[ + "id", + "name", + "description", + "provider", + "agent_id", + "agent_name", + "account_id", + "line", + "default_variables", + "expected_variables", + "enabled", + "answers_inbound", + "ring_delay_secs", + "start_delay_secs", + "ready" +]
Publisher details
- Operator
- WhatMCP
- Operator website
- https://whatsmcp.com/mcp?utm_source=glama&utm_medium=directory&utm_campaign=mcp_listing&utm_content=com.whatsmcp
- Vendor relationship
- First-party
- Documentation
- https://whatsmcp.com/docs?utm_source=glama&utm_medium=directory&utm_campaign=mcp_listing&utm_content=com.whatsmcp
- Restrictions
- Plans: Frees, Started, Business, Premium · Publisher source
Related MCP Connectors
Ask questions across your WhatsApp inbox from Claude, ChatGPT, Cursor or any MCP client.
WhatsApp for Claude, ChatGPT or any AI agent: search, reply and send. Personal or Business API.
Free WhatsApp MCP server for ChatGPT and Claude: read and search chats, every send you approve.
Read-only WhatsApp MCP for your AI agent: it reads the chats you choose. Try the public demo.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables driving a Claude Code (or other MCP client) session directly from WhatsApp chats, with bidirectional messaging, media and locally transcribed voice notes, polls, per-group personalities, cron tasks, and emoji-reaction approval of tool requests. Inbound traffic is gated by pairing codes, allowlists, and per-group policies, and it runs either through a linked personal-device account or Meta's official Cloud API for business DMs.MIT
- AlicenseBqualityBmaintenanceEnables sending messages, images, documents and more on WhatsApp directly from any MCP-compatible AI, with tools for chat management, groups, and webhooks.371MIT
- AlicenseNot gradedqualityCmaintenanceA self-hosted WhatsApp bridge with an AI agent enabling searchable context, message drafting, and approval workflow via MCP protocol for Claude Desktop and other MCP clients.1MIT
- FlicenseNot gradedqualityAmaintenanceConnects a Claude Code (or any MCP) session to a WhatsApp account as a linked device or via Meta's official Cloud API, enabling bidirectional chats, group support, media exchange, local voice-note transcription, and scheduled tasks. Inbound messages are gated by pairing codes, allowlists and per-group policies, and Claude's tool permission requests can be approved or denied remotely with an emoji reaction.-
Glama MCP Gateway
Add one secure layer between your agents and this server.