Skip to main content
Glama
mcp-whatsapp

mcp-whatsapp

delete_message

DestructiveIdempotent

Revoke a WhatsApp message for everyone so recipients see a deleted notice; use it to remove your own message or, as a group admin, another sender's message.

Instructions

Revoke (delete-for-everyone) a message; recipients see a message was deleted notice and the local cache row is marked deleted (with the time) and keeps its text and media. Permanent for recipients — there is no undo. You can only delete your own messages unless you are a group admin. Use edit_message instead when you only want to correct text. Returns the plain-text string Message deleted on success.

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": {
      "chat_jid": "<chat_jid>",
      "message_id": "<message_id>"
    },
    "name": "delete_message"
  }
}

Input Schema

NameRequiredDescriptionDefault
chat_jidYesWhatsApp JID: individual as `<digits>@s.whatsapp.net` or bare phone digits, group as `<digits>-<timestamp>@g.us`
message_idYesWhatsApp message ID of the message to revoke (use `message_id` from list_messages)
sender_jidNoJID of the original sender; required when deleting someone else's message as a group admin, leave empty when deleting your own (WhatsApp JID: individual as `<digits>@s.whatsapp.net` or bare phone digits, group as `<digits>-<timestamp>@g.us`)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.3.0
    • changedInput schema / properties / message_id / description
      Previous value: -"WhatsApp message ID"New value: +"WhatsApp message ID of the message to revoke (use `message_id` from list_messages)"
    • changedInput schema / properties / sender_jid / description
      Previous value: -"original sender; leave empty when deleting your own messages (WhatsApp JID: individual as `<digits>@s.whatsapp.net` or bare phone digits, group as `<digits>-<timestamp>@g.us`)"New value: +"JID of the original sender; required when deleting someone else's message as a group admin, leave empty when deleting your own (WhatsApp JID: individual as `<digits>@s.whatsapp.net` or bare phone digits, group as `<digits>-<timestamp>@g.us`)"
  2. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag destructive/idempotent/openWorld, but the description adds real substance: recipients see a 'message was deleted' notice, the local cache row is marked deleted with a timestamp while keeping text and media, and the action is permanent with no undo. It also discloses the permission model and the return value, none of which annotations cover.

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?

Front-loaded with the verb and scope, then effects, then the sibling alternative, then the return value. Every sentence and clause carries distinct information; nothing is redundant padding.

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 destructive mutation tool with no output schema, the description covers effects on recipients, local cache behavior, reversibility, authorization, the alternative tool, and the success return string. An agent has everything needed to call it responsibly.

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

Parameters3/5

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

Schema coverage is 100%, so all three parameters are already documented, making the baseline 3. The permission clause ('unless you are a group admin') implicitly motivates the optional sender_jid parameter, but the description adds no format or edge-case detail beyond the schema.

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 — 'Revoke (delete-for-everyone) a message' — and immediately distinguishes itself from the edit path. An agent can tell exactly what this does and how it differs from siblings like edit_message without opening the 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: delete only your own messages unless group admin, and 'Use edit_message instead when you only want to correct text.' Both the alternative and the selecting condition are named.

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