Skip to main content
Glama
dudu1111685

WAHA MCP Server

by dudu1111685

Hermes MCPs

Personal WhatsApp + Telegram MCP servers for AI agents (hermes-agent, Claude, and any MCP client)

License: MIT Node.js Version MCP Compatible TypeScript

DocumentationInstallationConfiguration🤖 Agent Setup🪽 Hermes SetupTools Reference


🚀 What is Hermes MCPs?

Two sibling MCP servers that give an AI agent control of the owner's personal messaging accounts, built on one shared TypeScript core:

  • WhatsApp (dist/index.js, 84 waha_* tools) — via WAHA (WhatsApp HTTP API) on the GOWS engine

  • Telegram (dist/telegram/index.js, 15 tg_* tools) — directly over MTProto via gramjs, no bot API

Both share the same agent-grade design: inbox triage, LLM-ready conversation rendering, inline voice-note transcription (Soniox), compact token-efficient output, and self-explanatory errors.

✨ Key Features

  • 📱 Complete WhatsApp Control - Send/receive messages, manage chats, create groups

  • 🎯 84 Tools - Comprehensive API coverage for sessions, messaging, contacts, groups, status, labels, and interactive workflows

  • 🧠 Agent-Grade Compound Tools - waha_inbox (triage), waha_find_chat (name → chatId), waha_reply (human-like answering), waha_get_chat_context (LLM-ready conversation rendering)

  • 🎙️ Voice Transcription - Incoming voice notes transcribed automatically via Soniox (Hebrew + 60 languages, OGG/Opus native) — verified end-to-end on real speech

  • 🔄 Smart Media Handling - Auto-conversion for voice/video, URLs & local files, inline image viewing for vision models

  • 🤖 AI-Native - Token-efficient compact responses, MCP tool annotations (read-only/destructive hints)

  • 🔒 Secure - Environment-based API key management, optional local-file sandbox (WAHA_MCP_FILES_DIR)

  • Fast & Reliable - TypeScript-powered, request timeouts, typed errors, vitest suite

  • 🔔 Event-Driven Chat Watches - WAHA webhooks wake Hermes only for watched chats; no minute-level polling. See docs/event-driven-chat-watches.md

  • ✈️ Telegram too - a second MCP server (dist/telegram/index.js) controls your personal Telegram account over MTProto: 15 tg_* tools sharing the same core (inbox digest, conversation rendering, voice transcription, send/react/edit, media, search). See Telegram server


Related MCP server: WAHA MCP Server

📋 Prerequisites

Before you begin, ensure you have:

  • Node.js 18+ - Download here

  • WAHA Plus on the GOWS engine, running in Docker - required for media (the basis of transcription & image viewing) and for connection stability. Full server setup → docs/waha-server-setup.md

  • WAHA API Key - any strong secret you set via WHATSAPP_API_KEY

  • (optional) Soniox API key - enables voice-note transcription (soniox.com; Hebrew + 60 languages)

Why Plus + GOWS? Core can't download incoming media (no voice transcription, no image viewing). NOWEB/WEBJS get the device force-unlinked or break on WhatsApp updates. The setup guide explains the tradeoffs and the anti-ban configuration in detail.


🛠️ Installation

1. Clone & Install

git clone https://github.com/dudu1111685/hermes_mcps.git
cd waha-mcp
npm install
npm run build

2. Set Environment Variables

Create a .env file or export variables:

export WAHA_API_KEY="your-api-key-here"
export WAHA_URL="http://localhost:3001"         # Optional, defaults to localhost:3001
export WAHA_DEFAULT_SESSION="default"           # Optional — see Session policy below
export SONIOX_API_KEY="your-soniox-key"         # Optional — enables voice note transcription
export WAHA_TIMEOUT_MS="30000"                  # Optional — WAHA request timeout
export WAHA_MCP_FILES_DIR="/tmp/waha-mcp"       # Optional — restrict local-file reads to this dir
export WAHA_THROTTLE=1                          # Optional — enable anti-ban send pacing (off by default)

Session policy: WAHA_DEFAULT_SESSION sets the default session name for every tool call. Set it to your session name (e.g. default) for a single-account setup. If you leave it unset, the session parameter becomes required on every tool call — the safe choice when multiple WhatsApp accounts are connected, since a silent default could send from the wrong account. Call waha_list_sessions to enumerate available sessions.

Anti-ban throttle: off by default since the GOWS engine fixed device_removed disconnects. Set WAHA_THROTTLE=1 to enable pacing (3–8s jitter between sends, max 8/min, group ops spaced 120s). High-volume or bursty sends to many recipients are still risky regardless of engine — enable throttling for those use cases.


⚙️ Configuration

Claude Desktop

Add to claude_desktop_config.json:

Linux: ~/.config/claude/claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "waha": {
      "command": "node",
      "args": ["/absolute/path/to/waha-mcp/dist/index.js"],
      "env": {
        "WAHA_API_KEY": "your-api-key-here",
        "WAHA_URL": "http://localhost:3001",
        "WAHA_DEFAULT_SESSION": "default"
      }
    }
  }
}

Session note: WAHA_DEFAULT_SESSION makes every tool default to that session. Omit it only if you connect multiple WhatsApp accounts and want the tool to require an explicit session on every call.

Cline / VS Code

Add to your Cline MCP settings (~/.vscode/mcp.json or workspace settings):

{
  "mcpServers": {
    "waha": {
      "command": "node",
      "args": ["/absolute/path/to/waha-mcp/dist/index.js"],
      "env": {
        "WAHA_API_KEY": "your-api-key-here",
        "WAHA_DEFAULT_SESSION": "default"
      }
    }
  }
}

AI Agents (hermes-agent, Claude Code, and more)

🤖 Enable truly autonomous AI workflows:

Instead of the agent stopping when it needs user input, it can ask questions via WhatsApp and continue working!

🚀 Setup guides: AGENT_SETUP.md (Claude Code / generic MCP) • HERMES_SETUP.md (hermes-agent)

Quick config example:

{
  "mcpServers": {
    "waha": {
      "command": "node",
      "args": ["/path/to/waha-mcp/dist/index.js"],
      "env": {
        "WAHA_API_KEY": "your-key",
        "WAHA_DEFAULT_SESSION": "default",
        "USER_WHATSAPP_CHAT_ID": "1234567890@c.us"
      }
    }
  },
  "globalInstructions": "When you need user input during development, send the question with waha_ask_user and poll waha_check_replies every ~30-60s until answered. Never stop and wait for manual console input."
}

How it works:

  1. Claude hits a question → asks via WhatsApp

  2. You reply from your phone

  3. Claude continues working immediately

  4. Zero downtime! ⚡

📖 See also:

Other MCP Clients

Use the mcporter CLI for quick testing:

mcporter call 'waha-mcp.waha_list_sessions()'
mcporter call 'waha-mcp.waha_send_text(chatId: "1234567890@c.us", text: "Hello from MCP!")'

🧰 Tools Reference

📂 Categories

Tool

Description

waha_inbox

Triage first. Chats sorted by recent activity with last-message previews — "what needs attention?"

waha_find_chat

Resolve a person/group name to a chatId (fuzzy, ranked). Use before any send/read when you only have a name

waha_get_chat_context

Primary reading tool. LLM-ready conversation rendering: names resolved, voice notes transcribed inline (Soniox), media summarized

waha_reply

Human-like answering: mark seen → typing indicator → proportional delay → send (anti-ban sequence in one call)

waha_watch_chat

Create a bounded event-driven watch so a new incoming message wakes Hermes once

waha_list_chat_watches

List active/closed watches without exposing secrets

waha_update_chat_watch

Update objective, sender scope, permissions, expiry or wake target

waha_close_chat_watch

Stop waking Hermes when the delegated work is finished

Tool

Description

waha_transcribe_message

Transcribe a specific voice message via Soniox (SONIOX_API_KEY required; Hebrew + 60 languages)

waha_get_media

Download incoming media — images returned inline so vision models can see them, larger files saved to a temp path

waha_get_message

Fetch a single message (quoted-message resolution, fresh media URLs)

Tool

Description

waha_list_sessions

List all sessions and their statuses

waha_get_session

Get detailed info about a session

waha_create_session

Create a new session

waha_start_session

Start a stopped session

waha_stop_session

Stop a running session

waha_restart_session

Restart a session

waha_delete_session

Delete a session permanently

waha_logout_session

Disconnect WhatsApp account from session

waha_screenshot

Visual debug — screenshot of the WhatsApp Web screen (returned as an image)

Tool

Description

waha_get_qr_code

Get QR code for WhatsApp authentication

waha_request_pairing_code

Request phone number pairing code

waha_check_auth_status

Check session authentication status

Tool

Description

waha_send_text

Send a text message (mentions, reply-to, link preview)

waha_send_image

Send an image (local file or URL)

waha_send_video

Send a video with auto-conversion

waha_send_voice

Send a voice message with auto-conversion

waha_send_file

Send any document/file

waha_send_location

Send a location pin

waha_send_contact

Send a contact vCard

waha_send_poll

Create and send a poll

waha_react_to_message

React with emoji 👍❤️😂

waha_forward_message

Forward a message to another chat

waha_get_messages

Get messages with pagination + timestamp/ack filters

waha_delete_message

Delete a message

waha_edit_message

Edit a sent message

waha_mark_as_read

Mark messages as read

waha_star_message

Star/unstar a message

waha_pin_message / waha_unpin_message

Pin a message for 24h/7d/30d

📤 Media Upload Features:

  • ✅ Local files & URLs supported

  • ✅ Auto MIME type detection

  • ✅ Auto video/voice conversion to WhatsApp format

  • ✅ 50+ file types supported

  • ✅ Base64 encoding handled automatically

Tool

Description

waha_list_chats

List all chats (sortable, paginated)

waha_get_chat

Get chat info (via overview lookup)

waha_archive_chat

Archive/unarchive a chat

waha_mark_unread

Mark a chat unread for human follow-up

waha_delete_chat

Delete a chat

waha_clear_chat

Clear all messages in a chat

Note: WAHA has no chat-level pin/mute endpoints, so no pin/mute chat tools are exposed (message pinning is available via waha_pin_message).

Tool

Description

waha_get_contacts

Get contacts (paginated, sortable)

waha_get_contact

Get info about a contact

waha_get_contact_about

Get a contact's "about" status text

waha_check_number_exists

Check if number is on WhatsApp (verify before first-time sends!)

waha_update_contact

Save/edit a contact's name

waha_block_contact

Block/unblock a contact

waha_get_profile_picture

Get profile picture URL

Tool

Description

waha_create_group

Create a new group

waha_list_groups

List all groups (lean payload by default)

waha_get_group

Get detailed group info

waha_get_group_participants

List group participants

waha_add_group_participants

Add participants

waha_remove_group_participants

Remove participants

waha_promote_group_participant

Promote to admin

waha_demote_group_participant

Demote from admin

waha_update_group_subject

Update group name

waha_update_group_description

Update group description

waha_update_group_picture

Set group picture (local file or URL)

waha_join_group

Join a group via invite link/code

waha_preview_group_invite

Preview a group before joining

waha_group_security_settings

Admin-only messages/info settings

waha_leave_group

Leave a group

waha_get_group_invite_code

Get invite link

waha_revoke_group_invite

Revoke & regenerate link

Tool

Description

waha_set_presence

Set online/offline status

waha_get_presence

Get contact's presence (last seen)

waha_subscribe_presence

Subscribe to a contact's presence updates

waha_start_typing

Show typing indicator

waha_stop_typing

Stop typing indicator

waha_mark_as_read

Send read receipts (see Messaging)

Tool

Description

waha_send_text_status

Post a text status (background color, font)

waha_send_image_status

Post an image status (local file or URL)

waha_send_voice_status

Post a voice status (auto-converted to Opus)

waha_delete_status

Delete a posted status

Tool

Description

waha_get_labels

Get all labels

waha_create_label

Create a new label

waha_update_label

Rename/recolor a label

waha_delete_label

Delete a label

waha_get_chat_labels

Get labels of a chat

waha_set_chat_labels

Replace a chat's label set

waha_get_chats_by_label

Find all chats with a label (triage loop)

Tool

Description

waha_ask_user

Send a question via WhatsApp, return immediately with tracking info (non-blocking)

waha_check_replies

Check for replies since the question was sent — single quick poll, the agent manages its own waiting loop

