Skip to main content
Glama
GeiserX

telegram-archive-mcp

by GeiserX

get_media

Read-only

Retrieve the photo or file attached to a Telegram message; images come back scaled for viewing with message metadata, other files return details and a reason if not included.

Instructions

Get the photo or file attached to one message. A JPEG, PNG, WebP or GIF image comes back as an image you can look at, scaled to at most 1568 pixels on its longest side, after a JSON text block with the message's message_id, date, sender, text (the caption) and reply_to_msg_id, and the file's media_key, kind, file_name, mime_type, size_bytes, image_returned, width, height and scaled. Any other file returns only that JSON text block, with a note saying why the file is not included.

Input Schema

NameRequiredDescriptionDefault
chat_idYesChat ID (the chat's ref from list_chats)
message_idYesID of the message that carries the media

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.3.0

TDQS

A4.2/5.0
Behavior5/5

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

Despite only a readOnlyHint annotation, the description discloses rich behavioral detail: which formats return viewable images, the 1568px scaling on the longest side, the exact JSON prelude emitted, and that non-image files return only JSON with an explanatory note. This goes far beyond the annotation and fully characterizes the output behavior.

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 the core action and format-handling behavior in the first sentence, with return-structure details following. The enumeration of JSON fields is dense and slightly run-on, but given there is no output schema, each detail earns its place.

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 carries the full burden of explaining return values, and it does so thoroughly: JSON fields for the message and file, the image-return condition, and the fallback note. Nothing an agent needs to call and interpret the result is missing.

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 both parameters (chat_id, message_id) are already documented in the schema. The description adds no syntax or format guidance beyond what the schema provides, so the baseline 3 applies.

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 (Get) and resource (the photo or file attached to one message), clearly distinguishing it from sibling message tools like get_messages or get_pinned_messages that return text. An agent can tell exactly what this returns without opening the schema.

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

Usage Guidelines3/5

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

The purpose implies usage (fetch media for a known message), but there is no explicit when-to-use, when-not, or named alternative among siblings. The agent must infer that this is the tool for extracting attachments from a message id it already holds.

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