WhatsApp MCP Server
Provides tools for sending and receiving WhatsApp messages, managing contacts, templates, campaigns, and channels via the Wati API v3.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@WhatsApp MCP Serversend a message to +1234567890 saying Hello from Claude!"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
WhatsApp MCP Server with Wati API v3
This is a Model Context Protocol (MCP) server for WhatsApp using the Wati API v3.
Manage your WhatsApp conversations, contacts, templates, campaigns, and channels through AI assistants like Claude. Search and read messages, send texts and files, manage contacts, and automate workflows — all via MCP tools.

To get updates on this and other projects enter your email here
What's New in v0.2.0
Breaking change: This release migrates from the legacy Wati v1 API to the v3 API (/api/ext/v3/*).
Changes
API v3 migration — All endpoints updated to
/api/ext/v3/*pathsURL scheme — Tenant ID no longer embedded in URL path; resolved from Bearer token
WATI_TENANT_IDis now optional — Only needed for multi-channel setups (Channel:PhoneNumber targeting)New tools:
list_contacts,get_contact,add_contact,update_contacts,get_contact_count,assign_contact_teams,send_file_via_url,send_interactive(buttons + list),assign_operator,update_conversation_status,list_templates,get_template,send_template,list_campaigns,get_campaign,list_channelsRemoved tools:
list_chats,get_chat,get_direct_chat_by_contact,get_contact_chats(replaced bylist_contacts/get_contact/get_messages)Simplified response parsing — v3 has standardized response schemas
Migration Guide
Update
WATI_API_BASE_URLto your Wati server (e.g.https://live-mt-server.wati.io)WATI_TENANT_IDcan be removed unless you use multi-channel targetingUpdate tool calls:
send_message(recipient=...)→send_message(target=...)Replace
list_chats/get_chatwithlist_contacts/get_contact+get_messages
Related MCP server: whatsapp-mcp-server
Installation
Installing via Smithery
npx -y @smithery/cli install @wati-io/wati-mcp-server --client claudePrerequisites
Python 3.11+
Anthropic Claude Desktop app (or Cursor)
UV (Python package manager), install with
curl -LsSf https://astral.sh/uv/install.sh | shWati API access (you'll need your authentication token)
Steps
Clone this repository
git clone https://github.com/wati-io/wati-mcp-server.git cd wati-mcp-serverConfigure the Wati API
Copy the example environment file and edit it with your Wati API credentials:
cp .env.example .env # Edit .env with your Wati API credentialsRequired:
WATI_API_BASE_URL: The base URL for the Wati API (e.g.https://live-mt-server.wati.io)WATI_AUTH_TOKEN: Your Wati authentication token (Bearer token from dashboard)
Optional:
WATI_TENANT_ID: Your Wati tenant ID (only for multi-channel setups)
Connect to the MCP server
Copy the below json with the appropriate {{PATH}} values:
{ "mcpServers": { "whatsapp": { "command": "{{PATH_TO_UV}}", "args": [ "--directory", "{{PATH_TO_SRC}}/wati-mcp-server", "run", "main.py" ] } } }For Claude, save this as
claude_desktop_config.jsonin:~/Library/Application Support/Claude/claude_desktop_config.jsonFor Cursor, save this as
mcp.jsonin:~/.cursor/mcp.jsonRestart Claude Desktop / Cursor
MCP Tools
Contacts
search_contacts — Search contacts by name or phone number
list_contacts — List contacts with pagination
get_contact — Get detailed contact info by phone or ID
add_contact — Add a new WhatsApp contact
update_contacts — Bulk-update contact custom parameters
get_contact_count — Get total contact count
assign_contact_teams — Assign a contact to teams
Messages & Conversations
get_messages — Get conversation messages for a contact
send_message — Send a text message
send_file — Send a file (image, video, document, audio) via upload
send_file_via_url — Send a file by URL (no local download needed)
download_media — Download media from a message
send_interactive — Send interactive buttons or list messages
assign_operator — Assign an operator to a conversation
update_conversation_status — Update conversation status (open/solved/pending/block)
Templates
list_templates — List message templates
get_template — Get template details
send_template — Send template messages to recipients
Campaigns
list_campaigns — List broadcast campaigns
get_campaign — Get campaign details and statistics
Channels
list_channels — List available WhatsApp channels
Architecture
Claude/AI Assistant
↕ MCP Protocol (stdio)
Python MCP Server (FastMCP)
↕ HTTPS + Bearer Auth
Wati API v3
↕
WhatsApp BusinessClaude sends requests to the Python MCP server via MCP protocol
The MCP server makes authenticated API calls to the Wati v3 API
The Wati API communicates with WhatsApp's backend
Data flows back through the chain to Claude
Troubleshooting
Authentication errors: Ensure your
WATI_AUTH_TOKENis valid and not expired404 errors: Make sure
WATI_API_BASE_URLpoints to your correct Wati serverRate limiting: The Wati API has rate limits. If you hit them, wait or contact Wati support
Media upload failures: Check file type support and size limits
Permission issues with uv: Add it to your PATH or use the full path to the executable
For MCP integration troubleshooting, see the MCP documentation.
Available Tools
21 toolsadd_contactA
Add a new WhatsApp contact.
Args:
whatsapp_number: Phone number with country code, no + (e.g. "85264318721")
name: Contact display name
custom_params: Optional list of {"name": "key", "value": "val"} pairs
| Name | Required | Description | Default |
|---|---|---|---|
| whatsapp_number | Yes | ||
| name | Yes | ||
| custom_params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It does not mention whether adding an existing contact updates or errors, nor does it describe side effects or return behavior. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately sized with a clear 'Args' section. It avoids unnecessary verbosity but includes essential details. Could be slightly more concise, but overall well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description covers input parameters adequately but omits output description, error handling, or behavioral expectations (e.g., duplicate handling). It is minimally viable but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value beyond the input schema: it provides a formatting example for whatsapp_number (with country code, no '+'), explains the name field as display name, and describes the custom_params structure as a list of key-value objects. This compensates for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add a new WhatsApp contact' with a specific verb and resource. This distinguishes it from sibling tools like update_contacts, search_contacts, or list_contacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. While the purpose is clear, the description does not mention prerequisites or alternatives, leaving the agent without exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_contact_teamsB
Assign a contact to one or more teams.
Args:
target: Phone number or contact ID
teams: List of team names (e.g. ["Support", "Sales"])
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| teams | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as side effects, idempotency, required permissions, or error handling. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (3 lines) and front-loaded with the primary action. The Args block is not standard prose but is structured and clear. No unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 required params, no output schema), the description is adequate but lacks behavioral details like whether existing assignments are overwritten or what happens on failure. It meets minimum viability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema by specifying 'target' can be a phone number or contact ID, and 'teams' is a list of team names with an example. With 0% schema description coverage, this is valuable context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Assign a contact to one or more teams.' It specifies the resource (contact) and the verb (assign), and focuses on team management, distinguishing it from siblings like 'add_contact' or 'update_contacts'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'update_contacts', nor does it mention prerequisites or exclusions. An agent has no context to choose this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_operatorA
Assign an operator to a WhatsApp conversation. Pass no email (or null) to assign to the bot.
Args:
target: Phone number or conversation ID
assignee_email: Operator's email address (null = assign to bot)
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| assignee_email | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that null assigns to bot, an important behavioral detail, but lacks information on side effects, permissions, or reversibility of the assignment.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus an Args list, highly concise and front-loaded with essential information, no irrelevant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool without output schema, the description adequately covers parameters and key behavior, though it could mention error cases or return values for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description compensates by clarifying 'target' as phone number or conversation ID and 'assignee_email' as operator email with null for bot, adding significant meaning beyond the schema's type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'assign' and resource 'operator to WhatsApp conversation', and distinguishes from sibling tools like 'add_contact' or 'assign_contact_teams' that operate on different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies when to use the tool (assign an operator to a conversation) and provides a specific case (null for bot assignment), but does not explicitly state when not to use it or mention alternatives among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_mediaC
Download media from a WhatsApp message.
Args:
message_id: The ID of the message containing the media
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states the action (download) without mentioning side effects, authentication needs, rate limits, or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, front-loading the purpose and listing the parameter. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and only one parameter, the description fails to explain return value (likely a file or binary), error cases, or how the media is obtained. This is incomplete for a tool that likely produces output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should add meaning. The parameter 'message_id' is described as 'The ID of the message containing the media', which merely restates the property name and type from the schema without additional detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Download' and resource 'media from a WhatsApp message'. It is distinct from sibling tools which focus on sending or managing contacts, not downloading media.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_messages or send_file. The description does not specify prerequisites or context for downloading media.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_campaignC
Get details and statistics for a broadcast campaign.
Args:
broadcast_id: The campaign's unique ID
| Name | Required | Description | Default |
|---|---|---|---|
| broadcast_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It only says 'get details and statistics' without disclosing whether the operation is read-only, if it has side effects, or any required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded, but it omits important details about what 'details and statistics' include. It is concise but at the expense of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and low parameter count, the description should explain the return structure or behavior. It fails to describe what kind of details/statistics are returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% as the description only reiterates the parameter name. The description adds 'The campaign's unique ID', which is minimally helpful beyond the schema's 'Broadcast Id' title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'details and statistics for a broadcast campaign', which is a specific verb+resource combination. It is distinct from siblings like list_campaigns, get_contact, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any exclusions or prerequisites. The agent lacks context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contactB
Get detailed information about a specific contact.
Args:
target: Phone number (e.g. "85264318721") or contact ID
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states 'Get,' which implies a read operation. It does not disclose any behavioral traits such as permissions required, rate limits, or whether the operation is safe or destructive. The burden falls entirely on the description, which is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the purpose in the first sentence. Every word contributes meaning, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get tool with one parameter and no output schema, the description adequately specifies the input. However, it lacks any information about the return format or what 'detailed information' means, leaving gaps given the absence of an output schema. It is minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only defines 'target' as a required string with no description. The tool description adds significant value by clarifying that it accepts a phone number (with example) or a contact ID, giving concrete format guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Get detailed information about a specific contact,' using a clear verb+resource. It distinguishes from siblings like list_contacts (plural) and search_contacts by implying a unique identifier. However, it does not elaborate on what constitutes 'detailed information,' which is vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as search_contacts or list_contacts. The agent must rely solely on the tool name to infer appropriate usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contact_countA
Get total number of WhatsApp contacts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description merely restates the purpose without additional behavioral disclosures (e.g., performance, caching, or rate limits), leaving agents with minimal insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with verb and resource, no extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple count tool with no parameters and no output schema, the description is adequate but lacks specification of the return format (e.g., integer) which is not explicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has zero parameters, so schema coverage is 100%. Baseline of 4 applies; description does not need to add param details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Get' and resource 'total number of WhatsApp contacts', distinguishing from sibling tools like get_contact (single) or list_contacts (list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like list_contacts or search_contacts; usage context is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_messagesA
Get conversation messages for a contact or conversation.
Args:
target: Phone number (e.g. "85264318721") or conversation ID
page_size: Messages per page (max 100, default 20)
page_number: Page number, 1-based (default 1)
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| page_size | No | ||
| page_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides basic pagination behavior (max page size, default values) but lacks details on error handling, sorting order, or side effects. It does not confirm read-only nature beyond the verb 'Get'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Highly concise with a clear structure: a one-line purpose followed by a bulleted argument list. No extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description fails to explain the return format (e.g., list of message objects, pagination metadata). This is a significant gap for a tool that returns data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds essential meaning: explains target as phone number or conversation ID, defines page_size max and defaults, and page_number defaults. However, it does not specify conversation ID format or provide examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'conversation messages', specifying it works for a contact or conversation. This distinguishes it from sibling tools like send_message or list_campaigns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. While the purpose is clear, there is no mention of when not to use it or pointers to related tools for different use cases (e.g., search_contacts).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_templateB
Get details of a specific message template.
Args:
template_id: The template's unique ID
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry full burden. It only says 'Get details' without stating what is returned, authentication needs, error conditions, or side effects. Inadequate for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is very short with two sentences and no redundancy. However, the 'Args:' line is somewhat unnecessary and could be omitted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations; description does not explain what 'details' are returned or any behavior like error handling. Incomplete context for an agent to fully understand the tool's output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has one parameter with title 'Template Id' and 0% coverage. Description adds 'The template's unique ID', which clarifies the meaning but is only slightly more informative than the title. Does not fully compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Get details of a specific message template' with a clear verb and resource. It distinguishes from siblings like list_templates and send_template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as list_templates or other getters. No exclusion criteria or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_campaignsB
List broadcast campaigns.
Args:
page_size: Campaigns per page (max 100, default 20)
page_number: Page number, 1-based (default 1)
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| page_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses pagination parameters but does not mention authentication, rate limits, or what the response contains. For a listing tool, this is lacking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct with no redundant text. Parameter docs are inline. Could be slightly more structured, but it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having two optional parameters, the description lacks details about return values, ordering, filtering, or error handling. Given no output schema, more context is needed for an agent to use this tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning by stating 'max 100' for page_size and '1-based' for page_number, which are not in the schema. This provides useful constraints beyond defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List broadcast campaigns', which is a specific verb-resource pair. It distinguishes from sibling tools like get_campaign (singular) and add_contact. However, it could be more precise about what constitutes a broadcast campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like search_contacts or get_campaign. There are no explicit when-to-use or when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_channelsC
List available WhatsApp channels.
Args:
page_size: Channels per page (max 100, default 20)
page_number: Page number, 1-based (default 1)
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| page_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, pagination behavior, rate limits, or authorization requirements. The description only states 'list channels' without additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with only two lines explaining parameters, no fluff or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional params, no output schema, no annotations), the description covers the basics. However, it could mention pagination behavior or the structure of returned data for better completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no parameter descriptions in schema), so the description must compensate. It adds default values and constraints (max page_size 100, 1-based page_number), which adds meaning beyond the raw schema defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists 'available WhatsApp channels', providing a specific verb and resource. However, it does not differentiate from sibling tools like 'list_contacts' or 'list_templates', which also list resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. No mention of when it is appropriate or inappropriate to call, nor any mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contactsA
List WhatsApp contacts with pagination.
Args:
page_size: Number of contacts per page (max 100, default 20)
page_number: Page number, 1-based (default 1)
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| page_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must cover behavior. It discloses pagination parameters and constraints (max page_size 100), but does not mention ordering, total count, or any side effects. It is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one sentence followed by clear parameter docs. It is front-loaded with the main purpose and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does not explain what the response contains (e.g., contact objects). For a simple list tool, this is a moderate gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds significant value by providing defaults and constraints (page_size max 100). This compensates for the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists WhatsApp contacts with pagination, using a specific verb and resource. It distinguishes from siblings like search_contacts (which likely filters) and get_contact (single contact).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs alternatives like search_contacts. No when-not-to-use or explicit context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templatesA
List WhatsApp message templates.
Args:
page_size: Templates per page (max 100, default 20)
page_number: Page number, 1-based (default 1)
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| page_number | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses pagination behavior: page_size has a max of 100 and default 20, page_number is 1-based with default 1. This goes beyond the schema, which only provides titles and defaults. Since there are no annotations, the description carries the full burden, and it covers the key read-only trait and pagination constraints. No mention of rate limits or auth, but for a simple list operation this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: one line for purpose followed by a structured parameter list. Every sentence adds value. It is front-loaded with the main action. Could be even more compact, but it achieves clarity without wasting space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and low parameter complexity. The description covers purpose and parameter details but does not hint at the return format (e.g., a list of template objects). For a list tool, the return is somewhat obvious, but completeness would benefit from a brief note on what the response contains. This is a gap given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no descriptions for its 2 parameters (coverage 0%), so the description must compensate. It adds concrete constraints: page_size max 100, page_number 1-based. This provides meaning beyond the schema's titles and defaults. The baseline for 0 schema descriptions is 4, and the description meets it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List WhatsApp message templates.' This is a specific verb+resource combination that unambiguously identifies the tool's purpose. Among sibling tools, other list tools like list_campaigns, list_channels, list_contacts exist, but list_templates is distinct and self-explanatory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use, when-not-to-use, or alternative tool guidance is provided. The intended usage is implied (list templates when you need to view them), but the description lacks explicit context or exclusions. For a simple tool this may be acceptable, but it still leaves room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_contactsA
Search WhatsApp contacts by name or phone number. Returns contact information including name, phone, WhatsApp ID, status, teams, and custom parameters.
Args:
query: A search term to find matching contacts (name or phone)
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, authentication requirements, or side effects. The search verb implies reading, but this is not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences and a structured args block, providing all necessary information without verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with one parameter and no output schema, the description covers input and output fields adequately, though it omits potential details like pagination or exact match behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the single parameter 'query' by specifying it can be a name or phone number, which compensates for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: searching WhatsApp contacts by name or phone number, and lists the returned fields, distinguishing it from sibling tools like list_contacts or get_contact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies the context for use (searching by name or phone), but does not provide guidance on when to use this tool versus alternatives like list_contacts or add_contact.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_fileB
Send a file (image, video, document, audio) via WhatsApp.
Args:
target: Recipient phone number with country code, no + (e.g. "85264318721")
file_path: Absolute path to the file or a URL
caption: Optional caption for the file
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| file_path | Yes | ||
| caption | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as file size limits, error handling, or whether the file is sent as a local path or URL. It only mentions that file_path can be an absolute path or URL.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a one-line summary followed by an argument list. Every sentence is necessary, though the structure could be slightly improved with bullet points.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not cover output or return values, and without an output schema or annotations, the agent lacks information about success/error responses or side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value beyond the schema by specifying the phone number format (e.g., '85264318721') and clarifying that file_path can be a path or URL. Schema coverage is 0%, so this addition is significant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Send a file' and lists supported file types (image, video, document, audio). However, it does not explicitly distinguish itself from the sibling tool 'send_file_via_url'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'send_file_via_url' or when not to use it. The description only provides parameter details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_file_via_urlA
Send a file by URL without downloading it locally first.
Args:
target: Recipient phone number with country code, no + (e.g. "85264318721")
file_url: Public URL of the file to send
caption: Optional caption
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| file_url | Yes | ||
| caption | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It reveals that the tool does not download locally, which is a key behavioral trait. But it omits other important details like file size limits, supported formats, or error handling, leaving gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences explaining the core feature plus a structured Args section. It front-loads the purpose and is efficient, though the Args could be integrated more smoothly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and 3 parameters, the description covers the basics but lacks details on return values, error scenarios, or constraints like file size. It is adequate for a simple tool but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description fully compensates. It provides format for 'target' (phone number, country code, no '+'), explains 'file_url' as a public URL, and notes 'caption' is optional. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Send a file by URL') and distinguishes it from a likely sibling tool 'send_file' by specifying 'without downloading it locally first'. This explicitly differentiates the tool from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without downloading it locally first' implies when to use this tool (when you have a URL and want to avoid local download). However, it does not explicitly state alternatives or when not to use it. The context is clear but lacks exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_interactiveA
Send an interactive WhatsApp message with buttons or a list.
Args:
target: Recipient phone number with country code, no + (e.g. "85264318721")
interactive_type: Either "buttons" or "list"
body_text: Main message body text
buttons: For type="buttons": list of {"text": "Button label"} (max 3)
header_text: Optional header text
footer_text: Optional footer text
button_text: For type="list": text shown on the list button
sections: For type="list": list of {"title": "...", "rows": [{"title": "...", "description": "..."}]}
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| interactive_type | Yes | ||
| body_text | Yes | ||
| buttons | No | ||
| header_text | No | ||
| footer_text | No | ||
| button_text | No | ||
| sections | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It details the target format, interactive type choices, and constraints like max 3 buttons. It lacks details on permissions, rate limits, or error behavior, but the core behavior is well-described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately lengthy but well-organized with an 'Args' section. Each sentence adds value, explaining complex nested structures. It could be slightly more concise, but the structure aids readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters (3 required), no output schema, and complex nested objects, the description covers parameter semantics and structure thoroughly. It lacks return value or error handling information, but it is otherwise complete for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries full burden. It provides clear, example-based semantics for each parameter (e.g., target format, interactive_type values, buttons structure). This compensates fully for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Send an interactive WhatsApp message with buttons or a list.' This distinguishes it from siblings like send_message, send_file, and send_template by specifying the interactive component type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the two interactive types ('buttons' or 'list') and their respective required parameters, providing clear usage context. However, it does not explicitly state when not to use this tool or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_messageA
Send a WhatsApp text message to a contact.
Args:
target: Recipient phone number with country code, no + (e.g. "85264318721")
text: The message text to send
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the action without mentioning side effects, prerequisites (e.g., contact existence), delivery guarantees, or rate limits. This leaves agents without critical behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two well-structured sentences and an Args section. Every part serves a purpose with no redundant or unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters, the description covers essential parameter semantics and purpose. However, it omits return values (no output schema) and lacks behavioral transparency, making it somewhat incomplete. More details on what happens after sending would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0%, but the description adds significant value: it explains the target format (phone number with country code, no '+') and provides an example. For 'text,' it clarifies it is the message content, though somewhat minimally.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Send a WhatsApp text message to a contact,' providing a specific verb and resource. It naturally distinguishes from sibling tools like send_file, send_template, and send_interactive by specifying 'text message.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly defines usage for sending text messages, but it does not explicitly state when not to use it or list alternatives. However, the context is clear enough to avoid confusion with other message types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_templateB
Send template messages to one or more recipients.
Args:
template_name: Name of the approved template
broadcast_name: Name for this broadcast batch
recipients: List of {"phone_number": "...", "custom_params": [{"name": "k", "value": "v"}]}
channel: Optional channel name or phone (null = default channel)
| Name | Required | Description | Default |
|---|---|---|---|
| template_name | Yes | ||
| broadcast_name | Yes | ||
| recipients | Yes | ||
| channel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description does not disclose behavioral traits such as rate limits, whether broadcasts can be overwritten, or if custom_params validation occurs. It implies mutation but lacks detail on side effects or constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is brief and to the point, using a docstring-style Args list. Every sentence provides necessary information without redundancy. Suitable for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing return value information, which is important for a tool that sends to multiple recipients (success/failure per recipient). Also lacks prerequisites or error conditions. Given no output schema, description should cover more behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds meaning: explains each parameter, notably showing recipients structure as a list of objects with phone_number and custom_params. However, it does not clarify additionalProperties or the shape of custom_params fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it sends template messages to one or more recipients. This is a specific verb+resource combination that distinguishes it from sibling tools like send_message (plain messages), send_file, and send_interactive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., template must be approved) or compare with other send tools. The description only lists parameters without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contactsC
Bulk-update contacts' custom parameters.
Args:
contacts: List of {"target": "phone_or_id", "customParams": [{"name": "k", "value": "v"}]}
| Name | Required | Description | Default |
|---|---|---|---|
| contacts | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description indicates a mutation ('bulk-update') but does not disclose behavioral traits such as whether it overwrites or merges customParams, authorization requirements, or what happens on failure. This is insufficient for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and includes an Args block that adds structure, but it could be more concise by avoiding the docstring style. It is acceptable but not exemplary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description does not fully cover return values, error handling, or behavioral details for a bulk operation. It is incomplete for an AI agent to reliably invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description partially compensates by detailing the structure of the contacts parameter (target and customParams). However, it does not explain valid values for target (phone_or_id) or the exact format, leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: bulk-update contacts' custom parameters. It clearly identifies the resource and operation, though it does not explicitly distinguish from sibling tools like assign_contact_teams or update_conversation_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides the structure for the contacts argument but offers no guidance on when to use this tool versus alternatives like assign_contact_teams. No context on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_conversation_statusB
Update a conversation's status.
Args:
target: Phone number or conversation ID
new_status: One of "open", "solved", "pending", "block"
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| new_status | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden; it only states it's an update but fails to disclose behavioral traits like side effects, authorization needs, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with a clear first sentence and an Args section; however, it could front-load more context about the tool's behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter update tool, the description covers purpose and parameters but omits return values, error scenarios, and prerequisites, leaving gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds meaning by specifying target as 'phone number or conversation ID' and new_status as an enum of four values, though lacks details on format or implications.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update a conversation's status' uses a specific verb and resource, clearly distinguishing it from sibling tools like send_message or add_contact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for updating conversation status but provides no explicit guidance on when to use versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Tools generally target distinct actions (e.g., send vs list vs get), but there is some overlap between send_file and send_file_via_url, and between send_message, send_interactive, send_template. Descriptions help disambiguate, but the similarities could cause misselection.
All tools follow a consistent verb_noun snake_case pattern (e.g., add_contact, list_templates, send_message). No mixing of styles or confusing abbreviations.
21 tools is on the higher side but still reasonable for a comprehensive WhatsApp server covering contacts, messaging, campaigns, and media. Could be slightly trimmed by merging file-send tools, but not excessive.
Covers most common operations (CRUD for contacts, sending various message types, campaigns, templates), but lacks delete operations for contacts, templates, and campaigns. This is a notable gap that may hinder some workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Drive your real WhatsApp inbox from Claude — send, reply, label, assign, and triage via TimelinesAI.
Run WhatsApp Business campaigns from any AI assistant: contacts, segments, and broadcasts.
WhatsApp CRM for AI agents: search contacts, read chats, manage the sales pipeline, send messages.
Run WhatsApp and Telegram AI assistants: projects, prompts, leads, chats, analytics.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage WhatsApp communications by sending messages, managing groups, and analyzing conversation patterns via the WaliChat API. It supports tasks like message scheduling, contact management, and automated business workflows through natural language commands.271MIT
- AlicenseAqualityDmaintenanceConnects AI assistants to the official Meta WhatsApp Cloud API for managing conversations and sending various message types through natural language. It provides tools for media management, template messages, and real-time webhook processing without the risk of account bans.184723MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for WATI WhatsApp Business API enabling AI assistants to send messages, manage contacts, and handle media.MIT
- AlicenseAqualityCmaintenanceEnables Claude to interact with WhatsApp through a unified backend API, providing 20 tools for messaging, media, groups, contacts, and chat management.2234MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/wati-io/wati-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server