Use Case Example:

// Claude Code is building a feature and needs clarification
const q = await waha_ask_user({
  question: "Should I use REST or GraphQL for the API?",
  chatId: "1234567890@c.us"
});
// ...continue other work, then periodically:
const replies = await waha_check_replies({
  chatId: "1234567890@c.us",
  sinceTimestamp: q.sinceTimestamp,
  questionMessageId: q.questionMessageId
});
// User replied from phone: "Use GraphQL" → continue with GraphQL

Why non-blocking? The old blocking design waited up to 60 minutes inside one tool call — every MCP client times out long before that. The new pair lets the agent keep working and poll on its own schedule. Quoted replies to the question are detected reliably (including in groups via the fromUser filter).


🔒 Security Note: Local File Access

Send tools that accept a local file path (waha_send_image, waha_send_file, waha_send_voice, status tools, etc.) can read any file the server process can access. Since chat content (including voice transcripts) from other people reaches the agent, a prompt-injected instruction could try to exfiltrate local files (e.g. SSH keys) by "sending" them.

To restrict reads to a single directory, set the WAHA_MCP_FILES_DIR environment variable (e.g. to /tmp/waha-mcp, where waha_get_media saves downloads). Paths outside it are then rejected. When unset, any local path is allowed.


📚 Chat ID Formats

Understanding WhatsApp ID formats:

Type

Format

Example

User

{phone}@c.us

1234567890@c.us

Group

{id}@g.us

1234567890-1234567890@g.us

Channel

{id}@newsletter

1234567890@newsletter

Status

status@broadcast

status@broadcast

Note: Phone numbers should exclude the + prefix.


🎯 Quick Examples

Send a Text Message

mcporter call 'waha-mcp.waha_send_text(
  chatId: "1234567890@c.us",
  text: "Hello from WAHA MCP!"
)'

Send an Image from URL

mcporter call 'waha-mcp.waha_send_image(
  chatId: "1234567890@c.us",
  imageUrl: "https://example.com/photo.jpg",
  caption: "Check this out!"
)'

Create a Group & Add Participants

# Create group
mcporter call 'waha-mcp.waha_create_group(
  name: "Team Chat",
  participants: ["1111111111@c.us", "2222222222@c.us"]
)'

# Add more participants
mcporter call 'waha-mcp.waha_add_group_participants(
  chatId: "{group_id}@g.us",
  participants: ["3333333333@c.us"]
)'

List All Chats

mcporter call 'waha-mcp.waha_list_chats()'

✈️ Telegram Server

The repo ships a second, independent MCP server that operates your personal Telegram account directly over MTProto (via gramjs) — no bot, no Telegram Bot API limits. It reuses the same core layer as the WhatsApp server (tool wrapper, compact formatting, Soniox voice transcription).

Setup

# 1. Get api_id + api_hash at https://my.telegram.org → "API development tools"
# 2. One-time interactive sign-in (phone → code → optional 2FA password).
#    Writes TELEGRAM_API_ID / TELEGRAM_API_HASH / TELEGRAM_SESSION into .env:
npm run telegram:login

⚠️ TELEGRAM_SESSION grants full access to the account — treat it like a password and only pass it via environment configuration.

MCP client config

{
  "mcpServers": {
    "telegram": {
      "command": "node",
      "args": ["/absolute/path/to/waha-mcp/dist/telegram/index.js"],
      "env": {
        "TELEGRAM_API_ID": "123456",
        "TELEGRAM_API_HASH": "...",
        "TELEGRAM_SESSION": "...",
        "SONIOX_API_KEY": "..."
      }
    }
  }
}

Tools (15, prefixed tg_)

Tool

Purpose

tg_inbox

Digest of unread chats — start here

tg_list_chats / tg_find_chat / tg_list_contacts

Discover chats, resolve names to ids

tg_get_chat_context

Conversation rendered for reading; voice notes transcribed inline

tg_send_text / tg_send_file

Send messages/files, optional quote-reply

tg_react / tg_edit_message / tg_delete_message

Act on messages

tg_search_messages

Per-chat or account-wide text search

tg_get_media / tg_transcribe_message

Download media, transcribe voice

tg_mark_read / tg_me

Housekeeping

chat accepts what tg_list_chats returns: a numeric id (channels use the -100… form), @username, a +phone of a contact, or me (Saved Messages).


🧪 Development

Run in Watch Mode

npm run dev  # Recompiles on file changes

Run Tests

npm test

Build for Production

npm run build

📖 Documentation

For detailed documentation, see the docs folder:


🤝 Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request


📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


🙏 Acknowledgments


Built with ❤️ for the MCP community

⭐ Star this repo🐛 Report Bug💡 Request Feature

Available Tools

63 tools
ask_user_via_whatsappA

🤖 IMPORTANT FOR AI ASSISTANTS: Use this tool instead of stopping work when you need user input!

WHEN TO USE:

  • You need architectural decisions (REST vs GraphQL, etc.)

  • You need missing requirements or specifications

  • You need API keys, credentials, or configuration values

  • You encounter ANY question that would normally block your progress

  • You need user approval or preference for a decision

DO NOT:

  • Stop and wait for manual console input

  • Ask the user to provide information manually

  • Halt progress when this tool can unblock you

HOW IT WORKS:

  1. Send your question via WhatsApp

  2. This tool WAITS (blocking) for the user's reply

  3. Returns the reply text to you

  4. You continue working with the answer

EXAMPLE USAGE: const answer = await ask_user_via_whatsapp({ question: "Should I use REST or GraphQL for this API?", chatId: "1234567890@c.us", timeoutMinutes: 30 }); // Parse answer and continue working

USER EXPERIENCE: User gets WhatsApp notification → replies from phone → you continue instantly

This enables truly autonomous AI development!

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesThe question to ask the user
chatIdYesChat ID to send question to (e.g. "1234567890@c.us")
sessionNoSession namedefault
timeoutMinutesNoHow long to wait for reply (in minutes)
pollIntervalSecondsNoHow often to check for new messages (in seconds)

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by explaining key behavioral traits: it's a blocking operation that waits for user replies, has timeout and polling mechanisms, and enables autonomous continuation. It doesn't cover error handling or rate limits, but provides substantial operational context beyond basic functionality.

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?

The description is well-structured with clear sections (WHEN TO USE, DO NOT, HOW IT WORKS, EXAMPLE USAGE, USER EXPERIENCE) and uses bold formatting effectively. While slightly verbose at 14 sentences, every section adds value and the information is front-loaded with the most critical guidance first.

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 tool with 5 parameters, no annotations, and no output schema, the description provides substantial context about behavior, usage scenarios, and workflow. It explains the blocking nature and user experience well. The main gap is lack of output format details, but overall it's quite complete for enabling effective tool use.

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 100%, so the schema already documents all 5 parameters thoroughly. The description's example usage shows parameter application but doesn't add significant meaning beyond what the schema provides. Baseline 3 is appropriate when schema does the heavy lifting.

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 explicitly states the tool's purpose: to send questions to users via WhatsApp and wait for replies, enabling AI assistants to continue working autonomously. It clearly distinguishes this from sibling tools (all WhatsApp-related operations) by focusing on user interaction for unblocking progress, not messaging functions like waha_send_text.

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?

The description provides explicit guidance with 'WHEN TO USE' and 'DO NOT' sections, listing specific scenarios (architectural decisions, missing requirements, API keys, etc.) and alternatives to avoid (stopping work, manual input). It clearly defines when this tool should be used versus other approaches.

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

waha_add_group_participantsC

Add participants to a group

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesGroup ID
participantsYesParticipant IDs to add (e.g. ["1234567890@c.us"])
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Add participants to a group' which implies a mutation operation, but lacks details on permissions required, error handling (e.g., if participants are invalid), side effects (e.g., notifications sent), or response format. This is inadequate for a mutation tool with zero annotation coverage.

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 a single, direct sentence with zero wasted words. It front-loads the core action and target efficiently, making it easy to parse quickly without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't cover behavioral aspects like success/error responses, prerequisites, or integration with sibling tools. Given the complexity of group management in WhatsApp, more context is needed to ensure safe and effective use.

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?

The schema description coverage is 100%, with clear documentation for all three parameters (groupId, participants, session). The description adds no additional semantic context beyond what the schema provides, such as explaining what a 'Group ID' represents or how participants are identified. This meets the baseline score when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add') and target ('participants to a group'), making the purpose immediately understandable. It distinguishes from siblings like 'waha_remove_group_participants' by specifying addition rather than removal, though it doesn't explicitly contrast with other group management tools like 'waha_promote_group_participant' or 'waha_create_group'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., needing an existing group), exclusions (e.g., not for creating groups), or comparisons to sibling tools like 'waha_create_group' for initial setup or 'waha_get_group_participants' for viewing members.

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

waha_add_label_to_chatC

Add a label to a chat

ParametersJSON Schema
NameRequiredDescriptionDefault
labelIdYesLabel ID
chatIdYesChat ID to label
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It states the action ('add a label') but doesn't explain what happens if the label or chat doesn't exist, whether this requires specific permissions, if it's idempotent, or what the response looks like. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding behavior.

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 a single, efficient sentence with zero waste. It's front-loaded and directly states the tool's purpose without unnecessary words, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like error conditions, side effects, or return values. For a tool that modifies data, more context is needed to use it effectively and safely.

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 100%, with clear parameter descriptions in the schema (e.g., 'Label ID', 'Chat ID to label', 'Session name'). The description doesn't add any meaning beyond what the schema provides, such as explaining where to get labelId or chatId values. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Add a label to a chat' clearly states the verb ('add') and resource ('label to a chat'), making the purpose immediately understandable. It distinguishes from siblings like 'waha_remove_label_from_chat' by specifying the opposite action, though it doesn't explicitly contrast with other labeling tools like 'waha_create_label' or 'waha_get_labels'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing label and chat), when not to use it, or how it relates to sibling tools like 'waha_remove_label_from_chat' or 'waha_get_labels'. The agent must infer usage from the name alone.

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

waha_archive_chatC

Archive or unarchive a chat

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
archiveNotrue to archive, false to unarchive
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral context. It states the action but doesn't explain what archiving means in this system, whether it's reversible, permission requirements, or what happens to archived chats. This is inadequate for a mutation tool.

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 perfectly concise - a single sentence that communicates the core functionality without any wasted words. It's front-loaded and efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what archiving entails in this system, what the response looks like, or important behavioral aspects. The completeness is poor given the tool's complexity and lack of structured metadata.

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 100%, so the schema already documents all three parameters thoroughly. The description doesn't add any parameter information beyond what's in the schema, meeting the baseline expectation when schema coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Archive or unarchive') and resource ('a chat'), making the purpose immediately understandable. It doesn't distinguish from siblings like 'waha_delete_chat' or 'waha_mute_chat', which would require more specific scope information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. There's no mention of prerequisites, consequences, or how this differs from similar sibling tools like 'waha_delete_chat' or 'waha_mute_chat'.

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

waha_block_contactC

Block or unblock a contact

ParametersJSON Schema
NameRequiredDescriptionDefault
contactIdYesContact ID (e.g. "1234567890@c.us")
blockNotrue to block, false to unblock
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action (block/unblock) but lacks critical details: whether this requires specific permissions, if it's reversible (beyond the block parameter), rate limits, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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 a single, efficient sentence ('Block or unblock a contact') that front-loads the core purpose with zero waste. Every word earns its place, making it appropriately sized for a tool with clear parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects (permissions, reversibility), error handling, or return values. For a tool that modifies contact access, more context is needed to ensure safe and correct usage.

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 100%, so parameters are fully documented in the schema. The description adds no additional meaning beyond what the schema provides (e.g., it doesn't explain contactId format beyond '@c.us', session implications, or default behavior). Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Block or unblock a contact', which specifies the action (block/unblock) and target resource (contact). It distinguishes from siblings like waha_get_contact (read-only) or waha_delete_chat (different resource), though it doesn't explicitly differentiate from other contact-modification tools, which are absent from the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active session), consequences (e.g., blocked contacts can't send messages), or related tools (e.g., waha_get_contact to verify contactId). Usage is implied only by the tool name and parameters.

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

waha_check_auth_statusB

