Skip to main content
Glama

WhatsApp Business API by Wassenger

send_whatsapp_web_form

Send a published web form to a WhatsApp chat as a message with a short link. The link is minted for that chat only and is put where the message says {{form.url}}, or added at the end. The customer's answers arrive as a submission (see manage_whatsapp_web_form_submissions) and in the form:submitted webhook. For WhatsApp Forms (Meta WhatsApp Flows, native in-chat forms on WhatsApp Business API numbers) use send_whatsapp_flow and list_whatsapp_flows instead.

On WhatsApp Cloud API numbers a free-text message needs the customer to have written within the last 24 hours. Outside that window pass template: an approved template whose URL button opens a form link (list or create one with manage_whatsapp_web_form_appearance, actions link_templates and create_link_template). Pass an idempotencyKey: a retry with the same key is refused instead of sending the form twice.

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": {
      "formId": "<formId>"
    },
    "name": "send_whatsapp_web_form"
  }
}

Input Schema

NameRequiredDescriptionDefault
chatNoChat ID, e.g. 34600111222@c.us (individual chats only: groups and channels cannot receive web forms)
phoneNoPhone number in international format (E.164), e.g. +34600111222
deviceNoNumber to send from. Needed when the account has more than one
formIdYesWeb form ID (id from the list action)
messageNoMessage text; put {{form.url}} where the link goes, e.g. "Hi Maria! Please confirm your delivery: {{form.url}}". The link is appended when there is none
templateNoWhatsApp Cloud API numbers, outside the 24-hour window: send the form as this template instead of a text. message is then ignored
expiresInNoHow long the link works: "48h", "7d", or seconds (1 hour to 90 days). The form's own setting when omitted
referenceNoYour own reference for this link, kept with it and its submissions
variablesNoFlat values the form reads as link.<key> (keys a-z, 0-9 and _, at most 2 KB in all), e.g. { "order_id": "A-1029" }
callbackUrlNohttps URL that receives the submission as well as the webhooks
idempotencyKeyNoYour unique key for this message, 6 to 36 characters. Reuse it when retrying the same send: the API refuses a second message with 409 instead of sending it twice

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare it is a non-read-only, open-world, non-idempotent send, so the description's added value is in the operational details: the link is minted per-chat, {{form.url}} substitution with append-at-end fallback, answers returning as a submission plus form:submitted webhook, the 24-hour free-text window, and 409 refusal on repeated idempotencyKey. The only gap is that it does not restate the destructiveHint=false implication (no message is deleted/edited), which is minor. It does not contradict idempotentHint=false — the idempotency key is opt-in per call.

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 tight paragraphs, front-loaded with what the tool does and immediately followed by sibling routing, then preconditions. No filler sentences; every clause carries a decision-relevant fact.

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?

For an 11-parameter, nested-object, no-output-schema tool, the description covers the things an agent cannot infer: the delivery path of customer answers, the WhatsApp Cloud API window constraint, and template prerequisites. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3, but the description earns above baseline by explaining the interaction between parameters: template is only for Cloud API numbers outside the 24-hour window and message is then ignored, and the link placement rule for message. Idempotency-key semantics are largely duplicated from the schema rather than extended.

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 and resource ('Send a published web form to a WhatsApp chat as a message with a short link') and explicitly disambiguates from the closest siblings, send_whatsapp_flow and list_whatsapp_flows, by naming the different product (Meta WhatsApp Flows). An agent can route between the two without opening either schema.

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?

Gives explicit when-to-use and when-not-to-use rules: use this for web forms, use send_whatsapp_flow for native in-chat Flows. It also states the precondition that selects the template parameter (Cloud API numbers outside the 24-hour window) and points to manage_whatsapp_web_form_appearance's link_templates and create_link_template actions for obtaining one.

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.