Skip to main content
Glama

WhatsMCP: MCP for WhatsApp

List WhatsApp Business Templates

wa_list_templates
Read-only

List the WhatsApp Business message templates of one of your Business (Cloud API) numbers, with each one's review status (APPROVED, PENDING, REJECTED — a rejected one carries Meta's rejected_reason). Use an APPROVED template's name and language with wa_send_message's template/template_language to start a conversation or message outside the 24-hour window, and supply its 'variables' count as template_variables, in order. Templates apply only to Business numbers, not personal linked-device numbers.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
account_idYesthe Business (Cloud API) account whose templates to list, as returned by wa_list_accounts

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
refusalNopresent only when the call was declined
templatesNoevery message template with its review status; only APPROVED ones can be sent, with the name/language/variables to pass to wa_send_message

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • changedOutput schema / properties / templates / description
      Previous value: -"the approved message templates, with the name/language/variables to pass to wa_send_message"New value: +"every message template with its review status; only APPROVED ones can be sent, with the name/language/variables to pass to wa_send_message"
    • addedOutput schema / properties / templates / items / properties / body
      Added value: +{
      +  "description": "the template's body text as Meta holds it, with its {{n}} variables",
      +  "type": "string"
      +}
    • addedOutput schema / properties / templates / items / properties / buttons
      Added value: +{
      +  "description": "one line per button, e.g. 'Quick reply: Yes' or 'Link: Shop → https://…'",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • addedOutput schema / properties / templates / items / properties / footer
      Added value: +{
      +  "description": "the template's footer, if any",
      +  "type": "string"
      +}
    • addedOutput schema / properties / templates / items / properties / header
      Added value: +{
      +  "description": "the template's text header, if any",
      +  "type": "string"
      +}
    • addedOutput schema / properties / templates / items / properties / rejected_reason
      Added value: +{
      +  "description": "for a REJECTED template, Meta's reason code (e.g. INVALID_FORMAT, TAG_CONTENT_MISMATCH); fix the template and create it again under a new name",
      +  "type": "string"
      +}
  2. Added

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered; the description adds the scoping constraint (Business/Cloud API numbers only, not linked-device numbers) and what the result carries (review status and Meta's rejected_reason for rejections). It doesn't add detail on pagination or rate limits, but the added behavioral context is meaningful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause, followed by output statuses, then downstream usage, then scope restriction. Dense but every sentence carries information; slightly long-winded in packing return values and usage into one run-on structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return format needn't be spelled out, yet the description still names the key status values and the rejected_reason field. Combined with the scope restriction and the hand-off to wa_send_message, an agent has everything needed to call this 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 coverage is 100% and the description's only parameter-related statement ('of one of your Business (Cloud API) numbers') aligns with the schema's account_id description pointing to wa_list_accounts. Baseline 3 is appropriate since the schema already carries the parameter semantics.

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?

States a specific verb (List) and resource (WhatsApp Business message templates) scoped to Business (Cloud API) numbers, and enumerates the returned status values (APPROVED, PENDING, REJECTED with rejected_reason). This clearly separates it from siblings like wa_create_template and wa_delete_template without needing to open their schemas.

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 routes the agent downstream: use an APPROVED template's name/language with wa_send_message's template/template_language to start a conversation or message outside the 24-hour window, and pass the 'variables' count as template_variables in order. It also states the negative scope condition — templates apply only to Business numbers, not personal linked-device numbers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources