Skip to main content
Glama

WhatsApp Business API by Wassenger

manage_whatsapp_web_form_links

Destructive

Manage web form links: one link per chat, bound to the published version of a form. Actions: create (a link without sending it: the token and url are returned once), list (the links of a form, by state: created, sent, opened, started, submitted, expired, revoked), get, revoke, renew (move the expiry forward from now), chat (the web forms sent in one chat, with their answers). revoke answers a preview and a confirmToken first. To send a form as a message, use send_whatsapp_web_form. 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>"
    },
    "name": "manage_whatsapp_web_form_links"
  }
}

Input Schema

NameRequiredDescriptionDefault
toNolist: created until this day, YYYY-MM-DD (UTC)
chatNocreate: the chat the link is for; list: only this chat; chat: the chat to read
fromNolist: created from this day, YYYY-MM-DD (UTC)
pageNoPage, from 0
sizeNoRows per page (default 25, max 100)
phoneNocreate: the phone number the link is for; list: only this phone
actionYesWhat to do
deviceNocreate: number the link is for (needed with several numbers); list: only this number; chat: the number of the chat
formIdNocreate, list: the web form
linkIdNoget, revoke, renew: the link
statusNolist: only links in these states
contactNocreate: the contact (chat ID or phone) the link is for
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
confirmTokenNoToken from the preview, sent back once the user approved the change
idempotencyKeyNoYour unique key for this request, 6 to 36 characters (a UUID works). Reuse it when retrying: the API answers the form or link already created instead of a second one

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, openWorldHint=true and idempotentHint=false, so the safety profile is covered. The description still adds real behavior beyond that: create returns the token and url only once, revoke answers a preview plus a confirmToken before acting, and renew moves expiry forward from now rather than extending the original window. What it does not add is any note that idempotentHint=false is mitigated by the idempotencyKey parameter, or what list/get actually return.

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?

Front-loaded with the scope, then a tight parenthetical action-by-action breakdown, then an edge-case note, then sibling routing — a logical ordering with essentially no filler. It is dense and long, but every clause delivers either an action definition or a routing decision; the only mild cost is that the single-paragraph action list requires careful reading.

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?

For an 18-parameter, multi-action, destructive tool with no output schema, the description covers the essential decision surface: what each action does, the one-time secret returned by create, and the two-step revoke. The remaining gap is return-shape disclosure — with no output schema, an agent cannot tell what list, get, or chat actually yield beyond 'the links' or 'the answers'.

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 coverage is 100%, so the baseline is 3, but the description meaningfully disambiguates the dominant 'action' parameter — the schema only says 'What to do', while the description defines each of the six actions and their side effects. It also clarifies cross-cutting semantics such as 'one link per chat' and the state vocabulary used by list. It stops short of explaining how the date filters, pagination, or variables interact with specific actions, which the schema carries alone.

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 opens with a precise scope statement ('one link per chat, bound to the published version of a form') and then enumerates all six actions (create, list, get, revoke, renew, chat) with a short gloss for each. It also explicitly names what this tool is NOT — send_whatsapp_web_form for sending and send_whatsapp_flow / list_whatsapp_flows for native WhatsApp Flows — so an agent can separate it from the closest siblings without opening any 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?

Explicit routing rules are given: 'To send a form as a message, use send_whatsapp_web_form' and 'For WhatsApp Forms (Meta WhatsApp Flows...) use send_whatsapp_flow and list_whatsapp_flows instead.' It also states the one non-obvious exclusion inside the tool itself — create makes a link 'without sending it' — which prevents the most likely misuse.

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.