Skip to main content
Glama
razvangirgiz

wazap-mcp

by razvangirgiz

Manage a WhatsApp group

manage_group
Destructive

Create, join, or administer WhatsApp groups: manage members, name, description, photo, invite links, join requests, and settings, with admin checks and confirmation before changes are applied.

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

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_idNo
message_idNojoin: an invite message instead
participant_idsNocreate, add, remove, promote, demote, approve or reject

Output 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. Changed1 schema field changedv1.6.0
    • removedInput schema / properties / account_id / description
      Removed value: -"Account id"
  2. 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"
      +}
  3. 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"
  4. 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"
      +}
  5. First observedv0.9.3

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already flag mutation, destructiveness, open-world behavior, and non-idempotence. The description adds important context beyond them: admin authorization is usually required, and every change is visible to all members, with a consent workflow. It does not distinguish which of the many actions are especially destructive or irreversible.

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 tight sentences, front-loaded with the three usage modes and followed by the key admin and group-wide side-effect constraints. Every sentence carries useful selection or invocation information.

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 complex 21-action tool with an output schema and rich annotations, the description covers the operations, admin prerequisite, join preview/confirm flow, and group-wide side effects. It reasonably relies on the schema for per-action parameter mapping, though it could say more about which actions require particular parameters.

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 description coverage is 80%, so the input schema already documents most parameters. The description maps action categories and mentions the invite/preview/confirm workflow, but adds little format or syntax detail beyond what the schema provides.

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 opens with specific verbs and resources: create a group, join from an invite, and administer members, name, description, photo, invite link, join requests, settings, and leave. This clearly separates it from read-oriented siblings like get_group_info and message-oriented siblings.

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?

It gives concrete usage conditions: join requires a preview then confirm: true, most actions need admin, and group-wide changes require telling users and waiting for yes. It does not name sibling alternatives or say when not to use this tool, so it falls short of a 5.

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