Skip to main content
Glama

Turbo Notify: WhatsApp for AI agents

List messages in an inbox

list_messages
Read-onlyIdempotent

List messages for one number, newest first, received and sent.

Each item says who it is from and to, which number it belongs to, its direction, content_type, origin, a short preview, at, status and content_expired. Mentions, transcription and full media detail are only on get_message, so fetch the one message you care about rather than paging for detail.

To read a group, find its grp_ id with list_groups and pass it as group_id. contact_id returns what that contact sent or received, which in a group includes what they said there. direction keeps only inbound or outbound. Filters combine: group_id with contact_id answers what one person said in one group.

Ids belong to one number, so use the same number_alias you got them from: an id from another number answers not found. For the next page, pass back the cursor from the previous response together with the same filters.

Content older than the plan's retention window comes back with preview empty and content_expired true. The message, its sender and its group stay listed for 12 months.

Input Schema

NameRequiredDescriptionDefault
limitNoHow many items to return, 1-200. Defaults to 50.
cursorNoOpaque cursor for the next page. Pass back the `cursor` from the previous response, with the same filters; omit it for the first page.
group_idNoOnly the messages of one group (`grp_…`, from `list_groups`). The group must be one of this number's: an id from another number answers not found. Can be combined with `contact_id`.
directionNoOnly messages the number received (`inbound`) or sent (`outbound`). Absent means both.
contact_idNoOnly the messages this contact sent or received (`ct_…`, from `list_contacts`). In a group that includes what the contact said there. The contact must be one of this number's: an id from another number answers not found. With `group_id` too, you get what that contact said in that group.
number_aliasNoWhich of the organization's WhatsApp numbers this acts on: `main`, the alias of an extra number, or the number's `id` (`num_…`), which stays the same when the alias is renamed. Call `list_numbers` to see them. Defaults to the main number.main

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description adds genuinely new behavior: newest-first ordering, id scoping per number ('an id from another number answers not found'), pagination contract, and retention semantics where old content returns an empty preview with content_expired true while the message, sender and group remain listed 12 months.

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?

Four short paragraphs, front-loaded with purpose before filters, paging and retention, with no wasted filler. Slight redundancy with the already-descriptive schema parameter docs (cursor, number_alias) keeps it from a 5.

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?

For a six-parameter, zero-required listing tool with an output schema, everything needed for correct invocation is present: filtering model, pagination protocol, cross-number constraint, and the retention edge case that explains apparently empty previews. Return-value detail is delegated to the output schema, as expected.

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; the description earns one extra point by framing the semantics of filter combinations conceptually ('group_id with contact_id answers what one person said in one group') and by stressing that the same number_alias must be reused for ids and cursors. Much of the rest (group_id, contact_id, direction, cursor) restates the schema descriptions, so it does not exceed that.

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?

Opens with a specific verb and resource plus scope and ordering: 'List messages for one number, newest first, received and sent.' It then explicitly contrasts itself with get_message ('Mentions, transcription and full media detail are only on get_message'), so an agent can separate this list tool from the single-message sibling 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 Guidelines5/5

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

Gives concrete routing rules and conditions: use this for enumeration, call get_message for the one message whose detail you need, resolve a group's grp_ id via list_groups, use contact_id for what a contact sent or received, direction to restrict to inbound/outbound, and note that filters combine. It also states the cross-number failure mode and the cursor-plus-same-filters requirement for paging.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.