Skip to main content
Glama

WhatsApp Business API by Wassenger

manage_whatsapp_web_form_appearance

Idempotent

How the web forms of one WhatsApp number look: business name, description, accent colour, footer, privacy, terms and website links, and the logo. Actions: get, update, set_logo (an https URL or a base64 PNG/JPEG up to 1 MB), remove_logo. Changes reach open forms within about a minute.

On WhatsApp Cloud API numbers, a form goes out as a template outside the 24-hour window, and campaigns there only send templates: link_templates lists the number's templates whose URL button opens a form link (with that button's index), and create_link_template creates one (UTILITY, one URL button) and submits it to WhatsApp for review. Then send it with send_whatsapp_web_form and its template argument. For WhatsApp Forms (Meta WhatsApp Flows, native in-chat forms on WhatsApp Business API numbers) use send_whatsapp_flow and list_whatsapp_flows instead.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "action": "<action>",
      "device": "<device>"
    },
    "name": "manage_whatsapp_web_form_appearance"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlNoset_logo: https URL of a PNG or JPEG
nameNoBusiness name shown on the forms; null or "" goes back to the WhatsApp profile default
textNocreate_link_template: text above the button, without variables; a default one in the template language when left out
colorNoAccent colour, #RRGGBB; null goes back to the default
imageNoset_logo: the image as base64 or a data URI
linksNoLegal and website links, https; null removes one
actionYesWhat to do
deviceYesWhatsApp number (device) ID, 24 hex characters. Use get_whatsapp_devices to find it
footerNoPlain text at the foot of every form; null or "" goes back to the WhatsApp profile default
languageNocreate_link_template: WhatsApp template language code, e.g. en_US, es, pt_BR
buttonTextNocreate_link_template: button text, up to 25 characters
logoHiddenNoHide the logo without removing it
descriptionNoOne paragraph under the name; null or "" goes back to the WhatsApp profile default
templateNameNocreate_link_template: template name; web_form_link by default

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A3.8/5.0
Behavior4/5

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

Beyond the annotations it discloses a propagation delay ("Changes reach open forms within about a minute") and the fact that create_link_template submits the template to WhatsApp for review – genuine side-effect context an agent cannot get from readOnlyHint/destructiveHint/idempotentHint. It omits permission/auth requirements and what remove_logo leaves behind, which keeps it from a 5.

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 and the action list are front-loaded in the first sentence, followed by propagation timing, and the second paragraph handles the Cloud-API-vs-Flows split. It is dense but nearly every clause carries information; the template/flow paragraph is long relative to this tool's appearance-editing core.

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 6-action, 14-parameter tool with no output schema, the description never says what 'get' returns or whether 'update' is partial or a full replacement of the appearance block. Action routing and logo constraints are covered well, but the read/update contract – the parts the schema cannot express – is missing.

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 each parameter already carries an action-prefixed description ("set_logo: ...", "create_link_template: ...", "null goes back to the default"), so the schema does the heavy lifting. The description adds only the note that link_templates returns templates with the URL button's index, so baseline 3 applies.

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 names the resource precisely ("How the web forms of one WhatsApp number look") and enumerates the editable surface (business name, description, accent colour, footer, privacy, terms, website links, logo) plus the six actions. That makes it distinguishable from helpers like manage_whatsapp_web_forms, though it never explicitly contrasts with that sibling by name.

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?

It states when the template actions apply ("On WhatsApp Cloud API numbers, a form goes out as a template outside the 24-hour window, and campaigns there only send templates"), and routes the agent away to send_whatsapp_web_form / send_whatsapp_flow / list_whatsapp_flows for the sending side. There is no explicit exclusion for the appearance actions themselves (e.g., when to use update vs manage_whatsapp_web_forms), so it is strong context but not full when/when-not coverage.

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.