Skip to main content
Glama

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.

Ownership verified

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

A3.6/5.0

Scored across 46 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count2/5

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.

Completeness4/5

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. 1 tool update
    • Changedwa_list_accounts1 field changed
      • addedOutput schema / properties / accounts / items / properties / last_inbound_at
        Added 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"
        +}
  2. 44 tool updates
    • Changedwa_ai_call_get1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_ai_call_hangup1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_ai_call_start1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_ai_list_calls1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_ai_list_presets1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_block_contact1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_create_group1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_create_template1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_delete_group1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_delete_message3 fields changed
      • changedInput schema / properties / account_id / description
        Previous 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"
      • changedInput schema / required
        Previous value: -[
        -  "account_id",
        -  "chat",
        -  "message_id"
        -]New value: +[
        +  "chat",
        +  "message_id"
        +]
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_delete_template1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_delete_webhook1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_edit_message3 fields changed
      • changedInput schema / properties / account_id / description
        Previous 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"
      • changedInput schema / required
        Previous value: -[
        -  "account_id",
        -  "chat",
        -  "message_id",
        -  "text"
        -]New value: +[
        +  "chat",
        +  "message_id",
        +  "text"
        +]
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_enable_webhook1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_follow_channel1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_get_chat6 fields changed
      • changedInput schema / properties / account_id / description
        Previous 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"
      • addedInput schema / properties / include_media_urls
        Added 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"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "account_id"
        -]
      • changedOutput schema / properties / messages / items / properties / attachment / description
        Previous 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"
      • addedOutput schema / properties / messages / items / properties / attachment / properties / media_url
        Added 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"
        +}
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_get_group_invite_link1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_get_media3 fields changed
      • changedInput schema / properties / account_id / description
        Previous 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"
      • changedInput schema / required
        Previous value: -[
        -  "account_id",
        -  "message_id"
        -]New value: +[
        +  "message_id"
        +]
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_get_message6 fields changed
      • changedInput schema / properties / account_id / description
        Previous 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"
      • addedInput schema / properties / include_media_urls
        Added 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"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "account_id"
        -]
      • changedOutput schema / properties / message / properties / attachment / description
        Previous 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"
      • addedOutput schema / properties / message / properties / attachment / properties / media_url
        Added 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"
        +}
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_get_plan1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_get_profile3 fields changed
      • changedInput schema / properties / account_id / description
        Previous 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"
      • removedInput schema / required
        Removed value: -[
        -  "account_id"
        -]
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_join_group1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_leave_chat1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_list_blocked1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_list_calls1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_list_channels1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_list_contacts1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_list_group_members1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_list_groups1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_list_messages4 fields changed
      • addedInput schema / properties / include_media_urls
        Added 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"
        +}
      • changedOutput schema / properties / messages / items / properties / attachment / description
        Previous 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"
      • addedOutput schema / properties / messages / items / properties / attachment / properties / media_url
        Added 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"
        +}
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_list_templates1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_load_history3 fields changed
      • changedInput schema / properties / account_id / description
        Previous 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"
      • changedInput schema / required
        Previous value: -[
        -  "account_id",
        -  "chat"
        -]New value: +[
        +  "chat"
        +]
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_pair_account1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_pair_status1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_react3 fields changed
      • changedInput schema / properties / account_id / description
        Previous 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"
      • changedInput schema / required
        Previous value: -[
        -  "account_id",
        -  "chat",
        -  "message_id",
        -  "reaction"
        -]New value: +[
        +  "chat",
        +  "message_id",
        +  "reaction"
        +]
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_remove_participants1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_report1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_send_message3 fields changed
      • changedInput schema / properties / account_id / description
        Previous 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"
      • changedInput schema / required
        Previous value: -[
        -  "account_id",
        -  "to"
        -]New value: +[
        +  "to"
        +]
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_set_presence3 fields changed
      • changedInput schema / properties / account_id / description
        Previous 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"
      • changedInput schema / required
        Previous value: -[
        -  "account_id",
        -  "state"
        -]New value: +[
        +  "state"
        +]
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_set_profile_photo1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_set_webhook1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_unpair_account1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_update_group1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
    • Changedwa_update_participants1 field changed
      • addedOutput schema / properties / refusal / properties / candidates
        Added 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"
        +  ]
        +}
  3. 8 tool updates
    • Changedwa_get_chat2 fields changed
      • changedOutput schema / properties / messages / items / properties / chat / description
        Previous 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"
      • changedOutput schema / properties / messages / items / properties / peer / description
        Previous 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"
    • Changedwa_get_media1 field changed
      • changedInput schema / properties / message_id / description
        Previous 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>)"
    • Changedwa_get_message2 fields changed
      • changedOutput schema / properties / message / properties / chat / description
        Previous 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"
      • changedOutput schema / properties / message / properties / peer / description
        Previous 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"
    • Changedwa_list_accounts4 fields changed
      • changedOutput schema / properties / accounts / description
        Previous 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"
      • changedOutput schema / properties / accounts / items / properties / backend / description
        Previous 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)"
      • changedOutput schema / properties / accounts / items / properties / push_name / description
        Previous value: -"the display name WhatsApp shows for this account"New value: +"the display name WhatsApp (or Telegram) shows for this account"
      • changedOutput schema / properties / accounts / items / properties / status / description
        Previous 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"
    • Changedwa_list_messages3 fields changed
      • changedInput schema / properties / chat / description
        Previous 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)"
      • changedOutput schema / properties / messages / items / properties / chat / description
        Previous 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"
      • changedOutput schema / properties / messages / items / properties / peer / description
        Previous 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"
    • Changedwa_pair_account5 fields changed
      • changedInput schema / properties / import_history / description
        Previous 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)"
      • addedInput schema / properties / network
        Added 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"
        +}
      • changedInput schema / properties / phone / description
        Previous 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)"
      • addedOutput schema / properties / network
        Added value: +{
        +  "description": "the messaging network the pairing links on: whatsapp or telegram",
        +  "type": "string"
        +}
      • changedOutput schema / properties / state / description
        Previous 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"
    • Changedwa_pair_status2 fields changed
      • addedOutput schema / properties / network
        Added value: +{
        +  "description": "the messaging network the pairing links on: whatsapp or telegram",
        +  "type": "string"
        +}
      • changedOutput schema / properties / state / description
        Previous 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"
    • Changedwa_send_message1 field changed
      • changedInput schema / properties / to / description
        Previous 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"
  4. 1 tool update
    • Changedwa_list_messages1 field changed
      • addedOutput schema / properties / hint
        Added value: +{
        +  "description": "present when the read found nothing new: wait before polling again",
        +  "type": "string"
        +}
  5. 2 tool updates
    • Changedwa_get_media4 fields changed
      • changedOutput schema / properties / media_base64 / description
        Previous value: -"base64 of the attachment, present when status is ok"New value: +"base64 of the attachment, present for a small attachment"
      • addedOutput schema / properties / media_url
        Added 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"
        +}
      • addedOutput schema / properties / size
        Added value: +{
        +  "description": "the attachment size in bytes",
        +  "type": "integer"
        +}
      • changedOutput schema / properties / status / description
        Previous value: -"ok (media returned) or refused"New value: +"ok (media returned, inline or as a url) or refused"
    • Changedwa_set_webhook1 field changed
      • changedInput schema / properties / events / description
        Previous 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"
  6. 1 tool update
    • Changedwa_pair_account1 field changed
      • changedInput schema / properties / phone / description
        Previous 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"
  7. 3 tool updates
    • Changedwa_get_chat1 field changed
      • changedOutput schema / properties / messages / items / properties / kind / description
        Previous 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"
    • Changedwa_get_message1 field changed
      • changedOutput schema / properties / message / properties / kind / description
        Previous 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"
    • Changedwa_list_messages1 field changed
      • changedOutput schema / properties / messages / items / properties / kind / description
        Previous 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"
  8. 45 tool updates
    • Changedwa_ai_call_get3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_ai_call_hangup3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_ai_call_start3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_ai_list_calls3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_ai_list_presets3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_block_contact3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_create_group3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_create_template4 fields changed
      • addedInput schema / properties / call_permission
        Added 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"
        +}
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_delete_group3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_delete_message3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_delete_template3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_delete_webhook3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_edit_message3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_enable_webhook3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_follow_channel3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_get_chat4 fields changed
      • addedOutput schema / properties / account_notices
        Added 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"
        +  ]
        +}
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_get_group_invite_link3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_get_media3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_get_message4 fields changed
      • addedOutput schema / properties / account_notices
        Added 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"
        +  ]
        +}
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_get_plan3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_get_profile3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_join_group3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_leave_chat3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_list_accounts4 fields changed
      • addedOutput schema / properties / accounts / items / properties / status
        Added value: +{
        +  "description": "whether the number is actually working: live, connecting, starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / accounts / items / properties / status_reason
        Added value: +{
        +  "description": "the detail when it is not live, e.g. no_egress, no_plan, stopped",
        +  "type": "string"
        +}
      • addedOutput schema / properties / accounts / items / properties / status_since
        Added value: +{
        +  "description": "when it stopped working, RFC3339, when known",
        +  "type": "string"
        +}
      • addedOutput schema / properties / accounts / items / properties / what_to_do
        Added value: +{
        +  "description": "what is wrong and what to do, when it is not live; tell the user",
        +  "type": "string"
        +}
    • Changedwa_list_blocked3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_list_calls3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_list_channels3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_list_contacts3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_list_group_members3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_list_groups3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_list_messages4 fields changed
      • addedOutput schema / properties / account_notices
        Added 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"
        +  ]
        +}
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_list_templates4 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
      • addedOutput schema / properties / templates / items / properties / call_permission
        Added value: +{
        +  "description": "true when the template asks the customer to allow the business to call them (WhatsApp's call permission request)",
        +  "type": "boolean"
        +}
    • Changedwa_load_history3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_pair_account3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_pair_status3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_react3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_remove_participants3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_report3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_send_message3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_set_presence3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_set_profile_photo3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_set_webhook3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_unpair_account3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_update_group3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
    • Changedwa_update_participants3 fields changed
      • addedOutput schema / properties / refusal / properties / account_status
        Added value: +{
        +  "description": "when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / account_status_reason
        Added value: +{
        +  "description": "the detail of account_status, e.g. no_egress, stopped, no_plan",
        +  "type": "string"
        +}
      • addedOutput schema / properties / refusal / properties / since
        Added value: +{
        +  "description": "when the number stopped working, RFC3339, when known",
        +  "type": "string"
        +}
  9. 2 tool updates
    • Changedwa_pair_account4 fields changed
      • addedInput schema / properties / phone
        Added 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"
        +}
      • addedOutput schema / properties / expires_at
        Added value: +{
        +  "description": "when pair_code stops working, RFC 3339 (phone-number pairing only)",
        +  "type": "string"
        +}
      • addedOutput schema / properties / pair_code
        Added value: +{
        +  "description": "the 8-character code the user types on their phone (phone-number pairing only)",
        +  "type": "string"
        +}
      • changedOutput schema / properties / state / description
        Previous value: -"starting, qr, paired or failed"New value: +"starting, qr, code, paired or failed"
    • Changedwa_pair_status3 fields changed
      • addedOutput schema / properties / expires_at
        Added value: +{
        +  "description": "when pair_code stops working, RFC 3339 (phone-number pairing only)",
        +  "type": "string"
        +}
      • addedOutput schema / properties / pair_code
        Added value: +{
        +  "description": "the 8-character code the user types on their phone (phone-number pairing only)",
        +  "type": "string"
        +}
      • changedOutput schema / properties / state / description
        Previous value: -"starting, qr, paired or failed"New value: +"starting, qr, code, paired or failed"
  10. 1 tool update
    • Addedwa_report
  11. 7 tool updates
    • Addedwa_create_template
    • Addedwa_delete_template
    • Changedwa_get_chat9 fields changed
      • addedInput schema / properties / since
        Added 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"
        +}
      • addedInput schema / properties / until
        Added 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"
        +}
      • addedOutput schema / properties / account
        Added 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"
        +  ]
        +}
      • addedOutput schema / properties / has_more
        Added 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"
        +}
      • addedOutput schema / properties / messages / items / properties / account_name
        Added value: +{
        +  "description": "the WhatsApp display name of that account",
        +  "type": "string"
        +}
      • addedOutput schema / properties / messages / items / properties / account_phone
        Added value: +{
        +  "description": "the phone number of your account this message was sent from or received on, E.164",
        +  "type": "string"
        +}
      • addedOutput schema / properties / messages / items / properties / attachment
        Added 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"
        +  ]
        +}
      • addedOutput schema / properties / messages / items / properties / received_at
        Added 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"
        +}
      • addedOutput schema / properties / messages / items / properties / sender_name
        Added 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"
        +}
    • Changedwa_get_message5 fields changed
      • addedOutput schema / properties / message / properties / account_name
        Added value: +{
        +  "description": "the WhatsApp display name of that account",
        +  "type": "string"
        +}
      • addedOutput schema / properties / message / properties / account_phone
        Added value: +{
        +  "description": "the phone number of your account this message was sent from or received on, E.164",
        +  "type": "string"
        +}
      • addedOutput schema / properties / message / properties / attachment
        Added 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"
        +  ]
        +}
      • addedOutput schema / properties / message / properties / received_at
        Added 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"
        +}
      • addedOutput schema / properties / message / properties / sender_name
        Added 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"
        +}
    • Changedwa_list_calls4 fields changed
      • addedInput schema / properties / since
        Added 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"
        +}
      • addedInput schema / properties / until
        Added 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"
        +}
      • addedOutput schema / properties / calls / items / properties / account_name
        Added value: +{
        +  "description": "the WhatsApp display name of that account",
        +  "type": "string"
        +}
      • addedOutput schema / properties / calls / items / properties / account_phone
        Added value: +{
        +  "description": "the phone number of your account that placed or received this call, E.164",
        +  "type": "string"
        +}
    • Changedwa_list_messages11 fields changed
      • addedInput schema / properties / account_id
        Added value: +{
        +  "description": "only this account's messages, from wa_list_accounts; omit for every account",
        +  "type": "string"
        +}
      • addedInput schema / properties / chat
        Added value: +{
        +  "description": "only this conversation — a phone number or a group JID",
        +  "type": "string"
        +}
      • addedInput schema / properties / include_history
        Added 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"
        +}
      • addedInput schema / properties / since
        Added 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"
        +}
      • addedInput schema / properties / until
        Added 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"
        +}
      • addedOutput schema / properties / messages / items / properties / account_name
        Added value: +{
        +  "description": "the WhatsApp display name of that account",
        +  "type": "string"
        +}
      • addedOutput schema / properties / messages / items / properties / account_phone
        Added value: +{
        +  "description": "the phone number of your account this message was sent from or received on, E.164",
        +  "type": "string"
        +}
      • addedOutput schema / properties / messages / items / properties / attachment
        Added 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"
        +  ]
        +}
      • addedOutput schema / properties / messages / items / properties / received_at
        Added 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"
        +}
      • addedOutput schema / properties / messages / items / properties / sender_name
        Added 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"
        +}
      • addedOutput schema / properties / refusal
        Added 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"
        +  ]
        +}
    • Changedwa_list_templates6 fields changed
      • changedOutput schema / properties / templates / description
        Previous 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"
      • addedOutput schema / properties / templates / items / properties / body
        Added value: +{
        +  "description": "the template's body text as Meta holds it, with its {{n}} variables",
        +  "type": "string"
        +}
      • addedOutput schema / properties / templates / items / properties / buttons
        Added value: +{
        +  "description": "one line per button, e.g. 'Quick reply: Yes' or 'Link: Shop → https://…'",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": [
        +    "null",
        +    "array"
        +  ]
        +}
      • addedOutput schema / properties / templates / items / properties / footer
        Added value: +{
        +  "description": "the template's footer, if any",
        +  "type": "string"
        +}
      • addedOutput schema / properties / templates / items / properties / header
        Added value: +{
        +  "description": "the template's text header, if any",
        +  "type": "string"
        +}
      • addedOutput schema / properties / templates / items / properties / rejected_reason
        Added 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"
        +}
  12. 4 tool updates
    • Changedwa_get_chat1 field changed
      • addedOutput schema / properties / messages / items / properties / status
        Added 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"
        +}
    • Changedwa_get_message1 field changed
      • addedOutput schema / properties / message / properties / status
        Added 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"
        +}
    • Changedwa_list_messages1 field changed
      • addedOutput schema / properties / messages / items / properties / status
        Added 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"
        +}
    • Addedwa_list_templates
  13. 1 tool update
    • Changedwa_send_message3 fields changed
      • addedInput schema / properties / template
        Added 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"
        +}
      • addedInput schema / properties / template_language
        Added value: +{
        +  "description": "optional: the template's language/locale code, e.g. en_US; defaults to en_US",
        +  "type": "string"
        +}
      • addedInput schema / properties / template_variables
        Added value: +{
        +  "description": "optional: values that fill the template body's positional {{1}}, {{2}}, … placeholders, in order",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": [
        +    "null",
        +    "array"
        +  ]
        +}
  14. 1 tool update
    • Changedwa_list_accounts3 fields changed
      • addedOutput schema / properties / accounts / items / properties / backend
        Added value: +{
        +  "description": "the account's backend: official (WhatsApp Business API) or personal (a linked device)",
        +  "type": "string"
        +}
      • addedOutput schema / properties / accounts / items / properties / features
        Added 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"
        +  ]
        +}
      • changedOutput schema / properties / accounts / items / required
        Previous value: -[
        -  "account_id",
        -  "phone",
        -  "push_name",
        -  "state"
        -]New value: +[
        +  "account_id",
        +  "phone",
        +  "push_name",
        +  "state",
        +  "backend",
        +  "features"
        +]
  15. 2 tool updates
    • Addedwa_ai_call_hangup
    • Changedwa_ai_list_presets3 fields changed
      • addedOutput schema / properties / presets / items / properties / ring_delay_secs
        Added value: +{
        +  "type": "integer"
        +}
      • addedOutput schema / properties / presets / items / properties / start_delay_secs
        Added value: +{
        +  "type": "integer"
        +}
      • changedOutput schema / properties / presets / items / required
        Previous 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
Vendor relationship
First-party
Restrictions
Plans: Frees, Started, Business, Premium · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables 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
  • A
    license
    Not graded
    quality
    C
    maintenance
    A 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.
    1
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Connects 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.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources