Skip to main content
Glama

Patch WhatsApp flow text

patch_whatsapp_flow_text
Destructive

Rewrite wording inside a WhatsApp Flow draft, and nothing else. Each patch is a JSON pointer (from get_whatsapp_flow: the component's path plus "/" plus the property, e.g. /screens/0/layout/children/1/label) and the replacement string; at most 20 per call, applied all or nothing. Two things are refused outright, so do not attempt them: a pointer that does not land on a text property (a screen id, an action name, a component type, a payload key) is refused with the path named, and a flow that is not a draft cannot be patched at all — a published flow has to be superseded by a new draft. A value that holds a ${...} reference is a binding, not wording, and is left alone. Always pass the lock_version get_whatsapp_flow returned for this flow: it is what proves the patch was written against the document as it stands, and a patch without one cannot be applied.

Input Schema

NameRequiredDescriptionDefault
flow_idYes
patchesYes
lock_versionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing atomicity (at most 20 patches, all-or-nothing), refusal behavior with reasons (non-text pointer refused with the path named; published flows cannot be patched), that ${...} bindings are left untouched, and the optimistic-concurrency role of lock_version. These are exactly the operational traits annotations can't express.

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 purpose, then pointer format, then refusals, then the lock_version requirement. Every sentence is load-bearing, though the dense single-paragraph form is slightly heavy for the amount of guidance given.

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?

Covers mutation semantics, atomicity, and concurrency adequately for a destructive write tool with no output schema. The one gap is what a successful call returns — an agent doing sequential patches would want to know whether a fresh lock_version comes back.

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?

With 0% schema coverage the description carries the full burden, and it does most of it: it explains that each patch is a JSON pointer plus a replacement string, shows how to build the pointer from get_whatsapp_flow, and defines lock_version's purpose. flow_id is left implicit, but it is self-evident from the parameter name.

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 (rewrite) and precise resource (wording inside a WhatsApp Flow draft), and explicitly bounds scope with 'and nothing else.' An agent can distinguish it from publish_whatsapp_flow, deprecate_whatsapp_flow, delete_whatsapp_flow, and the create/get 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear prerequisites and when-not conditions: the pointer must land on a text property, the flow must be a draft, and a lock_version from get_whatsapp_flow is mandatory. It also names the source tool for pointers. It stops short of naming an explicit alternate tool for the disallowed cases (e.g. superseding a published flow), leaving that inference to the agent.

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