Skip to main content
Glama
EvandroSchechtel

WhatsApp Business MCP Server

@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

send_text_message

Envia mensagem de texto (dentro da janela de 24h)

send_template_message

Envia template pré-aprovado (fora da janela de 24h)

send_media_message

Envia imagem, vídeo, áudio ou documento

send_interactive_message

Envia mensagem com botões ou lista

send_location_message

Envia localização

send_contact_message

Envia cartão de contato

mark_message_read

Marca mensagem como lida

list_templates

Lista templates com status de aprovação

create_template

Cria novo template para aprovação

delete_template

Deleta template

get_phone_numbers

Lista números com quality rating

get_business_profile

Retorna perfil do negócio

update_business_profile

Atualiza perfil

get_analytics

Métricas de mensagens por período

upload_media

Upload de mídia para envio

get_media_url

URL de download de mídia recebida

Resources (contexto read-only)

Resource

URI

Templates ativos

whatsapp://templates

Perfil do negócio

whatsapp://profile

Números registrados

whatsapp://phone-numbers

Prompts (guias reutilizáveis)

Prompt

Uso

campaign-sender

Guia para enviar campanha de marketing

support-responder

Guia para responder suporte

template-creator

Guia para criar templates seguindo regras da Meta

Instalação

npm install @bridgeapi/mcp-whatsapp

Configuraçã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"  # default

Como 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 dev

Arquitetura

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_execute e post_execute estã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.

Available Tools

16 tools
create_templateA

Create a new message template for approval by Meta. Templates are required for outbound messages outside the 24-hour window.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTemplate name (lowercase, underscores only)
languageNoTemplate language codept_BR
categoryYesTemplate category — affects pricing and approval rules
componentsYesTemplate components: HEADER, BODY, FOOTER, BUTTONS

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
template_nameYesName of the template to delete

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

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. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesStart date in UNIX timestamp format
end_dateYesEnd date in UNIX timestamp format
granularityNoData granularityDAY

TDQS

C2.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 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/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: '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.

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

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. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
media_idYesMedia ID from a received message webhook

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

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?

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter templates by approval status
limitNoMax templates to return

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

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 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYesThe wamid of the message to mark as read

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient phone number
contactsYesArray of contact cards to send

TDQS

C2.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 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

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') 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.

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. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient phone number
interactive_typeYesType of interactive message
body_textYesMain body text of the message
buttonsNoButtons array (max 3) for button type. Each needs id and title.
sectionsNoSections for list type. Each section has title and rows.
header_textNoHeader text
footer_textNoFooter text
button_textNoButton label for list typeMenu

TDQS

C2.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 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

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') 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.

Usage Guidelines2/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 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient phone number
latitudeYesLocation latitude
longitudeYesLocation longitude
nameNoLocation name
addressNoLocation address

TDQS

C2.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 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

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 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.

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. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient phone number in international format
media_typeYesType of media to send
media_urlNoPublic URL of the media file
media_idNoMedia ID from a previous upload
captionNoCaption for the media (images and videos only)
filenameNoFilename for documents

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

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') 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.

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 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient phone number in international format
template_nameYesName of the approved template
languageNoTemplate language code (e.g., pt_BR, en_US)pt_BR
componentsNoTemplate components with variable values (header, body, button params)

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

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 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient phone number in international format (e.g., 5541999999999)
bodyYesMessage text content
preview_urlNoWhether to show URL previews

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aboutNoShort description (max 139 chars)
descriptionNoBusiness description (max 512 chars)
addressNoBusiness address
emailNoBusiness email
websitesNoBusiness website URLs (max 2)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

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. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_urlYesPublic URL of the file to upload
typeYesMIME type (e.g., image/jpeg, application/pdf)

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/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: '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.

Usage Guidelines3/5

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.

  1. 16 tool updatesv0.1.0
    • First observedcreate_template
    • First observeddelete_template
    • First observedget_analytics
    • First observedget_business_profile
    • First observedget_media_url
    • First observedget_phone_numbers
    • First observedlist_templates
    • First observedmark_message_read
    • First observedsend_contact_message
    • First observedsend_interactive_message
    • First observedsend_location_message
    • First observedsend_media_message
    • First observedsend_template_message
    • First observedsend_text_message
    • First observedupdate_business_profile
    • First observedupload_media

TDQS

A3.7/5.0

Scored across 16 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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