Skip to main content
Glama
razvangirgiz

wazap-mcp

by razvangirgiz

Get every WhatsApp conversation from the last N hours

get_recent_messages
Read-onlyIdempotent

Retrieve recent WhatsApp messages grouped by chat in a single call, replacing multiple list and read operations. Excludes system notices by default for cleaner conversation counts.

Instructions

Everything that happened recently, grouped by chat. This is the catch-up tool: one call instead of list_chats plus a read_messages per chat. WhatsApp's own notices — device linking, group membership changes, encryption notices — are left out so the counts are conversation; pass include_system to see them.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
hoursNoLook-back window in hours (1-168)
typesNoKeep only these message types; omit for every type. The limit counts matching messages, so ["call"] returns that many calls, not that many messages of which some are calls.
filterNoRestrict to unread chats, groups, or one-to-one chatsall
compactNoLeave out media without a caption and messages with no words in them, fold what one person sent in a row into one line, and say per chat what was left out. About half the size; use it for a routine catch-up
account_idNoRegistry account id (default, work, …). Omit to resolve from chat_id or message_id, or the default account.
include_systemNoInclude WhatsApp's own system notices, which are excluded from the bodies and the counts by default
include_previewsNoAttach a small JPEG of each photo, newest first, up to 12 per call, so you can see what was sent: the preview WhatsApp shipped when there is one, otherwise the photo is downloaded once and shrunk on the machine running wazap

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv0.15.0
    • addedInput schema / properties / account_id
      Added value: +{
      +  "description": "Registry account id (default, work, …). Omit to resolve from chat_id or message_id, or the default account.",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / compact
      Added value: +{
      +  "default": false,
      +  "description": "Leave out media without a caption and messages with no words in them, fold what one person sent in a row into one line, and say per chat what was left out. About half the size; use it for a routine catch-up",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / include_previews
      Added value: +{
      +  "default": false,
      +  "description": "Attach a small JPEG of each photo, newest first, up to 12 per call, so you can see what was sent: the preview WhatsApp shipped when there is one, otherwise the photo is downloaded once and shrunk on the machine running wazap",
      +  "type": "boolean"
      +}
  2. Changed2 schema fields changedv0.10.0
    • addedInput schema / properties / include_system
      Added value: +{
      +  "default": false,
      +  "description": "Include WhatsApp's own system notices, which are excluded from the bodies and the counts by default",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / types
      Added value: +{
      +  "description": "Keep only these message types; omit for every type. The limit counts matching messages, so [\"call\"] returns that many calls, not that many messages of which some are calls.",
      +  "items": {
      +    "enum": [
      +      "text",
      +      "image",
      +      "video",
      +      "audio",
      +      "voice",
      +      "document",
      +      "sticker",
      +      "location",
      +      "contact",
      +      "poll",
      +      "reaction",
      +      "deleted",
      +      "view_once",
      +      "call",
      +      "system",
      +      "unknown"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  3. First observedv0.9.3

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description adds genuine behavioral context beyond them: WhatsApp system notices are excluded from bodies AND counts by default, with include_system to reveal them. It does not disclose output structure or pagination/size limits, keeping it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and the replacement relationship; three sentences with little waste. The em-dash aside about left-out notices is slightly dense but earns its place by explaining the count semantics.

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

Completeness4/5

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

For a read-only, all-optional-parameter tool with 100% schema coverage and no output schema, the description covers scope, default exclusion behavior, and sibling routing adequately. Return-shape detail is not required given the schema and absence of an output contract.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all 7 optional parameters in detail. The description restates only the include_system default behavior, adding marginal value over what the structured fields provide; baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb+resource and scope: 'everything that happened recently, grouped by chat' and self-labels as 'the catch-up tool.' Crucially it distinguishes itself from siblings by declaring it replaces 'list_chats plus a read_messages per chat,' so an agent can route without opening either schema.

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

Usage Guidelines4/5

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

Provides clear usage context ('catch-up') and names the alternatives it consolidates (list_chats + read_messages). It also flags the include_system parameter for system notices. It stops short of explicit when-not guidance, e.g., when to prefer search_messages or get_unanswered instead.

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