Check the authentication status of a WhatsApp session

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNoSession namedefault

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the tool checks authentication status but doesn't disclose behavioral traits like what 'status' entails (e.g., active, logged out, error), whether it's a read-only operation, potential rate limits, or error conditions. This is a significant gap for a tool with no annotation coverage.

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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with zero waste, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (1 parameter, 100% schema coverage, no output schema), the description is minimally adequate but incomplete. It lacks details on behavioral aspects (e.g., what authentication status means) and usage context, which are needed for full understanding despite the simple schema.

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 100%, with the single parameter 'session' documented as 'Session name' with a default value. The description adds no meaning beyond this, as it doesn't explain parameter usage or semantics. With high schema coverage, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Check the authentication status of a WhatsApp session,' specifying the verb 'check' and resource 'authentication status.' It distinguishes from siblings like 'waha_get_session' (which retrieves session details) or 'waha_start_session' (which initiates a session), but doesn't explicitly differentiate them in the text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., after starting a session), exclusions, or related tools like 'waha_get_session' for general session info or 'waha_list_sessions' for listing sessions, leaving usage context unclear.

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

waha_check_number_existsB

Check if a phone number is registered on WhatsApp

ParametersJSON Schema
NameRequiredDescriptionDefault
phoneYesPhone number to check (e.g. "1234567890" without + or country prefix variation)
sessionNoSession namedefault

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool checks registration status but does not describe what the check entails (e.g., API calls, rate limits, authentication needs, or response format). For a tool with no annotations, this is a significant gap in transparency about its operation and constraints.

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 a single, clear sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and efficient, making it easy for an agent to parse quickly. Every word earns its place, achieving optimal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (simple check operation), 100% schema coverage, and no output schema, the description is minimally adequate. However, it lacks details on behavioral aspects (e.g., what the check returns or error conditions), which would be helpful for an agent to use it correctly. It meets basic needs but has clear gaps in completeness.

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 100%, so the input schema fully documents both parameters ('phone' and 'session'). The description does not add any additional meaning beyond what the schema provides, such as explaining phone number formats or session context. With high schema coverage, the baseline score of 3 is appropriate, as the description does not compensate but also does not detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Check if a phone number is registered on WhatsApp.' It specifies the verb ('check') and resource ('phone number'), making the function unambiguous. However, it does not explicitly differentiate from sibling tools like 'waha_get_contact' or 'ask_user_via_whatsapp', which might involve similar phone number interactions, so it misses the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. For example, it does not clarify if this is for validation before sending messages, how it differs from 'waha_get_contact' (which might retrieve contact details), or any prerequisites like session setup. This lack of context leaves the agent without usage direction.

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

waha_clear_chatC

Clear all messages in a chat

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. 'Clear all messages' implies a destructive mutation, but it doesn't disclose whether this is reversible, requires specific permissions, affects chat metadata, or has side effects (e.g., notifications). For a destructive tool with zero annotation coverage, this is a significant gap in behavioral context.

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 a single, direct sentence with zero waste: 'Clear all messages in a chat'. It's front-loaded with the core action and resource, making it highly efficient and easy to parse. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a destructive mutation tool with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral traits (e.g., irreversibility, permissions), output format, or error conditions. For a tool that permanently modifies data, more context is needed to ensure safe and correct usage.

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 100%, with both parameters ('chatId', 'session') clearly documented in the schema. The description adds no parameter-specific information beyond implying 'chatId' is needed. Since the schema does the heavy lifting, the baseline 3 is appropriate—no extra value is added, but no harm is done.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Clear all messages in a chat' clearly states the verb ('clear') and resource ('all messages in a chat'), making the purpose unambiguous. It distinguishes from siblings like 'waha_delete_message' (single message) and 'waha_delete_chat' (entire chat). However, it doesn't explicitly mention the platform (WhatsApp) or differentiate from similar tools like 'waha_archive_chat', so it's not a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., chat must exist), when not to use it (e.g., for partial clearing), or compare it to siblings like 'waha_delete_chat' or 'waha_archive_chat'. The agent must infer usage from the name and context alone.

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

waha_create_groupC

Create a new WhatsApp group

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesGroup name/subject
participantsYesParticipant IDs to add (e.g. ["1234567890@c.us"])
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a creation tool, implying a write operation, but doesn't cover critical aspects like required permissions, whether it returns a group ID, error conditions (e.g., invalid participants), or side effects (e.g., notifications to participants). For a mutation tool with zero annotation coverage, this is a significant gap.

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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse. There's no redundancy or fluff, earning a perfect score for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a group creation tool (a mutation with multiple parameters), the lack of annotations and output schema means the description should do more. It doesn't explain what happens upon success (e.g., returns a group ID), error handling, or dependencies (e.g., session must be active). For a tool with no structured output or safety hints, this is incomplete.

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?

The schema description coverage is 100%, with clear descriptions for all parameters (name, participants, session). The description adds no additional parameter semantics beyond what's in the schema, such as format examples for 'participants' or default behavior for 'session'. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Create a new WhatsApp group' clearly states the action (create) and resource (WhatsApp group), making the purpose immediately understandable. It distinguishes from siblings like 'waha_update_group_subject' or 'waha_leave_group' by focusing on creation. However, it doesn't specify what distinguishes it from similar creation tools (e.g., 'waha_create_session'), so it's not a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active session), compare it to related tools (e.g., 'waha_add_group_participants' for modifying existing groups), or specify when not to use it (e.g., for updating groups). This lack of context leaves the agent to infer usage from the name alone.

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

waha_create_labelC

Create a new label

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLabel name
colorNoLabel color index
sessionNoSession namedefault

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states the action without disclosing behavioral traits. It doesn't mention permissions needed, whether labels are global or session-specific, rate limits, or what happens on duplicate names. For a mutation tool, this is inadequate.

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 a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple tool, though it could benefit from more detail given the lack of annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a mutation tool with 3 parameters, the description is incomplete. It doesn't cover behavioral aspects, usage context, or return values, leaving significant gaps for an AI agent to operate effectively.

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 100%, so parameters are documented in the schema. The description adds no meaning beyond the schema—it doesn't explain label naming constraints, color index ranges, or session context. Baseline 3 is appropriate as the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Create a new label' clearly states the action (create) and resource (label), but it's vague about what kind of label (e.g., chat label, contact label) and doesn't differentiate from sibling tools like 'waha_add_label_to_chat' or 'waha_remove_label_from_chat'. It's functional but lacks specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'waha_add_label_to_chat' or 'waha_get_labels'. The description doesn't mention prerequisites (e.g., session must be active) or context for label creation, leaving usage unclear.

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

waha_create_sessionC

