Skip to main content
Glama

telegram_chat_read

Read-onlyIdempotent

Fetch up to 500 messages from one known Telegram chat, including attachments, reactions, permalinks, and read state. Use when asked what was said in a specific chat, not to find a chat by name.

Instructions

Fetches up to 500 messages with attachment metadata, reaction counts, a permalink per message and, where Telegram reports it, whether each one has been read. Use when the user asks what was said in one known chat. Do not use this to find a chat by name; call telegram_chats first, or telegram_search when the words matter more than the latest page. Reading does not mark the chat read; that is telegram_plan_mark_read. Page backwards with before_id; a t.me link to a message starts the page at that message. In a forum, topic_id (or a topic link) limits the page to one topic — without it the topics arrive interleaved. Reading never marks anything as seen.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
chatYesChat id, @username, or t.me link. A link to a specific message (t.me/name/123, t.me/c/123/456) starts the page at that message instead of at the newest one, and a topic link filters the page to that topic.
limitNoMessages to return.
searchNoOnly messages containing this text.
accountNoAccount label to use. Omit when exactly one account is configured.
topic_idNoOnly messages in this forum topic. A topic link (t.me/c/123/12/456 or ?thread=12) supplies it too. Refused on a chat that is not a forum, and cannot be combined with search. List topics with `chat topics`.
before_idNoReturn messages older than this id — the way to page backwards.
include_read_stateNoReport which messages have been read, using the chat's read pointers. Costs one extra call and marks nothing as read; turn it off to skip it.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare the safe-read profile, yet the description adds non-obvious behavior: reading never marks the chat as read, backwards paging via before_id, topic interleaving when topic_id is omitted, and that include_read_state costs an extra call. These are exactly the traits an agent can't derive from structured fields.

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?

Well front-loaded: purpose, then when-to-use, then routing. The only waste is the closing restatement 'Reading never marks anything as seen', which repeats the earlier 'Reading does not mark the chat read' sentence.

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 no output schema, the description still enumerates the return contents (messages, attachment metadata, reaction counts, permalinks, read flags). For a 7-parameter read tool, nothing an agent needs to call 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 semantics beyond the schema: that a message link starts the page at that message, that omitting topic_id interleaves topics, and the extra-call cost of read-state. It reinforces rather than merely restates the parameter docs.

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 ('Fetches ... messages') plus the scope ('one known chat', up to 500) and the payload contents. It explicitly distinguishes itself from telegram_chats and telegram_search, so an agent can route without opening a 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 explicit when-to-use ('what was said in one known chat'), when-not-to-use ('Do not use this to find a chat by name'), and names the concrete alternatives (telegram_chats, telegram_search, telegram_plan_mark_read) with the condition selecting each.

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