Skip to main content
Glama
wuapidev

wuapi MCP server

Official
by wuapidev

Read and answer stories

manage_stories
Destructive

Read, view, react to, reply to, or delete WhatsApp stories and statuses on a linked account, and see who viewed the stories the account posted.

Instructions

Stories (WhatsApp Status): read the ones the account's contacts posted in the last 24 hours, mark one as viewed, react or reply to it, and see or delete the ones the account posted (post with post_story). Reading stories tells the contact nothing; view does, so call it only when the user wants the contact to know. Contacts' stories arrive only for accounts with stories turned on.

Actions:

  • list: Contacts' stories, grouped by contact, the contact with the newest story first.

  • list_own: The stories the account posted in the last 24 hours, with how many contacts saw each.

  • get: One story. With fetchMedia, also its file's direct URL.

  • viewers: Who saw a story the account posted, with their reactions, the latest viewer first.

  • view: Tell the contact the account saw their story: the account then shows in the story's viewers. Only when the user asked for it. authorNotified: false in the answer means WhatsApp did not tell them (read receipts are off).

  • react: React to a contact's story with an emoji, or remove the reaction with an empty string. Only the story's author sees it.

  • reply: Reply to a contact's story with text: a message in the chat with its author, who sees it as a reply to their story.

  • delete: Delete a story the account posted, for everyone. Needs confirm: true.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textNoThe reply. Required for `reply`.
emojiNoOne emoji, such as a green heart. An empty string removes the reaction. Required for `react`.
limitNoPage size, 1 to 100. Default 20. Optional for `list`, `list_own`, `viewers`.
actionYesWhat to do. See the list of actions in the tool description.
cursorNo`nextCursor` from the previous page, to get the next one. Optional for `list`, `list_own`, `viewers`.
confirmNoMust be true. The story is deleted for every contact and cannot be restored. Only set it after the user asked for this or agreed to it. Required for `delete`.
storyIdNoA story id, from `list`, `list_own` or a webhook. A story the account posted has the id of its message. Required for `get`, `viewers`, `view`, `react`, `reply`, `delete`.
unviewedNo`true`: only the contacts with a story the account has not seen. Optional for `list`.
accountIdNoThe wuapi account id of the linked number to act as (from list_accounts). Required for every action.
contactIdNoA contact id (E.164 with + or `lid:<digits>`): only this contact's stories. Optional for `list`.
fetchMediaNoAlso download the story's file if needed and return its direct URL as `mediaFile`. Does not mark the story as viewed. Optional for `get`.
idempotencyKeyNoOptional. Reuse the same key when retrying this exact call: within 24 hours wuapi returns the first result instead of doing it twice. Optional for `view`, `reply`.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.10.0

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations: it explains that reading is silent while `view` notifies the contact (and that `authorNotified: false` means read receipts are off), that reactions are author-only, that `delete` removes the story for everyone and is irreversible, that `fetchMedia` does not mark as viewed, and that idempotencyKey exists for view/reply retries. The described write/delete behavior is consistent with destructiveHint=true and readOnlyHint=false.

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

Conciseness5/5

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

A tight front-loaded summary sentence establishes scope and the key risk (view vs silent read), followed by a scannable action list. Despite covering twelve parameters and eight actions, every sentence carries behavioral information and none is filler.

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

Completeness5/5

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

With an action-dispatch tool, high parameter count, and no output schema, the description supplies what an agent needs: per-action meaning, ordering guarantees (newest story/viewer first), destructive-action prerequisites, and named response fields like mediaFile and authorNotified. Nothing required to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real cross-field meaning: it defines what each `action` enum value does (the schema only says "See the list of actions"), why `confirm` must be true, and the notify/no-notify distinction that `view` and `authorNotified` hinge on. Remaining gaps (cursor/limit paging semantics) are already carried by the schema.

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 concrete verb+resource (read/answer WhatsApp stories) and enumerates the eight supported actions with their distinct semantics. It explicitly distinguishes itself from the sibling post_story ("post with post_story"), so an agent can route correctly 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?

Gives conditional guidance for the risky actions: `view` is "Only when the user asked for it," `delete` only after user agreement, and stories arrive only for accounts with stories enabled. It names post_story as the alternative for publishing. It does not, however, contrast itself with adjacent read tools like list_messages or chat tools, so routing to this tool vs those is left to inference.

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