Skip to main content
Glama
wati-io

WhatsApp MCP Server

by wati-io

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.

WhatsApp MCP

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/* paths

  • URL scheme — Tenant ID no longer embedded in URL path; resolved from Bearer token

  • WATI_TENANT_ID is 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_channels

  • Removed tools: list_chats, get_chat, get_direct_chat_by_contact, get_contact_chats (replaced by list_contacts/get_contact/get_messages)

  • Simplified response parsing — v3 has standardized response schemas

Migration Guide

  1. Update WATI_API_BASE_URL to your Wati server (e.g. https://live-mt-server.wati.io)

  2. WATI_TENANT_ID can be removed unless you use multi-channel targeting

  3. Update tool calls: send_message(recipient=...)send_message(target=...)

  4. Replace list_chats/get_chat with list_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 claude

Prerequisites

  • Python 3.11+

  • Anthropic Claude Desktop app (or Cursor)

  • UV (Python package manager), install with curl -LsSf https://astral.sh/uv/install.sh | sh

  • Wati API access (you'll need your authentication token)

Steps

  1. Clone this repository

    git clone https://github.com/wati-io/wati-mcp-server.git
    cd wati-mcp-server
  2. Configure 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 credentials

    Required:

    • 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)

  3. 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.json in:

    ~/Library/Application Support/Claude/claude_desktop_config.json

    For Cursor, save this as mcp.json in:

    ~/.cursor/mcp.json
  4. Restart 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 Business
  1. Claude sends requests to the Python MCP server via MCP protocol

  2. The MCP server makes authenticated API calls to the Wati v3 API

  3. The Wati API communicates with WhatsApp's backend

  4. Data flows back through the chain to Claude

Troubleshooting

  • Authentication errors: Ensure your WATI_AUTH_TOKEN is valid and not expired

  • 404 errors: Make sure WATI_API_BASE_URL points to your correct Wati server

  • Rate 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 tools
add_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
ParametersJSON Schema
NameRequiredDescriptionDefault
whatsapp_numberYes
nameYes
custom_paramsNo

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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"])
ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
teamsYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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)
ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
assignee_emailNo

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYes

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
broadcast_idYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)
ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
page_sizeNo
page_numberNo

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
template_idYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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)
ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNo
page_numberNo

TDQS

B3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)
ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNo
page_numberNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)
ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNo
page_numberNo

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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)
ParametersJSON Schema
NameRequiredDescriptionDefault
page_sizeNo
page_numberNo

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
file_pathYes
captionNo

TDQS

B3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
file_urlYes
captionNo

TDQS

A4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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": "..."}]}
ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
interactive_typeYes
body_textYes
buttonsNo
header_textNo
footer_textNo
button_textNo
sectionsNo

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
textYes

TDQS

A3.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)
ParametersJSON Schema
NameRequiredDescriptionDefault
template_nameYes
broadcast_nameYes
recipientsYes
channelNo

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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"}]}
ParametersJSON Schema
NameRequiredDescriptionDefault
contactsYes

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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"
ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
new_statusYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

B3.4/5.0
Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness3/5

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

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    27
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Connects 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.
    18
    47
    23
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables Claude to interact with WhatsApp through a unified backend API, providing 20 tools for messaging, media, groups, contacts, and chat management.
    22
    34
    MIT

Latest Blog Posts

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