Skip to main content
Glama
razvangirgiz

wazap-mcp

by razvangirgiz

Manage a WhatsApp group

manage_group
Destructive

Create, join, and administer WhatsApp groups: manage members, settings, invite links, and join requests. Confirm changes before they are shown to all members.

Instructions

Create a group, join one from an invite (preview first, then confirm: true), or administer one: members, name, description, photo, invite link, join requests, settings, leave. Most actions need admin. Every change shows to all members at once: say what will change, wait for a yes.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlNoset_picture: public image URL
valueNoThe name (create, set_subject) or description; "on"/"off"; set_add_mode "admins"/"all"; set_disappearing "off"/"24h"/"7d"/"90d"
actionYes
inviteNojoin: a chat.whatsapp.com link or its code
confirmNojoin: true joins, after the user said yes to the preview
group_idNo"<id>@g.us"; every action but create and join
file_pathNoset_picture: local JPEG, PNG or WebP
account_idNoAccount id
message_idNojoin: an invite message instead
participant_idsNocreate, add, remove, promote, demote, approve or reject

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNo
nextNojoin preview: the step after the user's yes
actionYes
statusNojoin: preview joins nothing
appliedNo
group_idYes
account_idYes
descriptionNo
invite_linkNo
participantsNo
join_approvalNo
join_requestsNo
profile_pic_urlNo
participant_countNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed13 schema fields changedv1.0.3
    • changedInput schema / properties / account_id / description
      Previous value: -"Registry account id (default, work, …). Omit to resolve from chat_id or message_id, or the default account."New value: +"Account id"
    • removedInput schema / properties / action / description
      Removed value: -"Group action to perform"
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "add",
      -  "remove",
      -  "promote",
      -  "demote",
      -  "leave",
      -  "set_subject",
      -  "set_description",
      -  "set_picture",
      -  "remove_picture",
      -  "get_invite_link",
      -  "revoke_invite_link",
      -  "list_join_requests",
      -  "approve_join_requests",
      -  "reject_join_requests",
      -  "set_announcement_only",
      -  "set_info_locked",
      -  "set_add_mode",
      -  "set_join_approval",
      -  "set_disappearing"
      -]New value: +[
      +  "create",
      +  "join",
      +  "add",
      +  "remove",
      +  "promote",
      +  "demote",
      +  "leave",
      +  "set_subject",
      +  "set_description",
      +  "set_picture",
      +  "remove_picture",
      +  "get_invite_link",
      +  "revoke_invite_link",
      +  "list_join_requests",
      +  "approve_join_requests",
      +  "reject_join_requests",
      +  "set_announcement_only",
      +  "set_info_locked",
      +  "set_add_mode",
      +  "set_join_approval",
      +  "set_disappearing"
      +]
    • addedInput schema / properties / confirm
      Added value: +{
      +  "default": false,
      +  "description": "join: true joins, after the user said yes to the preview",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / file_path / description
      Previous value: -"set_picture: absolute path of a local JPEG, PNG or WebP"New value: +"set_picture: local JPEG, PNG or WebP"
    • changedInput schema / properties / group_id / description
      Previous value: -"Group chat id (\"<id>@g.us\")"New value: +"\"<id>@g.us\"; every action but create and join"
    • addedInput schema / properties / invite
      Added value: +{
      +  "description": "join: a chat.whatsapp.com link or its code",
      +  "maxLength": 512,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / message_id
      Added value: +{
      +  "description": "join: an invite message instead",
      +  "minLength": 5,
      +  "type": "string"
      +}
    • changedInput schema / properties / participant_ids / description
      Previous value: -"Targets of add/remove/promote/demote/approve_join_requests/reject_join_requests"New value: +"create, add, remove, promote, demote, approve or reject"
    • changedInput schema / properties / url / description
      Previous value: -"set_picture: public http(s) URL to fetch and use as the photo"New value: +"set_picture: public image URL"
    • changedInput schema / properties / value / description
      Previous value: -"New subject or description; \"on\"/\"off\" for set_announcement_only, set_info_locked, set_join_approval; \"admins\"/\"all\" for set_add_mode; \"off\"/\"24h\"/\"7d\"/\"90d\" for set_disappearing"New value: +"The name (create, set_subject) or description; \"on\"/\"off\"; set_add_mode \"admins\"/\"all\"; set_disappearing \"off\"/\"24h\"/\"7d\"/\"90d\""
    • changedInput schema / required
      Previous value: -[
      -  "group_id",
      -  "action"
      -]New value: +[
      +  "action"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "account_id": {
      +      "type": "string"
      +    },
      +    "action": {
      +      "type": "string"
      +    },
      +    "applied": {
      +      "type": "string"
      +    },
      +    "description": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "group_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "invite_link": {
      +      "type": "string"
      +    },
      +    "join_approval": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "join_requests": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "name": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "next": {
      +      "description": "join preview: the step after the user's yes",
      +      "type": "string"
      +    },
      +    "participant_count": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "participants": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "id": {
      +            "type": "string"
      +          },
      +          "reason": {
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "ok",
      +              "invite_needed",
      +              "failed"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "profile_pic_url": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "description": "join: preview joins nothing",
      +      "enum": [
      +        "preview",
      +        "joined",
      +        "pending_approval"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "action",
      +    "group_id",
      +    "account_id"
      +  ],
      +  "type": "object"
      +}
  2. Changed5 schema fields changedv0.21.0
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "add",
      -  "remove",
      -  "promote",
      -  "demote",
      -  "leave",
      -  "set_subject",
      -  "set_description",
      -  "get_invite_link",
      -  "revoke_invite_link"
      -]New value: +[
      +  "add",
      +  "remove",
      +  "promote",
      +  "demote",
      +  "leave",
      +  "set_subject",
      +  "set_description",
      +  "set_picture",
      +  "remove_picture",
      +  "get_invite_link",
      +  "revoke_invite_link",
      +  "list_join_requests",
      +  "approve_join_requests",
      +  "reject_join_requests",
      +  "set_announcement_only",
      +  "set_info_locked",
      +  "set_add_mode",
      +  "set_join_approval",
      +  "set_disappearing"
      +]
    • addedInput schema / properties / file_path
      Added value: +{
      +  "description": "set_picture: absolute path of a local JPEG, PNG or WebP",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedInput schema / properties / participant_ids / description
      Previous value: -"Targets of add/remove/promote/demote"New value: +"Targets of add/remove/promote/demote/approve_join_requests/reject_join_requests"
    • addedInput schema / properties / url
      Added value: +{
      +  "description": "set_picture: public http(s) URL to fetch and use as the photo",
      +  "format": "uri",
      +  "type": "string"
      +}
    • changedInput schema / properties / value / description
      Previous value: -"New subject or description"New value: +"New subject or description; \"on\"/\"off\" for set_announcement_only, set_info_locked, set_join_approval; \"admins\"/\"all\" for set_add_mode; \"off\"/\"24h\"/\"7d\"/\"90d\" for set_disappearing"
  3. Changed1 schema field changedv0.15.0
    • addedInput schema / properties / account_id
      Added value: +{
      +  "description": "Registry account id (default, work, …). Omit to resolve from chat_id or message_id, or the default account.",
      +  "minLength": 1,
      +  "type": "string"
      +}
  4. First observedv0.9.3

TDQS

A4.6/5.0
Behavior5/5

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

Although annotations already declare destructiveHint=true and readOnlyHint=false, the description adds valuable behavioral detail beyond those flags: 'Most actions need admin' and 'Every change shows to all members at once: say what will change, wait for a yes.' It also discloses the confirm-before-join flow with 'preview first, then confirm: true,' which is exactly the kind of side-effect transparency an agent needs for a social, visible mutation tool. No contradiction with annotations.

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?

The description is two sentences with no filler. The first sentence front-loads the tool's capabilities, and the second delivers the critical behavioral warning. Every clause earns its place.

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 a broad tool with 21 enum actions and 10 parameters, the description gives a high-level map of capabilities plus the essential safety/social rules. The output schema exists, so return values need no explanation. It could be slightly more complete by steering read-only group lookups to get_group_info, but the description is sufficient for an agent to use it safely.

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 description coverage is 90%, so the schema carries most parameter meaning. The description adds important semantic context for the confirm parameter by tying it to user consent: 'preview first, then confirm: true' and 'wait for a yes.' This goes beyond the schema's bare 'join: true joins, after the user said yes to the preview' and reinforces how the parameter should be used.

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 uses specific verbs and resources: 'Create a group, join one from an invite ... or administer one: members, name, description, photo, invite link, join requests, settings, leave.' This clearly differentiates it from siblings like manage_chat and get_group_info by scoping it to group-level administration. It is not a tautology and communicates the tool's full intent.

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?

The description gives practical context: 'Most actions need admin' and 'Every change shows to all members at once: say what will change, wait for a yes.' This tells the agent when it is appropriate to invoke the tool and what interaction pattern to follow. It does not explicitly name alternatives or exclusion conditions, but the group-vs-chat scope and admin caution make usage context clear.

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