Create a new WhatsApp session

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSession namedefault
webhookUrlNoWebhook URL for events
webhookEventsNoEvents to subscribe to (e.g. ["message", "session.status"])
enableStoreNoEnable NOWEB store for chats/contacts/messages history
fullSyncNoFull sync (1 year history) vs partial (3 months)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Create a new WhatsApp session' implies a write operation that likely requires specific permissions or setup, but it doesn't disclose what 'create' entails—whether it initializes a session with QR scanning, sets up webhooks, or has side effects like data syncing. It also omits details on error conditions, rate limits, or what happens if a session already exists. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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 a single, efficient sentence—'Create a new WhatsApp session'—that is front-loaded with the core action. There is no wasted verbiage or redundancy, making it highly concise and easy to parse. Every word earns its place by directly conveying the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of creating a WhatsApp session (a mutation with 5 parameters, no annotations, and no output schema), the description is incomplete. It lacks crucial context: what the tool returns (e.g., session ID, status), behavioral traits (e.g., whether it's idempotent, requires QR scanning), and error handling. Without annotations or an output schema, the description should provide more guidance on outcomes and usage, but it does not.

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?

The input schema has 100% description coverage, with each parameter well-documented (e.g., 'Session name', 'Webhook URL for events'). The description adds no additional parameter semantics beyond what the schema provides, such as explaining how parameters interact (e.g., if 'enableStore' affects 'fullSync'). Since the schema does the heavy lifting, the baseline score of 3 is appropriate, but the description doesn't compensate with extra context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Create a new WhatsApp session' clearly states the verb ('Create') and resource ('WhatsApp session'), making the purpose immediately understandable. It distinguishes from siblings like 'waha_start_session' (which likely activates an existing session) and 'waha_get_session' (which retrieves session info), though it doesn't explicitly mention these distinctions. The description avoids tautology by not just restating the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication status), when to choose this over 'waha_start_session' (which might resume an existing session), or any dependencies. The agent must infer usage from the tool name alone, which is insufficient for informed selection.

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

waha_delete_chatC

Delete a chat entirely

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool deletes a chat entirely, implying a destructive and irreversible action, but doesn't specify permissions required, whether it's reversible, or any side effects (e.g., impact on messages or participants). This is inadequate for a mutation tool with zero annotation coverage.

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 a single, direct sentence with no wasted words, making it highly concise and front-loaded. Every word contributes to stating the tool's purpose efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a destructive mutation tool with no annotations and no output schema, the description is incomplete. It lacks critical context such as what 'delete entirely' entails (e.g., permanent removal vs. soft delete), error conditions, or return values, leaving significant gaps for an AI agent to operate safely and effectively.

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 100%, so the schema fully documents both parameters (chatId and session). The description adds no additional meaning beyond what the schema provides, such as explaining what a 'chatId' represents or how 'session' affects the operation. Baseline 3 is appropriate when the schema handles parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and target ('a chat entirely'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'waha_clear_chat' or 'waha_archive_chat', which might offer similar but distinct functionality for chat management.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'waha_clear_chat' or 'waha_archive_chat'. The description lacks context about prerequisites, consequences, or specific scenarios where deletion is appropriate, leaving the agent without usage direction.

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

waha_delete_labelC

Delete a label

ParametersJSON Schema
NameRequiredDescriptionDefault
labelIdYesLabel ID
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. 'Delete a label' implies a destructive operation but doesn't specify whether deletion is permanent, reversible, or requires specific permissions. No information about error conditions, side effects, or what happens to associated chats/labels is provided.

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 extremely concise at just three words, front-loading the essential information with zero waste. Every word earns its place in this minimal but complete statement of function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive operation with no annotations and no output schema, the description is inadequate. It doesn't explain what happens after deletion, whether the action is reversible, what permissions are required, or what the response looks like. The minimal description leaves critical behavioral questions unanswered.

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 100%, so the schema already documents both parameters (labelId and session). The description adds no additional parameter context beyond what's in the schema. Baseline score of 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Delete a label' clearly states the action (delete) and resource (label), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'waha_remove_label_from_chat' which also involves label removal, so it doesn't achieve full distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, consequences, or when to choose this over similar tools like 'waha_remove_label_from_chat' or 'waha_create_label' for label management workflows.

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

waha_delete_messageC

Delete a message from a WhatsApp chat

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
messageIdYesMessage ID to delete
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Delete' implies a destructive mutation, the description doesn't specify whether this action is reversible, requires specific permissions, has side effects (e.g., notifying participants), or follows WhatsApp's deletion policies. This leaves significant gaps for an agent to understand the tool's behavior.

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 a single, direct sentence with zero wasted words. It's front-loaded with the core action and resource, making it highly efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a destructive operation in a messaging platform with no annotations and no output schema, the description is insufficient. It lacks crucial context about permissions, reversibility, side effects, and expected outcomes, which are essential for safe and effective tool invocation.

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 100%, so the schema already documents all three parameters (chatId, messageId, session) with clear descriptions. The description doesn't add any additional meaning beyond what the schema provides, such as explaining parameter relationships or constraints, which aligns with the baseline score when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and resource ('a message from a WhatsApp chat'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'waha_clear_chat' or 'waha_delete_chat', which also involve deletion operations in WhatsApp.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active session), exclusions, or comparisons to similar tools like 'waha_clear_chat' (which clears entire chats) or 'waha_delete_chat' (which deletes entire chats).

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

waha_delete_sessionC

Delete a WhatsApp session permanently

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden. It discloses the permanent nature of deletion ('permanently'), which is crucial behavioral context. However, it lacks other important details: required permissions, whether deletion is reversible, what happens to associated data, or error conditions. For a destructive operation, this is insufficient.

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 a single, efficient sentence that states the core purpose without unnecessary words. It's front-loaded with the key action and qualifies it appropriately. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive operation with no annotations and no output schema, the description is incomplete. It doesn't explain what 'permanently' entails operationally, what confirmation (if any) is required, what the tool returns, or error handling. Given the complexity and risk of session deletion, more context is needed.

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 100% with one parameter fully documented in the schema. The description adds no parameter-specific information beyond what's in the schema. According to guidelines, when schema coverage is high (>80%), the baseline is 3 even without parameter details in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and target ('WhatsApp session') with the qualifier 'permanently' adding specificity. It distinguishes from sibling tools like waha_logout_session or waha_stop_session by emphasizing permanent deletion rather than temporary deactivation. However, it doesn't explicitly contrast with all siblings like waha_delete_chat or waha_delete_label.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., session must exist), consequences of deletion, or when to choose this over similar tools like waha_logout_session. The agent must infer usage from the name alone.

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

waha_demote_group_participantC

Demote admin(s) to regular participant in a group

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesGroup ID
participantsYesParticipant IDs to demote
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action but doesn't cover critical aspects like required permissions, whether the operation is reversible, error conditions, or rate limits. This leaves significant gaps for a mutation tool.

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 a single, efficient sentence with zero waste. It's front-loaded with the core action and target, making it easy to parse quickly without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits, error handling, and what the tool returns, leaving the agent with insufficient context to use it effectively beyond basic parameter passing.

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 100%, so parameters are well-documented in the schema. The description doesn't add meaning beyond implying 'groupId' and 'participants' are needed, which the schema already covers. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('demote') and target ('admin(s) to regular participant in a group'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from its sibling 'waha_promote_group_participant' or other group management tools, which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'waha_remove_group_participants' or 'waha_promote_group_participant'. It lacks context about prerequisites (e.g., needing admin rights) or exclusions, offering minimal usage direction.

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

waha_edit_messageC

Edit a previously sent message

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
messageIdYesMessage ID to edit
textYesNew message text
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It doesn't disclose permissions needed, whether edits are reversible, rate limits, or how edits appear to recipients. 'Edit' implies mutation, but without details on consequences or constraints, transparency is inadequate for a tool that modifies existing content.

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 a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately understandable without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits, error conditions, or return values, leaving significant gaps in understanding how the tool operates and what results to expect.

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 100%, so parameters are fully documented in the schema. The description adds no additional meaning about parameters beyond implying 'text' is the new content. This meets the baseline of 3 since the schema handles the heavy lifting, but no extra context is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Edit') and target resource ('a previously sent message'), which is specific and unambiguous. It doesn't differentiate from sibling tools like 'waha_delete_message' or 'waha_react_to_message', but the purpose is well-defined for a message modification operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'waha_delete_message' or 'waha_send_text' for corrections. The description only states what it does, not when it's appropriate, leaving the agent to infer usage context from the tool name alone.

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

waha_forward_messageC

Forward a message to another chat

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesSource chat ID where the message is
messageIdYesMessage ID to forward
toChatIdYesDestination chat ID
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('forward') but doesn't clarify whether this is a read-only or destructive operation, what permissions are required, if there are rate limits, or what happens on success/failure. This leaves significant gaps for an agent to understand the tool's behavior.

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 a single, clear sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately understandable without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool (forwarding implies modifying chat state) with no annotations and no output schema, the description is incomplete. It doesn't address behavioral aspects like side effects, error conditions, or return values, which are critical for an agent to use this tool effectively in a WhatsApp automation context.

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 100%, so the schema already fully documents all four parameters (chatId, messageId, toChatId, session). The description adds no additional meaning beyond what's in the schema, such as explaining relationships between parameters or usage nuances. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('forward') and resource ('a message to another chat'), making the purpose immediately understandable. It doesn't specifically differentiate from sibling tools like 'waha_send_text' or 'waha_edit_message', but the verb 'forward' is distinct enough for basic identification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'waha_send_text' for new messages or 'waha_edit_message' for modifying existing ones. It lacks any context about prerequisites, such as needing an existing message to forward, or exclusions for when forwarding might not be appropriate.

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

waha_get_chatC

Get detailed info about a specific chat

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'gets detailed info' but doesn't specify what that info includes, whether it's a read-only operation, potential errors, or any side effects. For a tool with no annotation coverage, this leaves significant behavioral gaps.

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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with zero waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'detailed info' includes, the format of the response, or any behavioral aspects like error handling. For a tool with rich sibling context and no structured support, more descriptive context is needed.

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?

The schema description coverage is 100%, so the schema already fully documents the 'chatId' and 'session' parameters. The description doesn't add any meaning beyond what the schema provides, such as explaining what constitutes a valid chat ID or when to use non-default sessions. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'detailed info about a specific chat', making the purpose understandable. It doesn't explicitly distinguish from siblings like 'waha_get_contacts' or 'waha_list_chats', but the specificity of 'specific chat' implies individual retrieval rather than listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'waha_get_contacts' or 'waha_list_chats'. The description only states what it does, not when it's appropriate or what distinguishes it from similar tools in the sibling list.

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

waha_get_contactC

Get info about a specific contact

ParametersJSON Schema
NameRequiredDescriptionDefault
contactIdYesContact ID (e.g. "1234567890@c.us")
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It implies a read-only operation ('Get info'), but doesn't disclose authentication requirements, rate limits, error conditions, or what 'info' includes (e.g., name, phone number, presence). The agent must infer behavior from the tool name and schema alone.

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 a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose ('Get info about a specific contact'), making it easy to parse quickly. No structural issues or redundancy are present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete for a tool that retrieves contact information. It doesn't explain what 'info' includes, potential response formats, or error handling. For a read operation in a WhatsApp API context, more detail on data returned and usage constraints would be helpful.

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 100%, with both parameters clearly documented in the schema. The description adds no additional meaning beyond the schema's details for 'contactId' and 'session'. Baseline score of 3 is appropriate since the schema adequately covers parameter semantics without description enhancement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get info') and target ('about a specific contact'), which is a specific verb+resource combination. It distinguishes from sibling 'waha_get_contacts' (plural) by specifying 'specific contact', but doesn't explicitly contrast with other contact-related tools like 'waha_block_contact' or 'waha_get_profile_picture'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., needing a valid contact ID), contrast with 'waha_get_contacts' for listing multiple contacts, or specify use cases like retrieving contact details for messaging or verification.

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

waha_get_contactsC

Get all contacts from a WhatsApp session

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description lacks behavioral details. It doesn't disclose if this is a read-only operation, potential rate limits, authentication needs, or what 'all contacts' entails (e.g., pagination, format). The description is minimal and doesn't compensate for the absence of 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 a single, clear sentence with no wasted words. It's front-loaded with the core purpose, making it efficient and easy to parse, though it could benefit from more detail given the lack of annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations, no output schema, and minimal description, this is incomplete. It doesn't explain return values (e.g., contact list format), error conditions, or behavioral constraints, leaving gaps for an AI agent to use it effectively in context with many sibling tools.

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 100%, with the single parameter 'session' documented as 'Session name'. The description adds no additional meaning beyond this, such as explaining session context or default behavior. Baseline 3 is appropriate given the schema handles parameter documentation adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('all contacts from a WhatsApp session'), making the purpose evident. It distinguishes from sibling 'waha_get_contact' (singular) by implying a bulk retrieval, but doesn't explicitly contrast with other contact-related tools like 'waha_block_contact'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., session must be active), differentiate from 'waha_get_contact' for single contacts, or specify use cases like contact management or bulk operations.

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

waha_get_groupC

Get detailed info about a specific group

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesGroup ID (e.g. "1234567890@g.us")
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'Get detailed info,' implying a read-only operation, but doesn't clarify what 'detailed info' includes, potential rate limits, authentication needs, or error conditions, leaving significant gaps for a tool with no annotation support.

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 a single, clear sentence with no wasted words. It's front-loaded with the core purpose ('Get detailed info about a specific group'), making it highly efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'detailed info' returns, such as group metadata, participants, or settings, which is critical for a read tool. This leaves the agent guessing about the tool's behavior and output.

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?

The schema description coverage is 100%, with both parameters ('groupId' and 'session') well-documented in the schema. The description adds no additional meaning beyond implying a 'specific group' for 'groupId,' which is already covered. Baseline 3 is appropriate as the schema handles parameter documentation effectively.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get detailed info') and target resource ('about a specific group'), which is a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'waha_get_chat' or 'waha_get_group_participants' that also retrieve group-related information, missing explicit distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't specify if this should be used instead of 'waha_get_group_participants' for general group details or 'waha_get_chat' for chat-specific info, leaving the agent without context for selection.

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

waha_get_group_invite_codeB

Get the invite link/code for a group

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesGroup ID
sessionNoSession namedefault

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action but doesn't mention whether this requires specific permissions, if it's a read-only operation, what format the invite code/link returns in, or any rate limits. For a tool that likely involves group management, this leaves significant behavioral gaps.

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 a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a simple retrieval operation and front-loads the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple retrieval tool with good schema coverage but no annotations or output schema, the description is minimally adequate. It states what the tool does but lacks behavioral context and usage guidance that would help an agent understand when and how to use it effectively compared to sibling tools.

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 100%, with both parameters clearly documented in the schema. The description adds no additional parameter semantics beyond what's already in the structured fields, so it meets the baseline of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('invite link/code for a group'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'waha_revoke_group_invite' or 'waha_get_group', which could cause confusion about when to use this specific tool versus others that might also retrieve group information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. Given sibling tools like 'waha_get_group' (which might retrieve general group info) and 'waha_revoke_group_invite' (which handles invite management), the agent receives no explicit or implied context about when this specific invite-fetching operation is appropriate.

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

waha_get_group_participantsB

List all participants in a group

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesGroup ID
sessionNoSession namedefault

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'List' implies a read-only operation, it doesn't specify whether this requires authentication, returns paginated results, includes participant roles/status, or has rate limits. For a WhatsApp group participants query with zero annotation coverage, this leaves significant behavioral questions unanswered.

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 a single, efficient sentence with zero wasted words. It's front-loaded with the core functionality and appropriately sized for a straightforward list operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with good schema coverage but no annotations or output schema, the description is minimally adequate. It states what the tool does but lacks context about authentication requirements, return format, error conditions, or relationship to sibling tools. The agent would need to infer much from the tool name and schema alone.

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 100%, so the schema already documents both parameters (groupId and session). The description doesn't add any parameter-specific context beyond what's in the schema - it doesn't explain what constitutes a valid group ID, how to obtain one, or when to use non-default sessions. Baseline 3 is appropriate when the schema does the documentation work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List all participants') and resource ('in a group'), making the purpose immediately understandable. It doesn't specifically differentiate from sibling tools like 'waha_get_group' or 'waha_get_contact', but the verb+resource combination is unambiguous within the WhatsApp automation context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There are related tools like 'waha_get_group' (which might return group metadata) and 'waha_get_contacts' (which might list all contacts), but the description doesn't help the agent choose between them or specify prerequisites.

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

waha_get_labelsC

Get all labels/categories in a WhatsApp session

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action is to 'get' (implying read-only), but doesn't specify if this requires authentication, returns all labels at once or paginated, or what the output format might be. This leaves significant gaps for a tool with potential complexity.

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 a single, direct sentence that efficiently conveys the core purpose without any wasted words. It's front-loaded with the essential information, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the return value looks like (e.g., list of label objects, simple strings), potential errors, or authentication requirements, leaving the agent with incomplete context for reliable use.

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?

