Skip to main content
Glama
rixile9999

tdl-mcp

by rixile9999

Download Telegram media from a chat

tg_download

Download media files from Telegram chats to a local directory, returning paths of new files. Filter by file extension or message ID; existing files are skipped.

Instructions

Download media files from one chat (by id or @username) to a local directory and return the absolute paths of newly downloaded files. Use extensions (csv, e.g. 'xlsx,pdf') to fetch only certain file types; since_id for 'everything new after message X'; last_n for 'the latest N media messages' (default 100). Already-present files are skipped (--skip-same).

Input Schema

NameRequiredDescriptionDefault
chatYesChat id or @username/domain (as shown by tg_chats)
destNoDestination directory (default ~/Downloads/telegram)
last_nNoHow many recent media messages to consider (default 100)
since_idNoOnly messages with id > since_id (overrides last_n)
extensionsNoComma-separated file extensions to include, e.g. 'xlsx,pdf'

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.1.0
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / since_id / maximum
      Added value: +9007199254740991
  2. First observedv1.0.0

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the skip-existing behavior ('Already-present files are skipped'), the default of 100, and that since_id overrides last_n. It omits operational context such as Telegram auth/login requirements, rate limits, and whether the destination directory is created automatically.

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 return value before the parameter notes, and every clause is functional. It is slightly dense with parenthetical parameter guidance, but there is no filler.

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

Completeness4/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 correctly states the return ('absolute paths of newly downloaded files'), and it covers the key filters and skip behavior. The main gap for a network-dependent tool is the absence of any authentication or failure-mode context.

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 goes beyond the schema by translating parameters into intent phrases ('everything new after message X', 'the latest N media messages'), which helps an agent map a natural request onto the right parameter rather than merely matching names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Download media files from one chat'), names accepted chat identifiers, and specifies what is returned (absolute paths of newly downloaded files). It is clear and testable, but does not explicitly differentiate itself from the sibling tg_download_url, which an agent could confuse it with.

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?

Usage is implied rather than stated: extensions for filtering by file type, since_id for incremental fetching, last_n for the latest N. There is no explicit 'use this when / use tg_download_url instead when' guidance against the sibling tools.

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