WAHA MCP Server
The WAHA MCP Server provides 50+ tools for comprehensive WhatsApp automation, enabling AI agents to manage messaging, chats, contacts, groups, and interactive workflows.
Agent-Grade Tools: Inbox triage (waha_inbox), chat lookup (waha_find_chat), LLM-ready conversation context (waha_get_chat_context), human-like replies (waha_reply), and autonomous workflows via ask_user_via_whatsapp (sends a question and blocks until the user replies).
Session Management: List, create, start, stop, restart, delete, and logout sessions; authenticate via QR code or pairing code; check auth status; capture WhatsApp Web screenshots.
Messaging: Send text (with mentions, reply-to, link previews), images, videos, voice, files, locations, contacts, and polls; react, forward, edit, delete, star/unstar, mark as read; retrieve messages with filters and pagination.
Chat Management: List, get, archive/unarchive, pin/unpin, mute/unmute, delete, and clear chats.
Contacts: List contacts, get info, check if a number exists on WhatsApp, block/unblock, get profile pictures.
Group Management: Create, list, and get group details; add/remove/promote/demote participants; update subject, description, and picture; join via invite links; get/revoke invite codes; leave groups.
Presence: Set online/offline status, get contact presence/last seen, show/stop typing indicators.
Status/Stories: Post text, image, or voice status updates; delete statuses.
Labels (WhatsApp Business): Get, create, delete, and update labels; add/remove labels from chats; find chats by label.
Provides comprehensive tools for automating WhatsApp accounts via the WAHA HTTP API, including messaging (text, media, polls), chat and group management, contact interactions, and real-time presence control.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@WAHA MCP ServerSend a WhatsApp message to 1234567890@c.us saying the report is ready"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Hermes MCPs
Personal WhatsApp + Telegram MCP servers for AI agents (hermes-agent, Claude, and any MCP client)
Documentation • Installation • Configuration • 🤖 Agent Setup • 🪽 Hermes Setup • Tools 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, 84waha_*tools) — via WAHA (WhatsApp HTTP API) on the GOWS engineTelegram (
dist/telegram/index.js, 15tg_*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: 15tg_*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.mdWAHA 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 build2. 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_SESSIONmakes every tool default to that session. Omit it only if you connect multiple WhatsApp accounts and want the tool to require an explicitsessionon 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:
Claude hits a question → asks via WhatsApp
You reply from your phone
Claude continues working immediately
Zero downtime! ⚡
📖 See also:
AGENT_SETUP.md- Setup + the ask/check-replies pattern for any MCP agentHERMES_SETUP.md- hermes-agent: config.yaml, tool selection, autonomy patternsskills/whatsapp-assistant/- WhatsApp behavioral playbook skill (agentskills.io format)skills/event-driven-whatsapp-watches/- bounded WAHA webhook watches that resume the exact opening Hermes sessionskills/telegram-assistant/- Telegram behavioral playbook skill
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 |
| Triage first. Chats sorted by recent activity with last-message previews — "what needs attention?" |
| Resolve a person/group name to a chatId (fuzzy, ranked). Use before any send/read when you only have a name |
| Primary reading tool. LLM-ready conversation rendering: names resolved, voice notes transcribed inline (Soniox), media summarized |
| Human-like answering: mark seen → typing indicator → proportional delay → send (anti-ban sequence in one call) |
| Create a bounded event-driven watch so a new incoming message wakes Hermes once |
| List active/closed watches without exposing secrets |
| Update objective, sender scope, permissions, expiry or wake target |
| Stop waking Hermes when the delegated work is finished |
Tool | Description |
| Transcribe a specific voice message via Soniox ( |
| Download incoming media — images returned inline so vision models can see them, larger files saved to a temp path |
| Fetch a single message (quoted-message resolution, fresh media URLs) |
Tool | Description |
| List all sessions and their statuses |
| Get detailed info about a session |
| Create a new session |
| Start a stopped session |
| Stop a running session |
| Restart a session |
| Delete a session permanently |
| Disconnect WhatsApp account from session |
| Visual debug — screenshot of the WhatsApp Web screen (returned as an image) |
Tool | Description |
| Get QR code for WhatsApp authentication |
| Request phone number pairing code |
| Check session authentication status |
Tool | Description |
| Send a text message (mentions, reply-to, link preview) |
| Send an image (local file or URL) |
| Send a video with auto-conversion |
| Send a voice message with auto-conversion |
| Send any document/file |
| Send a location pin |
| Send a contact vCard |
| Create and send a poll |
| React with emoji 👍❤️😂 |
| Forward a message to another chat |
| Get messages with pagination + timestamp/ack filters |
| Delete a message |
| Edit a sent message |
| Mark messages as read |
| Star/unstar a 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 |
| List all chats (sortable, paginated) |
| Get chat info (via overview lookup) |
| Archive/unarchive a chat |
| Mark a chat unread for human follow-up |
| Delete a 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 |
| Get contacts (paginated, sortable) |
| Get info about a contact |
| Get a contact's "about" status text |
| Check if number is on WhatsApp (verify before first-time sends!) |
| Save/edit a contact's name |
| Block/unblock a contact |
| Get profile picture URL |
Tool | Description |
| Create a new group |
| List all groups (lean payload by default) |
| Get detailed group info |
| List group participants |
| Add participants |
| Remove participants |
| Promote to admin |
| Demote from admin |
| Update group name |
| Update group description |
| Set group picture (local file or URL) |
| Join a group via invite link/code |
| Preview a group before joining |
| Admin-only messages/info settings |
| Leave a group |
| Get invite link |
| Revoke & regenerate link |
Tool | Description |
| Set online/offline status |
| Get contact's presence (last seen) |
| Subscribe to a contact's presence updates |
| Show typing indicator |
| Stop typing indicator |
| Send read receipts (see Messaging) |
Tool | Description |
| Post a text status (background color, font) |
| Post an image status (local file or URL) |
| Post a voice status (auto-converted to Opus) |
| Delete a posted status |
Tool | Description |
| Get all labels |
| Create a new label |
| Rename/recolor a label |
| Delete a label |
| Get labels of a chat |
| Replace a chat's label set |
| Find all chats with a label (triage loop) |
Tool | Description |
| Send a question via WhatsApp, return immediately with tracking info (non-blocking) |
| 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 GraphQLWhy 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 |
|
|
Group |
|
|
Channel |
|
|
Status |
|
|
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_SESSIONgrants 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 |
| Digest of unread chats — start here |
| Discover chats, resolve names to ids |
| Conversation rendered for reading; voice notes transcribed inline |
| Send messages/files, optional quote-reply |
| Act on messages |
| Per-chat or account-wide text search |
| Download media, transcribe voice |
| 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 changesRun Tests
npm testBuild 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.
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
WAHA (WhatsApp HTTP API) - The backbone of this integration
Model Context Protocol - Enabling AI-native tool integration
Anthropic - For Claude Desktop and MCP SDK
Built with ❤️ for the MCP community
Available Tools
63 toolsask_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:
Send your question via WhatsApp
This tool WAITS (blocking) for the user's reply
Returns the reply text to you
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!
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | The question to ask the user | |
| chatId | Yes | Chat ID to send question to (e.g. "1234567890@c.us") | |
| session | No | Session name | default |
| timeoutMinutes | No | How long to wait for reply (in minutes) | |
| pollIntervalSeconds | No | How often to check for new messages (in seconds) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | Group ID | |
| participants | Yes | Participant IDs to add (e.g. ["1234567890@c.us"]) | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| labelId | Yes | Label ID | |
| chatId | Yes | Chat ID to label | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| archive | No | true to archive, false to unarchive | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| contactId | Yes | Contact ID (e.g. "1234567890@c.us") | |
| block | No | true to block, false to unblock | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| phone | Yes | Phone number to check (e.g. "1234567890" without + or country prefix variation) | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Group name/subject | |
| participants | Yes | Participant IDs to add (e.g. ["1234567890@c.us"]) | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Label name | |
| color | No | Label color index | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Session name | default |
| webhookUrl | No | Webhook URL for events | |
| webhookEvents | No | Events to subscribe to (e.g. ["message", "session.status"]) | |
| enableStore | No | Enable NOWEB store for chats/contacts/messages history | |
| fullSync | No | Full sync (1 year history) vs partial (3 months) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| labelId | Yes | Label ID | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| messageId | Yes | Message ID to delete | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | Group ID | |
| participants | Yes | Participant IDs to demote | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| messageId | Yes | Message ID to edit | |
| text | Yes | New message text | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Source chat ID where the message is | |
| messageId | Yes | Message ID to forward | |
| toChatId | Yes | Destination chat ID | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| contactId | Yes | Contact ID (e.g. "1234567890@c.us") | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | Group ID (e.g. "1234567890@g.us") | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | Group ID | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | Group ID | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| session | No | Session name | default |
| limit | No | Number of messages to retrieve | |
| offset | No | Offset for pagination | |
| downloadMedia | No | Include media download URLs | |
| fromMe | No | Filter: only messages sent by me (true) or received (false) |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| contactId | Yes | Contact ID (e.g. "1234567890@c.us") | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| contactId | Yes | Contact or group ID | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | Group ID | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Session name | default |
| limit | No | Number of chats to retrieve | |
| offset | No | Offset for pagination |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Session name | default |
| limit | No | Number of groups to retrieve | |
| offset | No | Offset for pagination |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| session | No | Session name | default |
| messageIds | No | Specific message IDs to mark as read (optional, marks all if omitted) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| mute | No | true to mute, false to unmute | |
| duration | No | Mute duration in seconds (e.g. 86400 for 24h). Omit for indefinite. | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| pin | No | true to pin, false to unpin | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | Group ID | |
| participants | Yes | Participant IDs to promote | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| messageId | Yes | Message ID to react to | |
| reaction | Yes | Emoji reaction (e.g. "❤️", "👍"). Empty string to remove reaction. | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | Group ID | |
| participants | Yes | Participant IDs to remove | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| labelId | Yes | Label ID | |
| chatId | Yes | Chat ID | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Session name | default |
| phoneNumber | Yes | Phone number in international format without + (e.g. "12132132130") |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | Group ID | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| contactsId | Yes | Contact IDs to share (e.g. ["1234567890@c.us"]) | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| filePath | No | Local file path (e.g., "/tmp/document.pdf") | |
| fileUrl | No | URL of the file to send (can be HTTP URL or data: URL) | |
| mimetype | No | File MIME type (auto-detected if using filePath) | |
| filename | No | Display filename (auto-detected if using filePath) | |
| caption | No | File caption | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| imagePath | No | Local file path (e.g., "/tmp/photo.jpg") | |
| imageUrl | No | URL of the image to send | |
| caption | No | Image caption | |
| session | No | Session name | default |
| replyTo | No | Message ID to reply to |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| latitude | Yes | Latitude coordinate | |
| longitude | Yes | Longitude coordinate | |
| title | No | Location title/name | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| pollName | Yes | Poll question | |
| options | Yes | Poll options (at least 2) | |
| multipleAnswers | No | Allow multiple answers | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Status text | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID (e.g. "1234567890@c.us" for users, "1234567890@g.us" for groups) | |
| text | Yes | Message text | |
| session | No | Session name | default |
| replyTo | No | Message ID to reply to | |
| mentions | No | User IDs to mention (e.g. ["1234567890@c.us"]) or ["all"] for everyone | |
| linkPreview | No | Enable link preview generation |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| videoPath | No | Local file path (e.g., "/tmp/video.mp4") | |
| videoUrl | No | URL of the video to send (MP4 format preferred) | |
| caption | No | Video caption | |
| convert | No | Auto-convert to WhatsApp format | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| audioPath | No | Local file path (e.g., "/tmp/voice.mp3") | |
| audioUrl | No | URL of the audio file (OGG/Opus format preferred) | |
| convert | No | Auto-convert to Opus format (recommended for MP3/WAV) | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| presence | Yes | Presence status to set | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| messageId | Yes | Message ID | |
| star | No | true to star, false to unstar | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| chatId | Yes | Chat ID | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | Group ID | |
| description | Yes | New group description | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | Group ID | |
| imageUrl | Yes | URL of the image to set as group picture | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | Group ID | |
| subject | Yes | New group name | |
| session | No | Session name | default |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
Run WhatsApp Business campaigns from any AI assistant: contacts, segments, and broadcasts.
Give your AI agents a real WhatsApp number to send and receive messages.
WhatsApp CRM for AI agents: search contacts, read chats, manage the sales pipeline, send messages.
WhatsApp for your app or AI agent over OAuth2 — the same connections WASync runs inside your CRM.
Related MCP Servers
- AlicenseCqualityCmaintenanceEnables 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.100303MIT
- AlicenseBqualityDmaintenanceEnables 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.52229ISC
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to send WhatsApp messages, templates, and retrieve media through the WhatsApp Cloud API. Provides webhook handling and seamless integration with Meta's WhatsApp Business platform.23
- AlicenseAqualityDmaintenanceConnects 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.184723MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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