The schema description coverage is 100%, with the single parameter 'session' clearly documented in the schema. The description doesn't add any additional meaning beyond what's in the schema (e.g., it doesn't explain what a 'session' represents or default behavior), so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get all') and resource ('labels/categories in a WhatsApp session'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'waha_create_label' or 'waha_delete_label', which would require a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention if this should be used before adding labels to chats or as a reference for existing categories, leaving the agent to infer usage from context alone.

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

waha_get_messagesC

Get messages from a WhatsApp chat with optional filters

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
sessionNoSession namedefault
limitNoNumber of messages to retrieve
offsetNoOffset for pagination
downloadMediaNoInclude media download URLs
fromMeNoFilter: only messages sent by me (true) or received (false)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Get messages' implies a read operation, it doesn't specify important behavioral aspects like whether this requires authentication, rate limits, pagination behavior beyond offset/limit parameters, error conditions, or what format the returned messages have. The mention of 'optional filters' is vague and doesn't explain filter behavior.

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 a single, efficient sentence that states the core functionality without unnecessary words. It's appropriately sized for a tool with good schema documentation and gets straight to the point with 'Get messages from a WhatsApp chat with optional filters'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what the tool returns (message format, structure), doesn't mention authentication requirements despite operating on WhatsApp data, and provides minimal behavioral context. The schema does heavy lifting, but the description should compensate more for the lack of annotations and output schema.

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 100%, so the schema already documents all 6 parameters thoroughly. The description adds minimal value beyond what's in the schema - mentioning 'optional filters' vaguely references parameters like fromMe and downloadMedia but doesn't provide additional context about how they work together or their practical implications.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'messages from a WhatsApp chat', making the purpose understandable. It also mentions 'optional filters' which hints at capabilities. However, it doesn't explicitly differentiate from sibling tools like 'waha_get_chat' or 'waha_get_contacts', which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools available (like waha_get_chat, waha_get_contacts, waha_list_chats), there's no indication of when this specific message retrieval tool is appropriate versus other data-fetching tools in the WhatsApp ecosystem.

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

waha_get_presenceB

Get presence status of a contact (online/offline/typing)

ParametersJSON Schema
NameRequiredDescriptionDefault
contactIdYesContact ID (e.g. "1234567890@c.us")
sessionNoSession namedefault

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does (get presence status) but doesn't describe key behavioral traits such as whether this is a read-only operation, if it requires specific permissions, potential rate limits, or how it handles errors (e.g., invalid contact IDs). For a tool with no annotations, this leaves significant gaps in understanding its behavior.

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 extremely concise and front-loaded, consisting of a single sentence that directly states the tool's purpose. There is no wasted language or unnecessary elaboration, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (simple read operation with 2 parameters) and high schema coverage (100%), the description is minimally adequate. However, with no annotations and no output schema, it lacks details on behavioral aspects (e.g., safety, permissions) and return values (e.g., format of presence status). This leaves room for improvement in providing a more complete context for the agent.

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?

The description adds no parameter semantics beyond what the input schema provides. The schema has 100% description coverage, clearly documenting both parameters (contactId and session). Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't compensate with additional context like examples or usage notes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('presence status of a contact'), and it specifies the possible status values (online/offline/typing). However, it doesn't explicitly differentiate from sibling tools like 'waha_get_contact' or 'waha_get_chat', which might also retrieve contact-related information but for different attributes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't mention if this is the only way to check presence status or if other tools like 'waha_get_contact' might include presence information. There are no explicit when/when-not statements or references to sibling tools for context.

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

waha_get_profile_pictureB

Get the profile picture URL of a contact or group

ParametersJSON Schema
NameRequiredDescriptionDefault
contactIdYesContact or group ID
sessionNoSession namedefault

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Get' implies a read operation, the description doesn't specify whether this requires specific permissions, whether it works for all contacts/groups, what happens with invalid IDs, or what the response format looks like. For a tool with zero annotation coverage, this leaves significant behavioral questions unanswered.

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 a single, efficient sentence that immediately communicates the core functionality. There's zero wasted language or unnecessary elaboration. It's appropriately sized for a simple retrieval tool and front-loads the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read operation with 100% schema coverage, the description is minimally adequate. However, without annotations or an output schema, it should ideally provide more behavioral context (like response format, error conditions, or authentication requirements). The description covers the basic 'what' but leaves the 'how' and 'what-ifs' to inference.

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 100%, with both parameters clearly documented in the schema. The description doesn't add any parameter-specific information beyond what's already in the schema descriptions. The baseline score of 3 is appropriate when the schema does the heavy lifting, though the description could have provided context about valid contact/group ID formats or session requirements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('profile picture URL of a contact or group'), making the purpose immediately understandable. It distinguishes this tool from siblings like 'waha_get_contact' or 'waha_get_group' by focusing specifically on profile pictures. However, it doesn't explicitly differentiate from potential similar tools like 'waha_update_group_picture' beyond the verb difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like needing an authenticated session), doesn't specify when this is appropriate versus other contact/group information tools, and doesn't indicate any limitations or constraints. The agent must infer usage from the tool name and parameters alone.

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

waha_get_qr_codeB

Get QR code for WhatsApp authentication. Returns the raw QR string value that can be used to generate a scannable QR code.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNoSession namedefault

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the tool returns a 'raw QR string value' for generating a scannable QR code, which adds some behavioral context. However, it lacks details on permissions, rate limits, whether this initiates authentication or just retrieves an existing code, or error handling—critical for an authentication-related tool with no structured safety hints.

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 concise sentences with zero waste: the first states the purpose, and the second clarifies the return value. It's front-loaded with the core function and efficiently structured, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (authentication-related with one parameter) and no annotations or output schema, the description is partially complete. It covers the basic purpose and return format but lacks usage context, behavioral details, and integration with siblings. It's adequate for a simple retrieval tool but insufficient for full agent guidance without additional context.

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 100% (the single parameter 'session' is documented in the schema), so the baseline is 3. The description adds no parameter-specific information beyond what the schema provides (e.g., it doesn't explain how the session parameter affects QR code generation). This meets the minimum viable standard without extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get QR code for WhatsApp authentication' specifies the verb ('Get') and resource ('QR code'), with context about WhatsApp authentication. It distinguishes from siblings like 'waha_check_auth_status' or 'waha_request_pairing_code' by focusing on QR code retrieval, though it doesn't explicitly compare to them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., session setup), timing (e.g., during authentication flow), or exclusions (e.g., not needed if already authenticated). Siblings like 'waha_check_auth_status' or 'waha_request_pairing_code' offer similar authentication functions without clear differentiation here.

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

waha_get_sessionB

Get detailed info about a specific WhatsApp session

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNoSession namedefault

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Get detailed info' implies a read-only operation, it doesn't specify what 'detailed info' includes (e.g., session status, configuration, metadata), whether it requires authentication, or if there are any rate limits or side effects. This leaves significant gaps in understanding the tool's behavior.

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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action ('Get detailed info'), making it easy to parse quickly. There's no wasted language or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one parameter with full schema coverage) and lack of annotations or output schema, the description is minimally adequate. It identifies the tool's purpose but fails to provide context on usage, behavioral details, or output format, which could hinder an agent's ability to use it effectively without additional inference.

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?

The input schema has 100% description coverage, with the single parameter 'session' documented as 'Session name' with a default value. The description doesn't add any meaning beyond this, such as explaining what constitutes a valid session name or how it relates to other tools. With high schema coverage, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('detailed info about a specific WhatsApp session'), making it easy to understand what the tool does. However, it doesn't explicitly distinguish itself from sibling tools like 'waha_list_sessions' or 'waha_check_auth_status', which might also provide session-related information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when this tool is appropriate compared to siblings like 'waha_list_sessions' (for listing all sessions) or 'waha_check_auth_status' (for checking authentication), nor does it specify any prerequisites or exclusions for usage.

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

waha_leave_groupC

Leave a WhatsApp group

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesGroup ID
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Leave' implies a mutating action, it doesn't specify whether this requires specific permissions, what happens to group history, whether the action is reversible, or if there are rate limits. The description is minimal and lacks important operational context.

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 a single, clear sentence with zero wasted words. It's front-loaded with the essential action and gets straight to the point without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after leaving (success indicators, error conditions), doesn't mention authentication requirements, and provides no context about the broader WhatsApp group management ecosystem among the many sibling tools.

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 100%, so the schema already documents both parameters (groupId and session) adequately. The description doesn't add any additional meaning about parameter usage, format expectations, or examples beyond what's in the schema. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Leave') and resource ('a WhatsApp group'), making the purpose immediately understandable. However, it doesn't differentiate itself from sibling tools like 'waha_remove_group_participants' which also involves group departure, though from a different perspective (admin removal vs self-leaving).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. There's no mention of prerequisites (e.g., needing to be a group member), consequences (e.g., whether you can rejoin), or comparison to similar tools like 'waha_remove_group_participants' which serves a different administrative function.

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

waha_list_chatsB

List all chats in a WhatsApp session

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNoSession namedefault
limitNoNumber of chats to retrieve
offsetNoOffset for pagination

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral context. It implies a read operation but doesn't disclose rate limits, pagination behavior (beyond what's in the schema), error conditions, or whether it requires an active session. This leaves significant gaps for a tool that likely interacts with external APIs.

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 a single, efficient sentence with zero wasted words. It's appropriately sized for a simple list operation and front-loads the core purpose immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list operation with no output schema and no annotations, the description is minimally complete. It identifies the resource but lacks context about return format (e.g., chat objects vs. IDs), ordering, or how it integrates with WhatsApp session management. The high schema coverage helps, but behavioral aspects are underspecified.

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 100%, so the schema fully documents all three parameters. The description adds no additional meaning about parameters beyond implying 'chats' are the resource being listed. This meets the baseline of 3 when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List all chats') and resource ('in a WhatsApp session'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'waha_get_chat' or 'waha_get_contacts', which might retrieve similar data with different scopes or filters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention siblings like 'waha_get_chat' (for single chats) or 'waha_get_contacts' (for contacts vs. chats), nor does it specify prerequisites such as session authentication status.

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

waha_list_groupsC

List all WhatsApp groups

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNoSession namedefault
limitNoNumber of groups to retrieve
offsetNoOffset for pagination

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but offers minimal information. It implies a read-only operation ('List'), but doesn't mention authentication requirements, rate limits, pagination behavior (beyond what's in the schema), or what the output looks like (no output schema). This leaves significant gaps for a tool that interacts with WhatsApp groups.

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 a single, direct sentence with zero wasted words. It's front-loaded with the core action and resource, making it highly efficient and easy to parse at a glance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of WhatsApp group management and the lack of annotations and output schema, the description is insufficiently complete. It doesn't address authentication, error handling, return format, or how it differs from related tools like 'waha_list_chats', leaving the agent with critical gaps in understanding how to use this tool effectively.

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?

The schema description coverage is 100%, with clear documentation for all three parameters (session, limit, offset). The description adds no additional parameter semantics beyond what's already in the schema, such as clarifying the scope of 'all' groups or how pagination works. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all WhatsApp groups' clearly states the verb ('List') and resource ('WhatsApp groups'), making the purpose immediately understandable. It doesn't explicitly distinguish from sibling tools like 'waha_get_group' (singular) or 'waha_list_chats' (broader scope), but the specificity is adequate for basic understanding.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'waha_get_group' for retrieving a specific group or 'waha_list_chats' for a broader list including individual chats, nor does it specify any prerequisites or contextual constraints for usage.

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

waha_list_sessionsB

List all WhatsApp sessions and their statuses

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions listing sessions and statuses but doesn't cover critical aspects like whether this is a read-only operation, if it requires authentication, potential rate limits, or the format of the returned data. This leaves significant gaps for a tool that likely interacts with session management.

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 a single, clear sentence that front-loads the essential information ('List all WhatsApp sessions and their statuses') with no unnecessary words. It efficiently conveys the core purpose without redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of session management and the lack of annotations and output schema, the description is insufficient. It doesn't explain what 'statuses' entail, how results are structured, or any prerequisites like authentication, making it incomplete for safe and effective use by an AI agent.

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?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add any parameter information, which is acceptable here, but it doesn't explicitly state the lack of parameters, so it's not a perfect score. Baseline is 4 for zero parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List all') and resource ('WhatsApp sessions and their statuses'), making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'waha_get_session' or 'waha_check_auth_status', which might provide overlapping or related session information, so it falls short of a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't specify if this is for bulk retrieval versus detailed single-session queries, or if it should be used for monitoring versus authentication checks, leaving the agent without context for selection among siblings.

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

waha_logout_sessionA

Logout from a WhatsApp session (keeps session but disconnects WhatsApp account)

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNoSession namedefault

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions that the session is kept but the WhatsApp account is disconnected, which is useful behavioral context. However, it lacks details on permissions required, whether this is reversible, what happens to pending messages, or error conditions, which are important for a mutation tool.

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 a single, efficient sentence that front-loads the core action and adds clarifying context without unnecessary words. Every part of the sentence earns its place by distinguishing the tool's behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is minimally adequate. It explains the core action and a key behavioral trait (keeps session), but lacks details on side effects, error handling, or return values, leaving gaps in understanding the tool's full impact.

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 100%, with the single parameter 'session' documented as 'Session name' with a default value. The description doesn't add any parameter-specific information beyond what the schema provides, so the baseline score of 3 is appropriate.

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 action ('Logout from a WhatsApp session') and specifies the resource ('WhatsApp session'), distinguishing it from sibling tools like waha_stop_session or waha_delete_session by clarifying it 'keeps session but disconnects WhatsApp account'.

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 implies usage context by stating it 'keeps session but disconnects WhatsApp account', suggesting it's for temporarily disconnecting while preserving session data. However, it doesn't explicitly state when to use this versus alternatives like waha_stop_session or waha_delete_session, nor does it mention prerequisites like needing an active session.

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

