WhatsApp Business MCP Server
Utilizes the Meta Graph API to interface with WhatsApp Business accounts, facilitating template management and business profile configurations.
Provides tools for the WhatsApp Business Cloud API to send text, media, location, and interactive messages, manage message templates, and monitor messaging analytics.
Click on "Deploy 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 Business MCP ServerSend a message to +5511999998888 saying your order is ready"
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.
@bridgeapi/mcp-whatsapp
MCP Server para WhatsApp Business Cloud API — Conecte qualquer AI Agent ao WhatsApp via Model Context Protocol.
Parte do ecossistema BridgeAPI: conectores MCP para plataformas brasileiras.
O que faz
Este MCP server expõe a WhatsApp Business Cloud API como tools padronizados do Model Context Protocol. Isso permite que qualquer AI Agent (Claude, ChatGPT, LangChain, CrewAI, etc.) envie mensagens, gerencie templates, consulte analytics e muito mais — tudo via MCP.
Tools disponíveis
Tool | Descrição |
| Envia mensagem de texto (dentro da janela de 24h) |
| Envia template pré-aprovado (fora da janela de 24h) |
| Envia imagem, vídeo, áudio ou documento |
| Envia mensagem com botões ou lista |
| Envia localização |
| Envia cartão de contato |
| Marca mensagem como lida |
| Lista templates com status de aprovação |
| Cria novo template para aprovação |
| Deleta template |
| Lista números com quality rating |
| Retorna perfil do negócio |
| Atualiza perfil |
| Métricas de mensagens por período |
| Upload de mídia para envio |
| URL de download de mídia recebida |
Resources (contexto read-only)
Resource | URI |
Templates ativos |
|
Perfil do negócio |
|
Números registrados |
|
Prompts (guias reutilizáveis)
Prompt | Uso |
| Guia para enviar campanha de marketing |
| Guia para responder suporte |
| Guia para criar templates seguindo regras da Meta |
Instalação
npm install @bridgeapi/mcp-whatsappConfiguração
Variáveis de ambiente obrigatórias
export WHATSAPP_ACCESS_TOKEN="your-system-user-token"
export WHATSAPP_PHONE_NUMBER_ID="your-phone-number-id"
export WHATSAPP_BUSINESS_ACCOUNT_ID="your-waba-id"
# Opcional:
export WHATSAPP_API_VERSION="v21.0" # defaultComo obter: Acesse Meta Business Manager → WhatsApp → Configuração da API.
Uso com Claude Desktop
Adicione ao seu claude_desktop_config.json:
{
"mcpServers": {
"whatsapp": {
"command": "npx",
"args": ["@bridgeapi/mcp-whatsapp"],
"env": {
"WHATSAPP_ACCESS_TOKEN": "your-token",
"WHATSAPP_PHONE_NUMBER_ID": "your-phone-id",
"WHATSAPP_BUSINESS_ACCOUNT_ID": "your-waba-id"
}
}
}
}Uso com Cursor
Adicione ao seu .cursor/mcp.json:
{
"mcpServers": {
"whatsapp": {
"command": "npx",
"args": ["@bridgeapi/mcp-whatsapp"],
"env": {
"WHATSAPP_ACCESS_TOKEN": "your-token",
"WHATSAPP_PHONE_NUMBER_ID": "your-phone-id",
"WHATSAPP_BUSINESS_ACCOUNT_ID": "your-waba-id"
}
}
}
}Exemplos de uso
Após configurar, você pode falar diretamente com o Claude:
Enviar mensagem
"Envie uma mensagem para +5541999999999 dizendo: Seu pedido #1234 foi enviado!"
Listar templates
"Quais templates de WhatsApp estão aprovados?"
Criar campanha
"Preciso criar uma campanha de marketing para o produto 'Curso de IA'. Me ajude a criar o template e enviar."
Ver analytics
"Mostre as métricas de mensagens dos últimos 7 dias."
Desenvolvimento
# Clone e instale
git clone https://github.com/bridgeapi-dev/mcp-whatsapp.git
cd mcp-whatsapp
npm install
# Build
npm run build
# Testar com MCP Inspector
npm run inspect
# Dev mode (watch)
npm run devArquitetura
Agent (Claude/ChatGPT/LangChain)
│
▼ (MCP Protocol - JSON-RPC 2.0)
┌──────────────────────────────┐
│ @bridgeapi/mcp-whatsapp │
│ ┌────────────────────────┐ │
│ │ pre_execute hook ◄────│──│── Phase 2: Execution Engine
│ │ (Phase 1: no-op + log) │ │
│ └────────┬───────────────┘ │
│ ▼ │
│ ┌────────────────────────┐ │
│ │ WhatsApp Cloud API │ │
│ │ (Meta Graph API v21.0) │ │
│ └────────┬───────────────┘ │
│ ▼ │
│ ┌────────────────────────┐ │
│ │ post_execute hook ◄────│──│── Phase 2: Response validation
│ │ (Phase 1: no-op + log) │ │
│ └────────────────────────┘ │
└──────────────────────────────┘Os hooks
pre_executeepost_executeestão prontos para receber a Execution Engine na Fase 2 do BridgeAPI, mas na v0.1 são no-ops que apenas logam o contexto.
Roadmap
v0.1 — Tools core de messaging, templates, analytics, media
v0.2 — Webhook receiver para mensagens recebidas
v0.3 — Streamable HTTP transport (para uso remoto via Gateway)
v1.0 — Pronto para produção com rate limiting e error recovery
Ecossistema BridgeAPI
Conector | Status |
WhatsApp Business API | ✅ v0.1 |
Hotmart | 🔜 Em desenvolvimento |
Eduzz | 🔜 Planejado |
Pix / Pagamentos | 🔜 Planejado |
NFe / Notas Fiscais | 🔜 Planejado |
Guru | 🔜 Planejado |
Licença
MIT — use livremente.
Links
BridgeAPI — Plataforma gerenciada
MCP Specification — Protocolo oficial
WhatsApp Cloud API Docs — Documentação da Meta
Available Tools
16 toolscreate_templateA
Create a new message template for approval by Meta. Templates are required for outbound messages outside the 24-hour window.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Template name (lowercase, underscores only) | |
| language | No | Template language code | pt_BR |
| category | Yes | Template category — affects pricing and approval rules | |
| components | Yes | Template components: HEADER, BODY, FOOTER, BUTTONS |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It mentions the approval requirement but doesn't disclose other behavioral traits like whether this is a write operation (implied by 'create'), what permissions are needed, rate limits, whether the template is immediately usable, or what happens on failure. For a creation tool with zero annotation coverage, 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?
Two concise sentences with zero waste. The first sentence states the core purpose, the second provides crucial context about when templates are required. Every word earns its place and the information is front-loaded effectively.
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 creation tool with no annotations and no output schema, the description provides basic purpose and context but lacks important details about behavioral characteristics, error conditions, or what the tool returns. The 100% schema coverage helps, but more behavioral transparency would be needed for full 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 description coverage is 100%, so the schema already documents all parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. Baseline 3 is appropriate when the schema does the heavy lifting, though the description could have explained parameter relationships or constraints.
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 'create' and resource 'message template', specifies it's 'for approval by Meta', and distinguishes it from siblings by explaining templates are required for outbound messages outside the 24-hour window. This differentiates it from other messaging tools like send_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 provides clear context about when to use this tool ('for outbound messages outside the 24-hour window'), but doesn't explicitly state when NOT to use it or mention specific alternatives like send_template_message. It implies usage for template creation but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_templateA
Delete a message template by name. This action is irreversible.
| Name | Required | Description | Default |
|---|---|---|---|
| template_name | Yes | Name of the template to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates the irreversible nature of the action, which is a critical behavioral trait beyond the basic 'delete' operation. However, it lacks details on permissions, error conditions, or confirmation requirements.
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—two sentences with zero waste. It front-loads the core action and follows with a critical warning, making it efficient and well-structured for quick comprehension.
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 complexity (destructive operation with no annotations or output schema), the description is minimally adequate. It covers the irreversible nature but lacks details on permissions, error handling, or what happens post-deletion, leaving gaps in contextual understanding.
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 description coverage is 100%, with the parameter 'template_name' fully documented in the schema. The description adds no additional semantic context beyond what the schema provides, such as format examples or constraints, meeting the baseline for high 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 specific action ('Delete') and resource ('a message template by name'), distinguishing it from sibling tools like 'create_template' and 'list_templates'. It precisely communicates what the tool does without being vague or tautological.
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. It does not mention prerequisites, such as needing an existing template, or compare it to related tools like 'update_business_profile' or 'create_template'. Usage context is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_analyticsC
Get messaging analytics (sent, delivered, read counts) for a date range.
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | Start date in UNIX timestamp format | |
| end_date | Yes | End date in UNIX timestamp format | |
| granularity | No | Data granularity | DAY |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves analytics but doesn't mention permissions needed, rate limits, pagination, error handling, or data freshness. For a read operation with no annotation coverage, this is insufficient to inform safe and effective use.
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 a single, efficient sentence with zero waste. It front-loads key information ('Get messaging analytics') and includes essential details (metrics and date range) without redundancy, making it easy to parse quickly.
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 annotations, no output schema, and a read operation with three parameters, the description is incomplete. It doesn't explain what the output looks like (e.g., format of counts), error conditions, or behavioral constraints, leaving significant gaps for agent 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 100%, so the schema fully documents parameters like 'start_date' and 'granularity' with enums. The description adds minimal value by implying date-range filtering but doesn't explain parameter interactions or semantics beyond what's in the schema, meeting the baseline for high 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: 'Get messaging analytics (sent, delivered, read counts) for a date range.' It specifies the verb ('Get'), resource ('messaging analytics'), and key metrics, making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'get_business_profile' or 'get_phone_numbers', which prevents a perfect score.
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. It mentions a date range but doesn't specify prerequisites, exclusions, or compare it to other analytics-related tools (none listed in siblings). This leaves the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_business_profileB
Get the WhatsApp Business profile (about, address, description, email, websites, profile picture).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Get' implies a read-only operation, it doesn't explicitly state this is safe/non-destructive, mention authentication requirements, rate limits, error conditions, or what happens if the profile doesn't exist. It provides minimal behavioral context beyond the basic 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 a single, efficient sentence that immediately states the tool's purpose and enumerates the returned fields. Every word contributes value with no redundancy or unnecessary elaboration. It's perfectly front-loaded and appropriately sized for this simple retrieval tool.
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 zero-parameter read tool with no output schema, the description adequately covers what information is retrieved. However, it lacks details about the return format (structure, data types), potential errors, or authentication requirements. Given the simplicity of the tool, the description is minimally complete but could benefit from slightly 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?
The tool has zero parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't discuss parameters, maintaining focus on what the tool returns. This meets the baseline expectation for zero-parameter tools.
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 ('Get') and the resource ('WhatsApp Business profile'), and lists specific profile fields (about, address, description, email, websites, profile picture). It distinguishes this read operation from sibling tools like update_business_profile, but doesn't explicitly contrast with other read tools like get_analytics or get_phone_numbers.
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. It doesn't mention prerequisites, appropriate contexts, or compare it to other profile-related tools like update_business_profile. The agent must infer usage from the tool name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_media_urlA
Get the download URL for a received media file. URLs are valid for 5 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| media_id | Yes | Media ID from a received message webhook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively adds critical context beyond the schema by specifying that 'URLs are valid for 5 minutes,' which is a key behavioral trait (temporary validity) not inferable from the input schema alone. However, it does not cover other potential behaviors like error conditions or authentication needs.
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 only two sentences, both of which earn their place by providing essential information (purpose and URL validity). It is front-loaded with the core function 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 the tool's low complexity (one parameter, no output schema, no annotations), the description is reasonably complete. It covers the purpose and a key behavioral constraint (5-minute validity). However, without annotations or output schema, it could benefit from mentioning response format or error handling, but the gaps are minor for this simple tool.
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 100%, so the schema already documents the single parameter (media_id) with its description. The description does not add any further meaning or details about the parameter beyond what the schema provides, meeting the baseline for high 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 specific action ('Get the download URL') and resource ('for a received media file'), distinguishing it from sibling tools like upload_media or send_media_message. It precisely defines the tool's function without ambiguity.
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 context by specifying 'received media file' and mentioning webhook origin in the parameter description, but it does not explicitly state when to use this tool versus alternatives like send_media_message or upload_media. No exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_phone_numbersA
List all phone numbers registered on this WhatsApp Business Account, including quality rating and messaging limits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a list operation but doesn't mention whether it requires authentication, has rate limits, returns paginated results, or what format the output takes. For a tool with zero annotation coverage, this leaves significant behavioral gaps.
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 a single, efficient sentence that front-loads the core purpose ('List all phone numbers') and adds valuable context about included data. Every word earns its place with no redundancy or wasted 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 read-only list tool with no parameters and no output schema, the description provides adequate purpose but lacks behavioral context about authentication, rate limits, or output format. Given the complexity is low (no parameters), it's minimally complete but could better address the missing annotation coverage.
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 tool has 0 parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, and instead focuses on what the tool returns.
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 'List' and the resource 'all phone numbers registered on this WhatsApp Business Account', with specific details about included information (quality rating and messaging limits). It distinguishes itself from siblings like get_business_profile or get_analytics by focusing specifically on phone numbers.
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 retrieving phone number details, but provides no explicit guidance on when to use this versus alternatives like get_business_profile (which might contain some contact info) or when not to use it. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templatesB
List all message templates in the WhatsApp Business Account, optionally filtered by status.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter templates by approval status | |
| limit | No | Max templates to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions listing and optional filtering, but fails to describe critical traits such as pagination behavior (implied by 'limit' parameter), rate limits, authentication needs, or whether it's a read-only operation. This leaves significant gaps for agent understanding.
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 a single, efficient sentence that front-loads the core action ('List all message templates') and adds optional functionality ('optionally filtered by status') without any wasted words. It is appropriately sized for the tool's complexity.
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 is incomplete. It does not cover behavioral aspects like pagination, error handling, or response format, which are crucial for a list operation with filtering. The description should provide more context to compensate for missing structured 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?
Schema description coverage is 100%, so the schema already documents both parameters ('status' and 'limit') with descriptions and enums. The description adds no additional meaning beyond what the schema provides, such as explaining parameter interactions or usage examples, meeting the baseline for high 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 verb ('List') and resource ('message templates in the WhatsApp Business Account'), making the purpose specific and understandable. However, it does not explicitly distinguish this tool from sibling tools like 'get_usiness_profile' or 'get_phone_numbers', which might also list resources, so it misses full differentiation.
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 by mentioning optional filtering by status, but it does not provide explicit guidance on when to use this tool versus alternatives like 'get_analytics' or 'send_template_message'. There is no mention of prerequisites, exclusions, or specific contexts for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_message_readB
Mark a received message as read (blue checkmarks). Use the message_id from a received webhook.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | The wamid of the message to mark as read |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool marks messages as read, implying a mutation operation, but doesn't disclose behavioral traits like required permissions, side effects (e.g., notifications), rate limits, or error conditions. The mention of 'blue checkmarks' adds minor context about visual feedback.
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 with zero waste: the first states the purpose and visual outcome, the second provides usage guidance. It's appropriately sized and front-loaded, with every sentence earning its place.
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 annotations, no output schema, and a simple single-parameter tool, the description is adequate but incomplete. It covers the basic purpose and usage hint but lacks details on behavioral aspects like permissions or error handling, which are important for a mutation tool. The context signals indicate low complexity, so this is minimally viable.
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 100%, with the parameter 'message_id' fully documented in the schema as 'The wamid of the message to mark as read.' The description adds no additional meaning beyond this, such as format examples or constraints, so it meets the baseline for high 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 action ('Mark a received message as read') and the resource ('message'), with specific visual feedback ('blue checkmarks'). It distinguishes from siblings by focusing on read status updates rather than sending messages or managing templates, though it doesn't explicitly contrast with other tools.
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 implied usage context by specifying 'Use the message_id from a received webhook,' which suggests this tool is for processing incoming messages. However, it doesn't explicitly state when to use it versus alternatives or mention any prerequisites beyond having a message_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_contact_messageC
Send a contact card to a WhatsApp number.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient phone number | |
| contacts | Yes | Array of contact cards to send |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('send') but doesn't reveal whether this is a mutating operation (likely yes), what permissions are required, whether it's synchronous/asynchronous, error conditions, or what happens on success/failure. For a messaging tool with zero annotation coverage, this is a significant gap.
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 a single, efficient sentence that front-loads the core purpose with zero wasted words. It immediately communicates what the tool does without unnecessary elaboration.
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 this is a mutating tool (sending messages) with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like success responses, error handling, authentication needs, or rate limits. The agent lacks critical context for proper 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 100%, with both parameters ('to' and 'contacts') clearly documented in the schema. The description adds no additional parameter semantics beyond implying the 'contacts' parameter contains contact cards. This meets the baseline of 3 when the schema does the heavy lifting.
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') and resource ('contact card to a WhatsApp number'), making the purpose immediately understandable. It distinguishes this from other messaging tools (like send_text_message or send_media_message) by specifying it's for contact cards. However, it doesn't explicitly differentiate from all siblings (e.g., send_interactive_message might also involve 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. It doesn't mention prerequisites (e.g., needing WhatsApp Business API access), when contact cards are appropriate versus text messages, or any constraints like rate limits. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_interactive_messageC
Send an interactive message with buttons or a selection list.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient phone number | |
| interactive_type | Yes | Type of interactive message | |
| body_text | Yes | Main body text of the message | |
| buttons | No | Buttons array (max 3) for button type. Each needs id and title. | |
| sections | No | Sections for list type. Each section has title and rows. | |
| header_text | No | Header text | |
| footer_text | No | Footer text | |
| button_text | No | Button label for list type | Menu |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool sends a message but lacks details on behavioral traits such as permissions required, rate limits, delivery guarantees, error handling, or what happens upon invocation (e.g., does it trigger notifications?). This is inadequate for a mutation tool with zero annotation coverage.
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 a single, efficient sentence that front-loads the core purpose without redundancy. Every word earns its place, making it easy to parse quickly.
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 complexity (8 parameters, mutation operation, no output schema, and no annotations), the description is incomplete. It lacks information on behavioral aspects, usage context, and expected outcomes, leaving significant gaps for an AI agent to understand how to invoke 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 100%, so the schema fully documents all 8 parameters. The description adds minimal value beyond the schema by hinting at the interactive_type options ('buttons or a selection list'), but it doesn't explain parameter interactions or provide additional context. Baseline 3 is appropriate when the schema does the heavy lifting.
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') and resource ('interactive message'), specifying it includes 'buttons or a selection list'. It distinguishes from siblings like send_text_message or send_template_message by focusing on interactivity. However, it doesn't explicitly contrast with all sibling tools (e.g., send_contact_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?
No explicit guidance on when to use this tool versus alternatives is provided. The description mentions 'buttons or a selection list', which implies usage for interactive content, but it doesn't specify scenarios, prerequisites, or exclusions compared to other send_* tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_location_messageC
Send a location pin to a WhatsApp number.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient phone number | |
| latitude | Yes | Location latitude | |
| longitude | Yes | Location longitude | |
| name | No | Location name | |
| address | No | Location address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Send') but lacks details on permissions required, rate limits, whether it's asynchronous, error handling, or what happens on success (e.g., message ID returned). For a mutation tool with zero annotation coverage, this is a significant gap 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 a single, efficient sentence that directly states the tool's purpose without redundancy. It is front-loaded with the core action and target, making it easy to parse. There is no wasted verbiage or unnecessary elaboration.
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 complexity of a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., side effects, error cases), output expectations, and usage context. While the schema covers parameters well, the overall context for safe and effective use is insufficient.
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 100%, with clear descriptions for all parameters (e.g., 'Recipient phone number', 'Location latitude'). The description adds no additional semantic context beyond the schema, such as format requirements for 'to' (e.g., E.164) or that 'name' and 'address' are optional metadata. Baseline 3 is appropriate since the schema does the heavy lifting.
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 location pin') and target ('to a WhatsApp number'), which is specific and unambiguous. It distinguishes itself from siblings like send_text_message or send_media_message by focusing on location sharing. However, it doesn't explicitly mention the resource (e.g., 'via WhatsApp Business API') or differentiate from send_contact_message in terms of content type beyond the name.
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. It doesn't mention prerequisites (e.g., needing a verified business account), exclusions (e.g., not for group chats), or comparisons to siblings like send_text_message for non-location messages. Usage is implied by the name but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_media_messageC
Send an image, video, audio, or document to a WhatsApp number.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient phone number in international format | |
| media_type | Yes | Type of media to send | |
| media_url | No | Public URL of the media file | |
| media_id | No | Media ID from a previous upload | |
| caption | No | Caption for the media (images and videos only) | |
| filename | No | Filename for documents |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('send') but doesn't mention critical details like required permissions, rate limits, error conditions, or what happens on success (e.g., message ID returned). This is inadequate for a mutation tool with zero annotation coverage.
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 a single, efficient sentence that directly states the tool's function without any fluff or redundancy. It's appropriately sized and front-loaded, making it easy to parse quickly.
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 complexity of sending media (a mutation operation with multiple parameters) and the absence of both annotations and an output schema, the description is incomplete. It doesn't cover behavioral aspects like authentication needs, response format, or error handling, which are crucial for effective tool use.
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 100%, so the schema already documents all parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain media URL requirements or caption limitations further), meeting the baseline for high 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 action ('send') and resource ('image, video, audio, or document to a WhatsApp number'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like send_text_message or send_template_message, which prevents a perfect score.
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 send_text_message or send_template_message. It also doesn't mention prerequisites such as needing a media URL or ID, or when to use upload_media first, leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_template_messageA
Send a pre-approved template message. Required for initiating conversations outside the 24-hour window. Templates must be approved by Meta before use.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient phone number in international format | |
| template_name | Yes | Name of the approved template | |
| language | No | Template language code (e.g., pt_BR, en_US) | pt_BR |
| components | No | Template components with variable values (header, body, button params) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions that templates must be 'approved by Meta before use,' which adds important context about prerequisites. However, it lacks details about rate limits, error conditions, response format, or what happens if an unapproved template is used—significant gaps for a messaging 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 two sentences with zero waste—each sentence adds critical information (what the tool does and when to use it). It's front-loaded with the core purpose and efficiently includes the key constraint about Meta approval.
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 messaging tool with no annotations and no output schema, the description covers the basic purpose and a key usage constraint. However, it lacks details about behavioral aspects like authentication needs, error handling, or what the tool returns, leaving gaps that could hinder an agent's ability to use it correctly.
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 100%, so the schema already documents all parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema (e.g., it doesn't explain template_name format or components structure). Baseline 3 is appropriate when the schema does the heavy lifting.
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 pre-approved template message') and identifies the resource (template messages). It distinguishes from siblings like send_text_message or send_media_message by specifying template-based sending, though it doesn't explicitly contrast with send_interactive_message which might also use templates.
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 clear context for when to use this tool ('Required for initiating conversations outside the 24-hour window'), which is specific and actionable. It doesn't explicitly mention when not to use it or name alternatives, but the context strongly implies it's for outbound messaging beyond the standard window.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_text_messageA
Send a text message to a WhatsApp number. Works within the 24-hour conversation window. For messages outside this window, use send_template_message instead.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient phone number in international format (e.g., 5541999999999) | |
| body | Yes | Message text content | |
| preview_url | No | Whether to show URL previews |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the 24-hour window constraint, which is valuable behavioral context. However, it doesn't mention authentication requirements, rate limits, error conditions, or what happens on success/failure. For a messaging tool with zero annotation coverage, this leaves significant gaps.
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 with zero waste - first states purpose, second provides critical usage guidance. Perfectly front-loaded and appropriately sized for the tool's complexity.
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 annotations and no output schema, the description provides good context about the 24-hour window constraint and alternative tool. However, for a messaging tool that presumably returns success/failure status, the lack of output information is a minor gap. The description is mostly complete for its purpose.
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 100%, so the schema already documents all three parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. This meets the baseline expectation when schema coverage is high.
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 specific action ('Send a text message') and target resource ('to a WhatsApp number'), distinguishing it from siblings like send_template_message, send_media_message, etc. It provides precise scope without being tautological.
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?
Explicitly states when to use ('within the 24-hour conversation window') and when not to use ('outside this window'), with a clear alternative named ('use send_template_message instead'). This provides perfect guidance for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_business_profileC
Update the WhatsApp Business profile information.
| Name | Required | Description | Default |
|---|---|---|---|
| about | No | Short description (max 139 chars) | |
| description | No | Business description (max 512 chars) | |
| address | No | Business address | |
| No | Business email | ||
| websites | No | Business website URLs (max 2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Update' implies a mutation operation, the description fails to disclose important behavioral traits: whether this requires specific permissions, if changes are reversible, what happens to existing fields not mentioned, rate limits, or error conditions. It provides only the basic action without operational 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 a single, efficient sentence that states the core action without unnecessary words. It's appropriately sized for a tool with good schema documentation and gets straight to the point with zero wasted verbiage.
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 mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what happens after the update, what the response looks like, error conditions, or important constraints. The combination of mutation operation + zero annotation coverage + no output schema requires more descriptive context than provided.
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 100% schema description coverage, the input schema already documents all 5 parameters thoroughly with descriptions and constraints. The description adds no parameter-specific information beyond the generic 'profile information' phrase, so it doesn't enhance understanding of what each parameter controls or their relationships.
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 ('Update') and resource ('WhatsApp Business profile information'), making the purpose immediately understandable. However, it doesn't distinguish this tool from potential alternatives like 'get_business_profile' or explain what specific aspects of the profile can be updated beyond the generic 'information' term.
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. It doesn't mention prerequisites (like needing an existing profile), doesn't contrast with the sibling 'get_business_profile' tool, and offers no context about appropriate use cases or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_mediaB
Upload a media file for later sending. Returns a media_id that can be used with send_media_message.
| Name | Required | Description | Default |
|---|---|---|---|
| file_url | Yes | Public URL of the file to upload | |
| type | Yes | MIME type (e.g., image/jpeg, application/pdf) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the return value ('media_id') and that the file is uploaded 'for later sending,' which hints at storage and delayed use. However, it fails to disclose critical behavioral traits such as authentication requirements, rate limits, file size constraints, supported MIME types beyond examples, or whether the upload is permanent or temporary, leaving significant gaps 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 extremely concise and front-loaded, consisting of only two sentences that efficiently convey the core purpose and outcome. Every sentence earns its place: the first explains the action and intent, and the second clarifies the return value and its usage, with zero wasted words or redundancy.
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 complexity as a mutation operation with no annotations and no output schema, the description is incomplete. It lacks details on behavioral aspects like permissions, error handling, or response format beyond 'media_id,' and doesn't address how the uploaded media integrates with sibling tools. While it states the basic purpose, it doesn't provide enough context for safe and effective use in a broader workflow.
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 has 100% description coverage, with clear documentation for both parameters ('file_url' and 'type'). The description adds no additional parameter semantics beyond what the schema provides, such as format details or constraints. According to the rules, with high schema coverage (>80%), the baseline score is 3, as the description doesn't need to compensate but also doesn't add value here.
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: 'Upload a media file for later sending.' It specifies the verb ('upload') and resource ('media file'), and distinguishes it from siblings like 'send_media_message' by indicating it's for preparation rather than direct sending. However, it doesn't explicitly differentiate from 'get_media_url' or other media-related tools, preventing a perfect score.
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 by stating the tool returns a 'media_id that can be used with send_media_message,' suggesting it's a prerequisite for sending media. However, it lacks explicit guidance on when to use this versus alternatives like 'send_media_message' directly (if available) or other upload methods, and doesn't mention any exclusions or prerequisites beyond the implied workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
16 tool updates
v0.1.0- First observed
create_template - First observed
delete_template - First observed
get_analytics - First observed
get_business_profile - First observed
get_media_url - First observed
get_phone_numbers - First observed
list_templates - First observed
mark_message_read - First observed
send_contact_message - First observed
send_interactive_message - First observed
send_location_message - First observed
send_media_message - First observed
send_template_message - First observed
send_text_message - First observed
update_business_profile - First observed
upload_media
TDQS
Scored across 16 tools
Every tool has a clearly distinct purpose with no ambiguity. For example, send_text_message, send_media_message, and send_template_message each handle different message types, while get_business_profile and update_business_profile are clearly separate read and write operations. The descriptions reinforce these distinctions, making tool selection straightforward.
All tool names follow a consistent verb_noun pattern with clear, descriptive verbs like create, delete, get, list, mark, send, and update. There are no deviations in style (e.g., no camelCase or mixed conventions), making the naming highly predictable and readable throughout the set.
With 16 tools, the server is well-scoped for managing a WhatsApp Business Account, covering key areas like messaging (text, media, templates, interactive), profile management, analytics, and media handling. Each tool earns its place without feeling excessive or thin, aligning well with the domain's complexity.
The tool set provides complete CRUD/lifecycle coverage for the WhatsApp Business domain. It includes creation (e.g., create_template, upload_media), retrieval (e.g., get_business_profile, list_templates), updates (e.g., update_business_profile, mark_message_read), and deletion (delete_template), with no obvious gaps that would hinder agent workflows.
Related MCP Connectors
Give your AI agents a real WhatsApp number to send and receive messages.
Run WhatsApp Business campaigns from any AI assistant: contacts, segments, and broadcasts.
WhatsApp for your app or AI agent over OAuth2 — the same connections WASync runs inside your CRM.
WhatsApp CRM for AI agents: search contacts, read chats, manage the sales pipeline, send messages.