Skip to main content
Glama

Turbo Notify: WhatsApp for AI agents

Reply to a message in the same conversation

reply_to_message

Reply to an EARLIER message, quoting it, without naming a recipient.

Use it to bring context into the conversation: when the conversation has moved on and your answer depends on something said a while ago (by the contact, by you or, in a group, by any participant). To answer the message you just received, do not use this tool: send a normal message with send_text and let the chat carry the context, as a person would.

The recipient is worked out from the original: an inbound message is answered to its sender, an outbound one to whoever received it, and a group message to the group.

The message must belong to the inbox named by number_alias; a message_id from a different number returns not found.

Like a person opening the chat, the number first appears online and its unread messages in that conversation are marked as read, then the reply is sent. Opening the conversation this way is automatic and uses no quota of its own.

Input Schema

NameRequiredDescriptionDefault
textYesThe text of your reply, 1 to 4096 characters.
message_idYesMessage id (`msg_…`), as returned by a send or by `list_messages`.
number_aliasNoWhich of the organization's WhatsApp numbers this acts on: `main`, the alias of an extra number, or the number's `id` (`num_…`), which stays the same when the alias is renamed. Call `list_numbers` to see them. Defaults to the main number.main
idempotency_keyNoAny printable ASCII text you choose, 1 to 255 characters, for example the id of the event you are answering. Reusing it for the same number suppresses a duplicate if you retry. Without it, retrying after a timeout may deliver the message twice, and the recipient sees both.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true and idempotentHint=false, so the write/safety profile is covered. The description adds genuinely non-obvious behavior: the number goes online, unread messages in that conversation are marked as read, and that step consumes no quota. However, the side effect of marking messages as read is mentioned without noting it is irreversible/visible to other participants, and the interaction with idempotency_key is left entirely to the schema.

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 core distinction from send_text, then recipient resolution, then failure mode, then side effects — a logical order. Some sentences are wordier than necessary (the 'like a person opening the chat' framing and the trailing quota remark could be tighter), but nothing is redundant or bloated.

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 a 4-parameter write tool with full schema coverage, annotations, and an output schema (so return values need no explanation), the description covers everything an agent needs: when to use it, how the recipient is resolved, the cross-number validation rule, and the read-marking side effect.

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; the description earns an extra point by explaining semantics the schema does not: the recipient is derived from the original message (inbound → sender, outbound → receiver, group → group), and message_id must belong to the inbox named by number_alias or it returns not found.

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 (reply), a specific resource (an EARLIER message), and the defining constraint (quoting it, no recipient named). It also explicitly distinguishes itself from send_text, so an agent can choose between them without inspecting 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 a positive condition ('conversation has moved on and your answer depends on something said a while ago') and an explicit negative one ('to answer the message you just received, do not use this tool: send a normal message with send_text'), naming the alternative.

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.