waha_mark_as_readC

Mark messages in a chat as read (send seen)

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
sessionNoSession namedefault
messageIdsNoSpecific message IDs to mark as read (optional, marks all if omitted)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the tool marks messages as read, implying a mutation (write operation), but doesn't disclose behavioral traits such as permissions required, whether it's idempotent, error conditions (e.g., invalid chatId), or side effects (e.g., updating chat state). This is inadequate for a mutation tool with zero annotation coverage.

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 a single, efficient sentence: 'Mark messages in a chat as read (send seen)'. It's front-loaded with the core action and includes a clarifying parenthetical. There's zero waste, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a mutation with 3 parameters) and lack of annotations and output schema, the description is incomplete. It doesn't cover behavioral aspects like error handling, return values, or usage context. For a tool that modifies chat state, this leaves significant gaps for an agent to operate effectively.

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 100%, so the schema already documents all parameters (chatId, session, messageIds) with descriptions. The description doesn't add any meaning beyond what the schema provides (e.g., it doesn't explain chatId format or session implications). Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Mark messages in a chat as read (send seen)'. It specifies the verb ('mark as read'), resource ('messages in a chat'), and clarifies the action with 'send seen'. However, it doesn't explicitly differentiate from siblings like 'waha_get_messages' or 'waha_star_message', which is why it's not a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active session), exclusions, or compare to similar tools like 'waha_get_messages' for reading without marking. This leaves the agent with minimal context for decision-making.

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

waha_mute_chatC

Mute or unmute a chat

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
muteNotrue to mute, false to unmute
durationNoMute duration in seconds (e.g. 86400 for 24h). Omit for indefinite.
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. 'Mute or unmute a chat' implies a state-changing operation but doesn't specify whether this requires special permissions, what happens to notifications, whether it's reversible, or any side effects. For a mutation tool with zero annotation coverage, this is insufficient behavioral context.

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 a single, efficient sentence that states the core functionality without unnecessary words. It's appropriately sized for a straightforward tool and gets directly to the point with zero wasted verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is inadequate. It doesn't explain what 'muting' means in this context, what the expected outcome is, whether there are limitations or constraints, or what happens after invocation. The agent lacks crucial context for proper tool selection and use.

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 100%, so the schema already documents all four parameters thoroughly. The description adds no additional parameter information beyond what's in the schema. This meets the baseline expectation when schema coverage is complete, but doesn't provide extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function as 'Mute or unmute a chat', which specifies the verb (mute/unmute) and resource (chat). It distinguishes itself from siblings like waha_archive_chat or waha_pin_chat by focusing on muting functionality. However, it doesn't explicitly differentiate from all possible sibling tools in the extensive list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, when muting is appropriate versus archiving or other chat management tools, or any contextual constraints. The agent must infer usage from the tool name alone.

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

waha_pin_chatC

Pin or unpin a chat

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
pinNotrue to pin, false to unpin
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. 'Pin or unpin a chat' implies a state change operation, but it doesn't describe what pinning actually does (e.g., keeps chat at top of list), whether it requires specific permissions, if it's reversible, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap.

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 a single, efficient sentence that states exactly what the tool does with zero wasted words. It's appropriately sized for a simple toggle operation and front-loads the core functionality immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what pinning means in this context, what the expected outcome is, or any error conditions. Given the complexity of chat state management and the lack of structured behavioral information, the description should provide more context about the operation's effects.

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 100%, so the schema already fully documents all three parameters. The description adds no additional parameter semantics beyond what's in the schema. The baseline score of 3 is appropriate when the schema does all the parameter documentation work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('pin or unpin') and resource ('a chat'), making the purpose immediately understandable. It distinguishes from siblings like 'waha_archive_chat' or 'waha_mute_chat' by specifying a different chat management operation. However, it doesn't specify whether this applies to individual or group chats, which would make it a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., chat must exist), when pinning is appropriate versus other chat management tools like archiving or muting, or what happens if you try to pin an already-pinned chat. The agent must infer usage from the tool name alone.

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

waha_promote_group_participantC

Promote participant(s) to group admin

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesGroup ID
participantsYesParticipant IDs to promote
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Promote') which implies a mutation, but doesn't describe effects (e.g., admin privileges granted), potential errors (e.g., if participants aren't in the group), or side effects. This leaves significant gaps for a mutation tool with zero annotation coverage.

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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with zero wasted content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is inadequate. It doesn't explain what happens after promotion, potential return values, error conditions, or important behavioral aspects like whether multiple participants can be promoted at once (implied by 'participant(s)' but not confirmed).

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 100%, so the schema already documents all three parameters (groupId, participants, session) with basic descriptions. The description doesn't add any additional meaning about parameter usage, constraints, or examples beyond what the schema provides, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Promote') and target ('participant(s) to group admin'), making the purpose immediately understandable. It specifies the resource (group participants) but doesn't differentiate from the sibling tool 'waha_demote_group_participant' beyond the opposite action direction, which is implicit but not explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is provided on when to use this tool versus alternatives. While the sibling list includes 'waha_demote_group_participant' for the opposite action, the description doesn't mention it or provide context about prerequisites, permissions, or typical use cases for promotion.

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

waha_react_to_messageC

React to a message with an emoji

ParametersJSON Schema
NameRequiredDescriptionDefault
messageIdYesMessage ID to react to
reactionYesEmoji reaction (e.g. "❤️", "👍"). Empty string to remove reaction.
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions reacting with an emoji and implies mutation, but lacks details on permissions, rate limits, error conditions, or what happens if the reaction already exists. For a mutation tool with zero annotation coverage, this is insufficient.

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 a single, clear sentence with zero waste. It's front-loaded with the core action and efficiently conveys the essential function without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is inadequate. It doesn't cover behavioral aspects like side effects, error handling, or return values, leaving significant gaps for an AI agent to understand how to use it correctly.

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 100%, so the schema fully documents all parameters. The description adds minimal value beyond the schema, as it doesn't explain parameter interactions or provide examples beyond what's in the schema descriptions. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('React to a message') and the resource ('a message'), specifying it's done with an emoji. It distinguishes from siblings like 'waha_star_message' or 'waha_edit_message' by focusing on emoji reactions. However, it doesn't explicitly mention WhatsApp context, which is implied by the 'waha_' prefix.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'waha_star_message' or 'waha_edit_message', nor any prerequisites such as needing an active session. The description only states what it does, not when it's appropriate.

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

waha_remove_group_participantsC

Remove participants from a group

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesGroup ID
participantsYesParticipant IDs to remove
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but offers minimal information. It states the action but doesn't mention whether this requires specific permissions, whether removal is permanent or reversible, what happens to group roles, or any rate limits. For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.

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 a single, direct sentence with zero wasted words. It's front-loaded with the core action and target, making it immediately scannable. Every word earns its place by conveying essential information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficiently complete. It lacks critical context such as permission requirements, error conditions, return values, or how this interacts with sibling tools (e.g., waha_demote_group_participant). The agent would struggle to use this tool correctly without additional inference or trial-and-error.

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 100%, so the schema already documents all three parameters (groupId, participants, session) with basic descriptions. The description doesn't add any meaningful context beyond what the schema provides, such as format examples for participant IDs or session usage scenarios. The baseline score of 3 reflects adequate but unenhanced parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove') and target ('participants from a group'), making the purpose immediately understandable. It distinguishes from sibling tools like waha_add_group_participants by specifying removal rather than addition. However, it doesn't specify whether this removes all participants or selected ones, which could be more precise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (e.g., needing group admin permissions), when not to use it, or how it differs from related tools like waha_leave_group or waha_demote_group_participant. The agent must infer usage from the tool name alone.

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

waha_remove_label_from_chatC

Remove a label from a chat

ParametersJSON Schema
NameRequiredDescriptionDefault
labelIdYesLabel ID
chatIdYesChat ID
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Remove a label from a chat' implies a mutation operation, but the description doesn't state whether this requires specific permissions, whether the removal is permanent or reversible, what happens if the label doesn't exist on that chat, or any rate limits. For a mutation tool with zero annotation coverage, this is inadequate.

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 a single, efficient sentence with zero wasted words. It's appropriately sized for a simple operation and front-loads the core action. Every word earns its place in conveying the essential purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens after removal (success/failure indicators), whether there are side effects, or what permissions are required. Given the complexity of label management in messaging systems, more context about the operation's behavior and outcomes is needed.

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 100%, so the schema already documents all three parameters (labelId, chatId, session) with basic descriptions. The description doesn't add any meaning beyond what the schema provides - it doesn't explain what format the IDs should be in, where to find them, or what the 'session' parameter represents in this context. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove a label') and target ('from a chat'), which is a specific verb+resource combination. It distinguishes from the sibling tool 'waha_add_label_to_chat' by using the opposite action (remove vs add). However, it doesn't specify whether this removes labels from WhatsApp chats specifically or what system it operates on.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing label and chat), when this operation is appropriate, or what happens if the label isn't currently on the chat. The sibling tool 'waha_add_label_to_chat' exists, but no comparison is provided.

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

waha_request_pairing_codeB

Request a pairing code for phone number authentication (alternative to QR code). The user will receive a code on their phone to enter in WhatsApp.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNoSession namedefault
phoneNumberYesPhone number in international format without + (e.g. "12132132130")

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions that 'The user will receive a code on their phone to enter in WhatsApp,' which adds some behavioral context about user interaction. However, it lacks details on permissions, rate limits, error handling, or what happens after code entry, leaving significant gaps for a tool that likely involves authentication flows.

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 concise and well-structured in two sentences: the first states the purpose and context, and the second explains the user action. Every sentence adds value without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description provides basic purpose and user flow but lacks completeness. It doesn't cover behavioral aspects like authentication state changes, error scenarios, or integration with other tools (e.g., waha_check_auth_status). For an authentication-related tool, more context on outcomes and dependencies would be beneficial.

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 100%, so the schema fully documents the two parameters (session and phoneNumber). The description doesn't add any parameter-specific details beyond what's in the schema, such as format examples or usage tips. This meets the baseline of 3, as the schema handles the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Request a pairing code for phone number authentication (alternative to QR code).' It specifies the action (request), resource (pairing code), and context (authentication). However, it doesn't explicitly differentiate from the sibling tool 'waha_get_qr_code' beyond mentioning it as an alternative, which is slightly less specific than ideal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by stating it's 'for phone number authentication (alternative to QR code),' which suggests when to use it versus QR code methods. However, it doesn't provide explicit guidance on when to choose this over other authentication methods or prerequisites, such as session setup or user readiness.

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

waha_restart_sessionB

Restart a WhatsApp session

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNoSession namedefault

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Restart') but doesn't explain what restarting entails—whether it preserves session data, requires re-authentication, interrupts ongoing operations, or has side effects. For a mutation tool with zero annotation coverage, this leaves critical behavioral aspects unspecified.

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 a single, efficient sentence with zero wasted words. It's front-loaded with the core action ('Restart a WhatsApp session'), making it immediately clear and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of restarting a session (a mutation operation with potential side effects), no annotations, and no output schema, the description is incomplete. It lacks details on behavior, outcomes, error conditions, or dependencies, leaving the agent with insufficient context to use the tool effectively beyond its basic purpose.

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?

The input schema has 1 parameter with 100% description coverage ('session' with description 'Session name'), so the schema fully documents the parameter. The description adds no additional parameter semantics, but with high schema coverage and only one parameter, a baseline of 4 is appropriate as the description doesn't need to compensate for gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Restart') and resource ('a WhatsApp session'), making the purpose immediately understandable. It distinguishes itself from sibling tools like 'waha_start_session' and 'waha_stop_session' by specifying the restart action, though it doesn't explicitly contrast with them in the description text itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'waha_start_session' or 'waha_stop_session'. It doesn't mention prerequisites (e.g., whether a session must exist or be in a specific state) or typical use cases (e.g., recovering from errors, refreshing connections).

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

