Skip to main content
Glama
oddrationale

groupme-mcp-server

by oddrationale

Read Messages

read_messages
Read-onlyIdempotent

Read and page through a GroupMe group or DM conversation history oldest first, with sender names resolved and attachments normalized. An empty page means no messages in range.

Instructions

Read messages from one GroupMe conversation, oldest first.

Use this to read or page through the history of a specific group or direct-message chat once you know its id (from list_conversations). Sender names are resolved and attachments are normalized (image URLs, reply/mention summaries). An empty page is a normal answer, not an error: it means the conversation has no messages in the requested range.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum messages to return (1-100). Direct chats may return fewer per page regardless of ``limit``.
since_idNoRead the most recent messages newer than this message id.
before_idNoRead messages older than this message id (use the previous page's ``next_before_id``). At most one of ``before_id`` and ``since_id`` may be given.
conversationYesWhich conversation to read: ``{"kind": "group", "group_id": ...}`` or ``{"kind": "direct", "other_user_id": ...}``.
response_formatNo``"concise"`` (default) for sender names, text, relative ages, and like counts; ``"detailed"`` adds sender ids, conversation ids, and ISO timestamps.concise

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
noteNo
messagesYes
next_before_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: sender names are resolved, attachments are normalized into image URLs and reply/mention summaries, and an empty page is explicitly a normal answer rather than an error.

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?

Three short sentences, front-loaded with the verb and scope, then usage, then normalization and empty-page semantics. Every sentence carries information an agent needs and nothing is repeated from the schema.

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?

An output schema exists, so return values need not be explained. The description covers the remaining agent-facing concerns for this tool: how to obtain the conversation id, how paging works, what normalization to expect, and how to interpret an empty result.

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

Parameters3/5

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

Schema description coverage is 100%, so limit, since_id, before_id, conversation and response_format are already fully documented in the schema, including the mutual exclusivity of before_id and since_id. The description adds no syntax or format detail beyond the schema, so the baseline 3 is correct.

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 and resource ('Read messages from one GroupMe conversation') plus a scoping detail ('oldest first') that an agent can act on. It also anchors the tool to the list_conversations sibling for obtaining the conversation id, distinguishing it from search_messages and get_conversation_context.

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 clear context: use it to read or page through one conversation's history once the id is known from list_conversations, and notes that empty pages are normal. It does not explicitly state when to prefer search_messages or get_highlights instead, so it falls short of a full when/when-not/alternative statement.

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