Skip to main content
Glama
Maheidem

WAHA WhatsApp MCP Server

by Maheidem

React to WhatsApp Message

whatsapp_react
Idempotent

React to WhatsApp messages with emojis. Remove reactions by passing an empty string.

Instructions

React to a WhatsApp message with an emoji.

Use an empty string for the reaction to remove an existing reaction.

Args:

  • contactId: Contact id: phone digits for a person (e.g. "5521986910666"; survives @c.us↔@lid flips), or a group JID "*@g.us". Look up via whatsapp_list_contacts.

  • messageId: Message ID to react to (get from whatsapp_read_messages)

  • reaction: Emoji to react with (e.g., "👍", "❤️", "😂"). Empty string removes reaction.

Returns confirmation of the reaction.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
contactIdYesContact id: phone digits for a person (e.g. "5521986910666"; survives @c.us↔@lid flips), or a group JID "*@g.us". Look up via whatsapp_list_contacts.
messageIdYesMessage ID to react to
reactionYesEmoji reaction (e.g., "👍", "❤️"). Empty string removes reaction.
Behavior4/5

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

Annotations indicate idempotent, destructive=false, readOnly=false, openWorld=true. The description adds important context: removal via empty string and return confirmation. No contradictions.

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?

Three concise paragraphs: first sentence states purpose, second gives special behavior, third explains args. Every sentence is necessary and no fluff.

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?

Given 3 required parameters, no output schema, the description covers all necessary aspects: purpose, parameter usage, special cases, and references to sibling tools for lookup. An agent can correctly invoke this tool.

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%, but the description adds value by explaining the empty string removal for reaction and providing examples for contactId format. It also ties contactId and messageId to lookup tools.

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 clearly states the verb 'React' and resource 'WhatsApp message', and distinguishes from siblings like delete or edit. It also specifies the empty string behavior for removing reactions, which is unique.

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?

Provides clear context on how to use the tool (e.g., refer to whatsapp_list_contacts and whatsapp_read_messages), and mentions the empty string for removal. However, it does not explicitly contrast with alternatives like whatsapp_send_text or whatsapp_edit_message.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Maheidem/waha-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server