waha_revoke_group_inviteC

Revoke the current invite link and generate a new one

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesGroup ID
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions revoking and generating an invite link but fails to disclose critical behavioral traits like whether this requires admin permissions, if the old link becomes invalid immediately, rate limits, or error conditions. This leaves significant gaps for a mutation tool.

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 a single, efficient sentence that directly states the tool's action without unnecessary words. It's front-loaded and wastes no space, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like permissions, side effects, or what the new invite link looks like, which are crucial for safe and effective use. The high schema coverage doesn't compensate for these gaps.

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 100%, so the schema already documents both parameters (groupId and session). The description doesn't add any meaning beyond what's in the schema, such as explaining what 'revoke' entails for the groupId or how the session affects the operation. Baseline 3 is appropriate as the schema handles parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('revoke' and 'generate') and the resource ('invite link'), making the purpose understandable. However, it doesn't explicitly differentiate this tool from sibling tools like 'waha_get_group_invite_code' or 'waha_create_group', which might handle similar group operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as when to revoke an invite link versus creating a new group or checking an existing code. It lacks context about prerequisites, timing, or exclusions, leaving usage unclear.

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

waha_send_contactC

Send contact card(s) (vCard) to a WhatsApp chat

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
contactsIdYesContact IDs to share (e.g. ["1234567890@c.us"])
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action but fails to mention critical traits like whether this is a mutative operation (likely yes, as it sends data), potential side effects (e.g., notifications to recipients), or error conditions (e.g., invalid contact IDs). This leaves significant gaps in understanding the tool's behavior.

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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded with the core action and resource, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of sending data in a messaging app (a mutative operation with potential side effects), no annotations, and no output schema, the description is incomplete. It lacks details on behavior, error handling, or response format, making it inadequate for safe and effective use by an AI agent.

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 100%, so the schema already documents all three parameters (chatId, contactsId, session) with basic descriptions. The description adds no additional meaning beyond implying that 'contactsId' refers to vCard contacts, but this is minimal enhancement over the schema's documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Send contact card(s)') and target ('to a WhatsApp chat'), with the specific format 'vCard' providing additional precision. However, it doesn't differentiate from sibling tools like 'waha_send_text' or 'waha_send_file' beyond the content type, missing explicit distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., 'waha_send_text' for plain text or 'waha_send_file' for files). The description lacks context about prerequisites, such as needing valid chat IDs or session setup, offering no usage instructions.

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

waha_send_fileC

Send a document/file to a WhatsApp chat (from local file OR URL)

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
filePathNoLocal file path (e.g., "/tmp/document.pdf")
fileUrlNoURL of the file to send (can be HTTP URL or data: URL)
mimetypeNoFile MIME type (auto-detected if using filePath)
filenameNoDisplay filename (auto-detected if using filePath)
captionNoFile caption
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions sending a file but doesn't disclose behavioral traits like whether this is a mutation (likely yes, as it sends data), authentication requirements, rate limits, error handling, or what happens on success/failure. This leaves significant gaps for a tool that interacts with external services.

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 a single, efficient sentence that front-loads the core purpose ('Send a document/file to a WhatsApp chat') and adds a clarifying detail ('from local file OR URL') without any wasted words. It's appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (sending files to WhatsApp with 7 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't explain return values, error conditions, or behavioral nuances, leaving the agent with insufficient context for reliable invocation in a real-world scenario.

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 100%, so the schema already documents all 7 parameters thoroughly. The description adds minimal value by implying support for local files and URLs, but doesn't provide additional syntax, format details, or usage examples beyond what's in the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('send') and resource ('document/file to a WhatsApp chat'), specifying it can use local files or URLs. However, it doesn't distinguish this tool from sibling tools like 'waha_send_image' or 'waha_send_video' that also send media files to WhatsApp chats, missing explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as 'waha_send_image' for images or 'waha_send_video' for videos. It mentions the source options (local file or URL) but lacks context on prerequisites, exclusions, or specific use cases compared to siblings.

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

waha_send_imageB

Send an image to a WhatsApp chat (from local file OR URL)

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
imagePathNoLocal file path (e.g., "/tmp/photo.jpg")
imageUrlNoURL of the image to send
captionNoImage caption
sessionNoSession namedefault
replyToNoMessage ID to reply to

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the action ('Send') but lacks details on permissions required, rate limits, whether the operation is idempotent, error handling, or what the response looks like. For a mutation tool with zero annotation coverage, this is a significant gap.

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 a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part of the sentence earns its place by specifying the action, resource, and input options.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (mutation with 6 parameters, no annotations, no output schema), the description is incomplete. It lacks behavioral context, usage guidance, and details on return values or error conditions, making it inadequate for safe and effective use by an AI agent.

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 100%, so the schema already documents all 6 parameters. The description adds marginal value by mentioning the dual input sources (local file or URL), which relates to imagePath and imageUrl, but doesn't provide additional syntax or format details beyond what the schema provides. Baseline 3 is appropriate when schema does the heavy lifting.

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 action ('Send') and resource ('an image to a WhatsApp chat'), specifying the dual input sources ('from local file OR URL'). It distinguishes itself from sibling tools like waha_send_text, waha_send_video, etc., by focusing specifically on images.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like waha_send_file or waha_send_video. The description mentions the input sources but doesn't clarify usage context, prerequisites, or exclusions relative to other media-sending tools.

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

waha_send_locationC

Send a location to a WhatsApp chat

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
latitudeYesLatitude coordinate
longitudeYesLongitude coordinate
titleNoLocation title/name
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral information. It states the action ('send') which implies a write operation, but doesn't disclose authentication requirements, rate limits, error conditions, or what happens after sending (e.g., confirmation, message ID). For a write operation with zero annotation coverage, this is inadequate.

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 a single, clear sentence with zero wasted words. It's perfectly front-loaded with the core action and immediately communicates the essential purpose without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write operation with no annotations and no output schema, the description is insufficient. It doesn't explain what constitutes success/failure, return values, or behavioral constraints. Given the complexity of sending data to WhatsApp and the lack of structured metadata, more context is needed for safe and effective use.

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 100%, so the schema already documents all 5 parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('send') and resource ('location to a WhatsApp chat'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like waha_send_text or waha_send_contact, which share the same 'send to WhatsApp chat' pattern but with different content types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when location sharing is appropriate versus other message types, nor does it reference sibling tools like waha_send_text or waha_send_contact for different content types.

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

waha_send_pollC

Send a poll to a WhatsApp chat

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
pollNameYesPoll question
optionsYesPoll options (at least 2)
multipleAnswersNoAllow multiple answers
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. 'Send a poll' implies a write operation, but there's no information about permissions needed, rate limits, whether the poll is interactive, how recipients can respond, or what happens on success/failure. The description is minimal and lacks crucial behavioral context.

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 extremely concise - a single sentence that directly states the tool's purpose. There's no wasted language or unnecessary elaboration, making it front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write operation tool with 5 parameters and no annotations or output schema, the description is inadequate. It doesn't address behavioral aspects, error conditions, return values, or practical usage context. The description should provide more complete guidance for this non-trivial messaging tool.

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 100%, so all parameters are documented in the schema. The description doesn't add any meaningful parameter semantics beyond what's already in the schema descriptions. It doesn't explain relationships between parameters or provide usage examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Send a poll') and target ('to a WhatsApp chat'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'waha_send_text' or 'waha_send_contact' beyond mentioning 'poll' specifically.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like other send methods (text, image, etc.) or when polls are appropriate versus other communication methods. There's no mention of prerequisites, constraints, or typical use cases.

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

waha_send_statusC

Post a text status/story update

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesStatus text
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states this is a 'Post' operation, implying a write action, but doesn't clarify if this requires authentication, what happens on failure, whether it's rate-limited, or if it affects other users. This leaves significant gaps for a mutation tool.

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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool (implied by 'Post') with no annotations and no output schema, the description is incomplete. It doesn't explain what happens after posting (e.g., success response, error handling) or contextual details like platform-specific behavior (e.g., WhatsApp status vs. story), leaving the agent with insufficient information.

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 100%, with both parameters ('text' and 'session') clearly documented in the schema. The description adds no additional meaning about parameters beyond implying 'text' is for the status content. This meets the baseline score of 3 since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Post') and the resource ('a text status/story update'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'waha_send_text' or 'waha_set_presence' which might also involve posting updates, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'waha_send_text' (for general messages) and 'waha_set_presence' (for presence updates), there's no indication whether this is for WhatsApp statuses, stories, or other specific contexts, leaving usage ambiguous.

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

waha_send_textB

Send a text message to a WhatsApp chat

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID (e.g. "1234567890@c.us" for users, "1234567890@g.us" for groups)
textYesMessage text
sessionNoSession namedefault
replyToNoMessage ID to reply to
mentionsNoUser IDs to mention (e.g. ["1234567890@c.us"]) or ["all"] for everyone
linkPreviewNoEnable link preview generation

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits like whether it requires an active session, potential rate limits, error conditions, or what happens if the chatId is invalid. It misses critical operational context for a messaging tool.

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 a single, efficient sentence that directly states the tool's purpose with zero wasted words. It is appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a messaging tool with no annotations and no output schema, the description is incomplete—it doesn't cover behavioral aspects like success/failure responses, session dependencies, or error handling. Given the complexity of sending messages in WhatsApp, more context is needed for effective use.

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 100%, so the schema fully documents all 6 parameters. The description adds no additional parameter semantics beyond what's in the schema, maintaining the baseline score of 3 where the schema does the heavy lifting.

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 specific action ('Send a text message') and target resource ('to a WhatsApp chat'), distinguishing it from sibling tools like waha_send_image or waha_send_file that send different content types. It precisely communicates the tool's function without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like waha_send_contact or waha_send_poll, nor does it mention prerequisites such as session authentication or chat availability. It lacks context for selection among messaging tools.

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

waha_send_videoC

Send a video to a WhatsApp chat (from local file OR URL)

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
videoPathNoLocal file path (e.g., "/tmp/video.mp4")
videoUrlNoURL of the video to send (MP4 format preferred)
captionNoVideo caption
convertNoAuto-convert to WhatsApp format
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions the two source options but doesn't disclose whether this is a read-only or destructive operation, what permissions are needed, potential rate limits, error conditions, or what happens if both videoPath and videoUrl are provided. For a mutation tool with zero annotation coverage, this is inadequate.

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 a single, efficient sentence that front-loads the core purpose. Every word earns its place, with no redundancy or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It lacks critical behavioral context (e.g., side effects, error handling), doesn't explain return values, and offers minimal guidance on usage. Given the complexity of sending media via WhatsApp, more detail is warranted.

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 100%, so the schema fully documents all 6 parameters. The description adds marginal value by highlighting the two source options (local file OR URL), but doesn't provide additional syntax, format details, or constraints beyond what's in the schema. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('send a video') and target ('to a WhatsApp chat'), and specifies the two source options ('from local file OR URL'). However, it doesn't differentiate from sibling tools like waha_send_image or waha_send_file, which likely have similar patterns for different media types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like waha_send_image or waha_send_file, nor does it mention any prerequisites (e.g., needing an active session) or constraints (e.g., file size limits). Usage is implied but not explicitly stated.

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

waha_send_voiceC

Send a voice message to a WhatsApp chat (from local file OR URL)

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
audioPathNoLocal file path (e.g., "/tmp/voice.mp3")
audioUrlNoURL of the audio file (OGG/Opus format preferred)
convertNoAuto-convert to Opus format (recommended for MP3/WAV)
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but lacks behavioral details. It mentions sending a voice message but doesn't disclose permissions needed, rate limits, side effects (e.g., message delivery confirmation), or error handling. This is inadequate for a mutation tool with zero annotation coverage.

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 a single, efficient sentence that front-loads the core purpose with no wasted words. It directly communicates the tool's function and key parameter options.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It lacks behavioral context (e.g., success/failure responses, side effects) and doesn't compensate for the absence of structured safety or output information, leaving significant gaps for an AI agent.

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 100%, so parameters are well-documented in the schema. The description adds minimal value by implying audio source options ('local file OR URL'), but doesn't elaborate beyond what the schema provides. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('send a voice message') and target ('to a WhatsApp chat'), with specific resource types ('from local file OR URL'). It distinguishes from sibling tools like waha_send_text or waha_send_file by specifying voice messages, though it doesn't explicitly contrast with all siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like waha_send_text or waha_send_file, nor any prerequisites or constraints. The description only states what it does without context for selection.

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

waha_set_presenceB

Set your presence status (online/offline)

ParametersJSON Schema
NameRequiredDescriptionDefault
presenceYesPresence status to set
sessionNoSession namedefault

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Set' implies a mutation, it doesn't specify whether this requires authentication, affects other sessions, has side effects, or provides confirmation. For a write operation with zero annotation coverage, this leaves significant behavioral gaps.

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 a single, efficient sentence that communicates the core functionality without unnecessary words. It's appropriately sized for a simple tool and front-loads the essential information, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, mutation operation) with no annotations and no output schema, the description is minimally complete. It states what the tool does but lacks behavioral context, usage guidance, and output expectations. The 100% schema coverage helps but doesn't compensate for missing behavioral transparency.

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 100%, with both parameters clearly documented in the schema itself. The description mentions 'presence status' which aligns with the 'presence' parameter but adds no additional semantic context beyond what the schema already provides. The baseline score of 3 reflects adequate coverage through schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Set') and the resource ('your presence status') with specific values ('online/offline'), making the purpose immediately understandable. However, it doesn't differentiate from the sibling tool 'waha_get_presence' which retrieves rather than sets presence, leaving room for slight ambiguity in sibling context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, prerequisites, or contextual constraints. With sibling tools like 'waha_get_presence' and various session management tools, there's no indication of when setting presence is appropriate versus other status-related actions.

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

waha_star_messageC

Star or unstar a message

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
messageIdYesMessage ID
starNotrue to star, false to unstar
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'star or unstar' implies a mutation operation, it doesn't specify permission requirements, whether the action is reversible, rate limits, or what happens on success/failure. This leaves significant gaps for a tool that modifies message state.

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 a single, efficient sentence with zero wasted words. It's appropriately sized for a straightforward tool and front-loads the core functionality immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is inadequate. It doesn't explain what happens after starring/unstarring (success indicators, error conditions), doesn't mention dependencies on other tools for obtaining IDs, and provides minimal behavioral context despite the tool's potential complexity.

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 100%, so the schema already documents all four parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain how to obtain chatId/messageId values or clarify the star parameter's behavior). Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('star or unstar') and resource ('a message'), making the purpose unambiguous. However, it doesn't differentiate this tool from sibling tools like 'waha_react_to_message' or 'waha_pin_chat' which also modify message states, leaving room for improvement in sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing message IDs from other tools), exclusions, or how it relates to similar tools like 'waha_react_to_message' for other message interactions.

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

waha_start_sessionC

Start a stopped WhatsApp session

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Start a stopped WhatsApp session' implies a state-changing operation, it doesn't specify what 'start' entails (e.g., authentication requirements, side effects, or what happens if the session is already running). This leaves significant behavioral gaps for a mutation tool.

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 a single, efficient sentence with zero wasted words. It's appropriately sized for a simple tool and front-loads the core purpose immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'start' means operationally, what the expected outcome is, or potential errors. Given the complexity of session management and lack of structured behavioral data, more context is needed.

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?

The input schema has 100% description coverage, with the single parameter 'session' documented as 'Session name' with a default value. The description adds no additional parameter context beyond what the schema provides, so it meets the baseline of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Start') and target ('a stopped WhatsApp session'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from its sibling 'waha_restart_session' which might have overlapping functionality, preventing a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'waha_restart_session' or 'waha_create_session', nor does it mention prerequisites (e.g., that a session must exist and be stopped). It only states what the tool does, not when it should be used.

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

waha_start_typingC

Show typing indicator in a chat (simulates real user behavior)

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states it 'simulates real user behavior' without detailing duration, visual effects, permissions needed, or side effects. It misses key behavioral traits like whether it's persistent, requires specific chat states, or has rate limits.

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 a single, efficient sentence that front-loads the core purpose ('Show typing indicator in a chat') and adds clarifying context ('simulates real user behavior') without any wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete for a tool that likely involves UI simulation and chat interactions. It lacks details on behavioral outcomes, error conditions, or what 'simulates' entails, leaving gaps for agent understanding.

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 100%, so the baseline is 3. The description adds no parameter-specific meaning beyond the schema's documentation of 'chatId' and 'session', which already define their purposes clearly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Show typing indicator') and target ('in a chat'), with the specific behavior 'simulates real user behavior' adding useful context. It distinguishes from sibling 'waha_stop_typing' by indicating the start action, though it doesn't explicitly name that sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like 'waha_send_text' or 'waha_stop_typing' is provided. The description implies usage for simulating user behavior but lacks context on timing, prerequisites, or exclusions.

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

waha_stop_sessionC

Stop a running WhatsApp session

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the tool stops a session but doesn't disclose behavioral traits like whether this is destructive (e.g., ends connectivity), requires specific permissions, has side effects (e.g., data loss), or what happens post-stop. For a mutation tool with zero annotation coverage, this is a significant gap.

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 a single, efficient sentence with zero waste, front-loaded with the core action. It's appropriately sized for a simple tool with one parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a mutation tool (stopping implies change), the description is incomplete. It lacks details on behavior, side effects, or return values, making it inadequate for safe agent use without additional context.

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 100%, with the parameter 'session' documented as 'Session name' and a default of 'default'. The description adds no meaning beyond this, as it doesn't explain parameter usage or constraints. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Stop') and target ('a running WhatsApp session'), providing specific verb+resource. It distinguishes from siblings like 'waha_logout_session' and 'waha_delete_session' by focusing on stopping rather than logging out or deleting, though it doesn't explicitly differentiate them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'waha_logout_session' or 'waha_delete_session', nor does it mention prerequisites (e.g., session must be running). The description implies usage for stopping sessions but lacks explicit context or exclusions.

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

waha_stop_typingC

Stop showing typing indicator in a chat

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesChat ID
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't mention whether this requires specific permissions, if it's idempotent, what happens on errors, or any rate limits—critical for a chat interaction tool in a WhatsApp API context.

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 a single, clear sentence that directly states the tool's function without unnecessary words. It's front-loaded and efficiently communicates the core purpose, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is insufficient for a tool that interacts with chat states. It doesn't explain return values, error conditions, or side effects, leaving significant gaps in understanding how to properly invoke and handle results from this tool.

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 100%, so the schema fully documents both parameters (chatId and session). The description adds no additional parameter semantics beyond what's in the schema, resulting in the baseline score of 3 for adequate but not enhanced documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Stop showing') and resource ('typing indicator in a chat'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'waha_start_typing' beyond the obvious opposite action, missing explicit comparison that would warrant a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives or prerequisites. The description lacks context about its relationship with 'waha_start_typing' or other chat interaction tools, leaving the agent to infer usage scenarios independently.

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

waha_update_group_descriptionC

Update the description of a group

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesGroup ID
descriptionYesNew group description
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Update' implies a mutation, it doesn't specify whether this requires admin permissions, if changes are reversible, potential rate limits, or error conditions. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding the tool's behavior and constraints.

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 a single, efficient sentence that states exactly what the tool does without any wasted words. It's front-loaded with the core action and resource, making it immediately scannable and understandable. Every word earns its place in this minimal description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't address behavioral aspects like permissions needed, whether the operation is idempotent, what happens on success/failure, or return values. For a tool that modifies group data, more context about constraints and outcomes would be necessary for safe usage.

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 100%, so all parameters are documented in the schema itself. The description doesn't add any additional parameter context beyond what's in the schema (e.g., format expectations for groupId, length limits for description, purpose of session parameter). With complete schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but also doesn't need to.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Update') and resource ('description of a group'), making the purpose immediately understandable. It distinguishes itself from sibling tools like 'waha_update_group_subject' and 'waha_update_group_picture' by specifying it updates the description rather than subject or picture. However, it doesn't explicitly mention the WhatsApp context or differentiate from broader group management tools beyond naming conventions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing group, proper permissions), exclusions, or compare it to related tools like 'waha_get_group' for checking current descriptions. Without any usage context, the agent must infer when this operation is appropriate.

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

waha_update_group_pictureC

Set the profile picture of a group

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesGroup ID
imageUrlYesURL of the image to set as group picture
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the action without behavioral details. It doesn't disclose required permissions, whether the change is reversible, rate limits, or what happens on success/failure. For a mutation tool, this is a significant gap in transparency.

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 a single, clear sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately scannable and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It lacks behavioral context, error handling information, and usage guidance. Given the complexity of updating a group picture (which likely involves permissions and media validation), more completeness is needed.

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 100%, so parameters are fully documented in the schema. The description doesn't add any meaning beyond what's in the schema (e.g., format requirements for imageUrl, session implications). Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Set') and target resource ('profile picture of a group'), making the purpose immediately understandable. It distinguishes from siblings like 'waha_update_group_subject' or 'waha_update_group_description' by specifying the picture aspect. However, it doesn't explicitly mention WhatsApp context or differentiate from non-sibling tools, keeping it at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., needing an existing group), exclusions, or comparisons to similar tools like 'waha_get_profile_picture'. This leaves the agent without context for appropriate selection.

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

waha_update_group_subjectC

Update the name/subject of a group

ParametersJSON Schema
NameRequiredDescriptionDefault
groupIdYesGroup ID
subjectYesNew group name
sessionNoSession namedefault

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Update' implies a mutation, it doesn't specify whether this requires admin permissions, whether the change is reversible, what happens if the subject already exists, or any rate limits. For a mutation tool with zero annotation coverage, this leaves significant behavioral questions unanswered.

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 a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a straightforward update operation and gets directly to the point with zero waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens on success/failure, whether the change is immediate or requires confirmation, or how this interacts with group permissions. Given the complexity of group management operations and the lack of structured behavioral information, the description should provide more context.

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 100%, so the schema already documents all three parameters thoroughly. The description adds no additional parameter information beyond what's in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update') and the resource ('name/subject of a group'), making the purpose immediately understandable. However, it doesn't distinguish this tool from its sibling 'waha_update_group_description' or 'waha_update_group_picture' - all three update group attributes but target different properties.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'waha_update_group_description' or 'waha_update_group_picture'. It also doesn't mention prerequisites, error conditions, or when this operation might fail. The agent must infer usage from the tool name alone.

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

TDQS

B3.2/5.0
Disambiguation4/5

Most tools have distinct purposes targeting specific WhatsApp actions like sending messages, managing groups, or handling sessions. However, some overlap exists, such as waha_send_text, waha_send_image, and waha_send_video, which could be confused as variants of a general send function, though their descriptions clarify media types. Overall, the set is well-differentiated with minimal ambiguity.

Naming Consistency5/5

All tools follow a consistent waha_verb_noun naming pattern, using snake_case uniformly. This predictability makes it easy for agents to understand and navigate the toolset, with no deviations in style or structure across the 63 tools.

Tool Count2/5

With 63 tools, the count is excessive for a WhatsApp API server, likely overwhelming agents and causing decision paralysis. A more focused set of 15-25 tools could cover the same functionality without redundancy, such as consolidating send operations into fewer tools. This high number feels heavy and unnecessary for the domain.

Completeness5/5

The toolset provides comprehensive coverage for WhatsApp operations, including messaging (text, media, polls), group management (create, update, participants), session handling (start, stop, QR codes), and chat features (archive, mute, labels). No obvious gaps exist; it supports full CRUD and lifecycle management for the domain.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    C
    maintenance
    Enables AI assistants to interact with WhatsApp through the WSAPI service, supporting comprehensive messaging, contact management, group operations, and account management functionality. Allows sending various media types, managing chats, and controlling WhatsApp sessions through natural language.
    100
    30
    3
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to interact with WhatsApp through the WAHA (WhatsApp HTTP API) platform. Supports chat management, message operations including sending/receiving messages, and marking chats as read.
    52
    22
    9
    ISC
  • A
    license
    A
    quality
    D
    maintenance
    Connects AI assistants to the official Meta WhatsApp Cloud API for managing conversations and sending various message types through natural language. It provides tools for media management, template messages, and real-time webhook processing without the risk of account bans.
    18
    47
    23
    MIT

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/dudu1111685/hermes_mcps'

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