MCP server for interacting with your LINE Official Account
Telegram MCP Server (TDLib) is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Telegram MCP Server (TDLib)
Bring Telegram context into your AI assistant: catch up on conversations, find a lost message, research public groups and draft replies for review. Uses your own Telegram account through TDLib. Free, open source and self-hosted under Apache-2.0.
WHAT YOU CAN DO
• Summarize recent conversations and identify messages awaiting a reply.
• Search chat history and retrieve conversation context.
• Draft replies in your AI conversation before deciding what to send.
• Review community activity with a bounded, read-only workflow.
• Opt in to messaging, media, scheduling and moderation when needed.
115 tools are available across reader, inbox, research, community-admin and all profiles. The tools your client sees depend on your selected profile and permissions.
SAFE FIRST RUN
Read-only is the default: write and quota-consuming tools are hidden until explicitly enabled. Start with MCP_TOOL_PROFILE=reader and MCP_READ_ONLY=true. Try: “Summarize my last 20 conversations. Do not send or modify anything.”
For write workflows, enable a suitable profile deliberately. Human approval for destructive actions is available through MCP_DESTRUCTIVE_APPROVAL=auto. Account isolation, scoped permissions, audit logs and optional send idempotency support controlled use.
INSTALL AND CONNECT
Download a runtime-inclusive package for Windows, macOS or Linux from GitHub Releases; no separate JDK or build tools are needed. Homebrew, Scoop and Docker options are documented in the README.
1. Supply your own Telegram application API ID and hash from my.telegram.org.
2. Authorize your account locally: telegram-mcp auth --method qr
3. Check readiness: telegram-mcp session doctor
4. Generate client configuration: telegram-mcp config --client codex
Use --client claude, claude-code, cursor or vscode for the other configuration formats. Let your AI client launch the STDIO server. A managed local daemon and Streamable HTTP are also available; see the compatibility guide for client-specific requirements.
PRIVACY AND REQUIREMENTS
This listing is software you run yourself, not a hosted Telegram account or managed endpoint. Keep Telegram credentials and session files on your own machine. Tool results pass selected Telegram data to your chosen AI client/model; its data policies apply. A Telegram account, Telegram application credentials and an MCP-compatible AI client are required. AI provider charges, if any, are separate.
SOURCE, SETUP AND SUPPORT
Quickstart: https://github.com/tolboy/telegram-mcp-tdlib#safe-first-run
Releases: https://github.com/tolboy/telegram-mcp-tdlib/releases
Client compatibility: https://github.com/tolboy/telegram-mcp-tdlib/blob/master/docs/MCP_CLIENT_COMPATIBILITY.md
Task recipes: https://github.com/tolboy/telegram-mcp-tdlib/tree/master/docs/recipes
Report bugs or request features: https://github.com/tolboy/telegram-mcp-tdlib/issues
Security policy: https://github.com/tolboy/telegram-mcp-tdlib/blob/master/SECURITY.md
Feedback on setup and real-world workflows is welcome. Please remove credentials and private chat content from public reports.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --env 'TDLIB_API_ID=${TDLIB_API_ID}' --env 'TDLIB_API_HASH=${TDLIB_API_HASH}' --transport stdio tolboy-telegram-mcp '--' docker run -i --rm --platform linux/amd64 -e TDLIB_API_ID -e TDLIB_API_HASH ghcr.io/tolboy/telegram-mcp-tdlib:1.17.3-stdio
# 2 — ask your agent for something these tools do
# archive_chat, ban_user, close_forum_topic and 112 more
It needs TDLIB_API_ID, TDLIB_API_HASH: this reads them from your environment, so export them first.
Telegram MCP Server (TDLib) costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one runs on your machine: your client starts Telegram MCP Server (TDLib) as a process under your own user, with your files and your network, so the tool surface below is what it can do to your computer rather than to a server somewhere else. It has not been scanned here, so read the surface, and its source, before you approve it.
This is a public server: you run it yourself and this marketplace is not in the path. You need Docker installed and running. Only the required variables are passed into the container. To set an optional one (TDLIB_PHONE_NUMBER, TDLIB_AUTH_CODE, TDLIB_2FA_PASSWORD, MCP_READ_ONLY, MCP_TOOL_PROFILE), add -e NAME before the image name and give it a value in the entry’s env: an unset -e would clear the default the image sets. Claude Code registers it in one command; --scope user makes it available in every project. Claude Code reads TDLIB_API_ID (Telegram API ID from my.telegram.org), TDLIB_API_HASH (Telegram API hash from my.telegram.org) from your environment each time it starts the server, so the value stays out of its config: export them in your shell profile (macOS, Linux), or run setx TDLIB_API_ID …, setx TDLIB_API_HASH … and open a new terminal (Windows). The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user --env 'TDLIB_API_ID=${TDLIB_API_ID}' --env 'TDLIB_API_HASH=${TDLIB_API_HASH}' --transport stdio tolboy-telegram-mcp '--' docker run -i --rm --platform linux/amd64 -e TDLIB_API_ID -e TDLIB_API_HASH ghcr.io/tolboy/telegram-mcp-tdlib:1.17.3-stdioReconnect, or start a new session, and the tools appear in the model’s tool list.
It reaches a system of yours, so it needs settings only you can give it: TDLIB_API_ID — Telegram API ID from my.telegram.org; TDLIB_API_HASH — Telegram API hash from my.telegram.org. You set them in your own client’s config, on your machine — this marketplace never holds it.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
115 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Archive a Telegram chat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier to archive |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Ban a user from a Telegram group/channel (destructive, requires confirmation)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier |
| user_id | number | yes | User ID to ban |
| confirmed | boolean | no | Set to true to confirm this destructive operation |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Close a forum topic in a Telegram supergroup
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Forum-enabled supergroup chat identifier (ID/@username/+phone) |
| message_thread_id | string/number | no | Forum topic message thread ID |
| topic_id | string/number | no | Alias for message_thread_id |
| thread_id | string/number | no | Alias for message_thread_id |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Create a Telegram chat folder or replace an existing folder's complete configuration
| Parameter | Type | Required | Notes |
|---|---|---|---|
| folder_id | number | no | Existing folder ID to replace; omit to create a new folder |
| title | string | yes | Folder title |
| icon_name | string | no | Optional Telegram folder icon name |
| color_id | number | no | Telegram folder color ID (default 0) |
| is_shareable | boolean | no | Whether the folder may be shared |
| pinned_chats | array | no | Pinned chat identifiers |
| included_chats | array | no | Explicitly included chat identifiers |
| excluded_chats | array | no | Explicitly excluded chat identifiers |
| exclude_muted | boolean | no | — |
| exclude_read | boolean | no | — |
| exclude_archived | boolean | no | — |
| include_contacts | boolean | no | — |
| include_non_contacts | boolean | no | — |
| include_bots | boolean | no | — |
| include_groups | boolean | no | — |
| include_channels | boolean | no | — |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Create a new Telegram supergroup, forum-enabled supergroup, or broadcast channel (requires confirmation)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| title | string | yes | Channel or supergroup title (1-128 chars) |
| description | string | no | Description / about text (optional, max 255 chars) |
| is_supergroup | boolean | no | If true creates a supergroup, otherwise a broadcast channel (default false) |
| is_forum | boolean | no | If true creates a forum-enabled supergroup with topics (requires is_supergroup=true) |
| confirmed | boolean | no | Set to true to confirm this operation |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Create a new Telegram group with initial members
| Parameter | Type | Required | Notes |
|---|---|---|---|
| title | string | yes | Group title |
| user_ids | array | yes | List of user IDs to add as initial members |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Create a private Telegram supergroup with optional forum topics and photo (atomic; requires confirmation)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| title | string | yes | Supergroup title (1-128 chars) |
| description | string | no | Description (optional, max 255 chars) |
| enable_forum_topics | boolean | no | Whether to enable forum topics (default true) |
| topics | array | no | Optional ordered list of forum topics to pre-create |
| photo_path | string | no | Optional local image path (JPEG/PNG) to set as chat photo |
| confirmed | boolean | no | Set to true to confirm this destructive operation |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Create a forum topic in a Telegram supergroup with topics enabled
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Forum-enabled supergroup chat identifier (ID/@username/+phone) |
| name | string | yes | Topic name (1-128 chars) |
| icon_color | string/number | no | Optional topic icon color. Allowed: 0x6FB9F0, 0xFFD67E, 0xCB86DB, 0x8EEE98, 0xFF93B2, 0xFB6F5F |
| custom_emoji_id | string/number | no | Optional custom emoji ID for the topic icon |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Delete a Telegram chat folder without leaving its chats
| Parameter | Type | Required | Notes |
|---|---|---|---|
| folder_id | number | yes | — |
| confirmed | boolean | no | Required when confirmation mode is enabled |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Remove the chat photo (requires confirmation)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier |
| confirmed | boolean | no | Set to true to confirm this destructive operation |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Demote an admin to regular member in a Telegram group/channel
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier |
| user_id | number | yes | User ID to demote |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Replace the chat photo with the supplied local image
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier |
| file_path | string | yes | Local image path (JPEG/PNG) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Change the title of a Telegram group or channel
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier |
| title | string | yes | New chat title |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Edit a forum topic title or custom emoji icon in a Telegram supergroup
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Forum-enabled supergroup chat identifier (ID/@username/+phone) |
| message_thread_id | string/number | no | Forum topic message thread ID |
| topic_id | string/number | no | Alias for message_thread_id |
| thread_id | string/number | no | Alias for message_thread_id |
| name | string | no | New topic name (1-128 chars) |
| title | string | no | Alias for name |
| custom_emoji_id | string/number | no | Optional new custom emoji ID for the topic icon |
| edit_icon_custom_emoji | boolean | no | Whether to update the topic icon; defaults to true when custom_emoji_id or remove_custom_emoji is supplied |
| remove_custom_emoji | boolean | no | Remove the current custom emoji icon |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
List administrators of a Telegram group, supergroup, or channel
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username/+phone) |
| limit | number | no | Max admins to return (1-200, default 50) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
List banned users of a Telegram group, supergroup, or channel
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username/+phone) |
| limit | number | no | Max banned users to return (1-200, default 50) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Get a bot command menu for a Telegram audience scope
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scope | string | yes | — |
| language_code | string | no | — |
| chat_id | string/number | no | — |
| user_id | number | no | — |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Get the complete configuration of one Telegram chat folder
| Parameter | Type | Required | Notes |
|---|---|---|---|
| folder_id | number | yes | Telegram chat folder ID |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Get detailed information about a Telegram chat (type, members, description)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Get default permissions for a Telegram group or channel
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | — |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Get or create an invite link for a Telegram chat (requires admin)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username/+phone) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
List members of a Telegram group, supergroup, or channel
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self |
| query | string | no | Filter members by name or username (optional) |
| limit | number | no | Max members to return (1–200, default 50) |
| offset | number | no | Pagination offset (default 0) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Get the complete Telegram privacy-rule set for one account setting
| Parameter | Type | Required | Notes |
|---|---|---|---|
| setting | string | yes | — |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Get the chat event log (admin actions) for a supergroup or channel
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (supergroup/channel) |
| limit | number | no | Max events (1–100, default 50) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Invite users to an existing Telegram group or supergroup
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier of the group |
| user_ids | array | yes | List of user IDs to invite |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Join a Telegram chat via invite link (requires confirmation)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| link | string | yes | Telegram invite link (e.g. https://t.me/+AbCdEfG or https://t.me/joinchat/AbCdEfG) |
| confirmed | boolean | no | Set to true to confirm joining the chat |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Leave a Telegram chat/group/channel (destructive, requires confirmation)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier to leave |
| confirmed | boolean | no | Set to true to confirm this destructive operation |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
List Telegram chat folders known to TDLib for the selected account
| Parameter | Type | Required | Notes |
|---|---|---|---|
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
List Telegram chats with optional filtering by type and unread status
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Max number of chats to return (1–200, default 50) |
| filter | string | no | Filter chats by type (default: all) |
| unread_only | boolean | no | Only return chats with unread messages (default: false) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
List invite links created by the current account for a Telegram chat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username) |
| include_revoked | boolean | no | List revoked links instead of active ones (default false) |
| limit | number | no | Max links to return (default 20, max 100) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
List forum topics in a Telegram supergroup
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Supergroup chat identifier (ID/@username/+phone) |
| query | string | no | Filter topics by name (optional) |
| limit | number | no | Max topics to return (1-100, default 50) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Mute notifications for a Telegram chat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier to mute |
| duration | number | no | Mute duration in seconds (0 = forever, default: forever) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Promote a user to admin in a Telegram group/channel
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier |
| user_id | number | yes | User ID to promote |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Reopen a closed forum topic in a Telegram supergroup
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Forum-enabled supergroup chat identifier (ID/@username/+phone) |
| message_thread_id | string/number | no | Forum topic message thread ID |
| topic_id | string/number | no | Alias for message_thread_id |
| thread_id | string/number | no | Alias for message_thread_id |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Reorder Telegram chat folders to the supplied complete ID sequence
| Parameter | Type | Required | Notes |
|---|---|---|---|
| folder_ids | array | yes | Complete list of folder IDs in the desired order |
| main_list_position | number | no | 0-based position of the main chat list among the folders (default 0) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Revoke a Telegram chat invite link so it can no longer be used to join
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username) |
| invite_link | string | yes | The exact invite link to revoke |
| confirmed | boolean | no | Required when confirmation mode is enabled |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Search the global catalog of public Telegram chats
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Search query (username prefix or title) |
| limit | number | no | Max results (1–100, default 20) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Replace a member's complete administrator-rights set. Every omitted right is revoked.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | — |
| user_id | number | yes | — |
| rights | object | yes | Complete replacement; omitted rights are false |
| confirmed | boolean | no | Required when confirmation mode is enabled |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Replace a bot command menu for a Telegram audience scope. Telegram rejects this operation for user accounts.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scope | string | yes | — |
| language_code | string | no | — |
| chat_id | string/number | no | — |
| user_id | number | no | — |
| commands | array | yes | — |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Replace the description of a Telegram group, supergroup, or channel
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username) |
| description | string | yes | New description (max 255 chars; empty string clears it) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Enable or disable forum topics in a Telegram supergroup
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Supergroup chat identifier (ID/@username/+phone) |
| enabled | boolean | no | Whether forum topics must be enabled (default true) |
| has_forum_tabs | boolean | no | Whether Telegram should show forum tabs when enabling topics (default true) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Update selected default group permissions; omitted flags preserve their current values
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | — |
| permissions | object | yes | One or more permission flags; omitted flags keep their current value |
| confirmed | boolean | no | Required when confirmation mode is enabled |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Set member-specific group permissions without banning the member; omitted flags inherit the current group default
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | — |
| user_id | number | yes | — |
| permissions | object | yes | — |
| until_date | number | no | Unix timestamp; 0 means no expiry |
| is_member | boolean | no | — |
| confirmed | boolean | no | Required when confirmation mode is enabled |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Replace one Telegram privacy-rule set. Specify the base rule and any explicit user/chat exceptions.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| setting | string | yes | — |
| base_rule | string | yes | — |
| allow_user_ids | array | no | — |
| restrict_user_ids | array | no | — |
| allow_chat_ids | array | no | — |
| restrict_chat_ids | array | no | — |
| allow_bots | boolean | no | — |
| allow_premium_users | boolean | no | — |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Set the slow-mode delay of a Telegram supergroup (0 disables slow mode)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Supergroup identifier (ID/@username) |
| delay_seconds | number | yes | Seconds between messages per member: 0 (off), 10, 30, 60, 300, 900, or 3600 |
| confirmed | boolean | no | Required when confirmation mode is enabled |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Subscribe to a public Telegram channel or supergroup by username
| Parameter | Type | Required | Notes |
|---|---|---|---|
| channel | string | yes | Public channel or supergroup username (e.g. @channel_name or channel_name) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Unarchive a Telegram chat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier to unarchive |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Unban a user from a Telegram group/channel
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier |
| user_id | number | yes | User ID to unban |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Unmute notifications for a Telegram chat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier to unmute |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Clear the draft message on a chat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
List chats with persisted draft messages
| Parameter | Type | Required | Notes |
|---|---|---|---|
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Save a draft message on a chat (optionally as a reply)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier |
| text | string | yes | Draft text |
| reply_to_message_id | number | no | Optional message being replied to |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Download media from a Telegram message to a local file
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self |
| message_id | number | yes | ID of the message containing media to download |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Get metadata for media attached to a Telegram message (type, size, dimensions)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self |
| message_id | number | yes | ID of the message containing media |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
List installed sticker sets for the current account
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Max sticker sets to return (1–200, default 50) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Send a local file to a Telegram chat (validated against security policy)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self |
| file_path | string | yes | Local file path to upload (must be within allowed roots) |
| caption | string | no | Optional caption for the file |
| idempotency_key | string | no | Stable key for one intended send; reuse to recover without sending again |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Send a sticker file to a Telegram chat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier |
| file_path | string | yes | Local sticker file path (WEBP/TGS/WEBM) |
| emoji | string | no | Optional associated emoji |
| idempotency_key | string | no | Stable key for one intended send; reuse to recover without sending again |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Send a voice note (OGG/Opus) to a Telegram chat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username/+phone) |
| file_path | string | yes | Local OGG/Opus voice file path |
| duration | number | no | Voice duration in seconds (optional) |
| caption | string | no | Optional caption |
| idempotency_key | string | no | Stable key for one intended send; reuse to recover without sending again |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Request Telegram's native transcript for a voice note; requires Premium or an available Telegram trial allowance and does not send a new message
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self |
| message_id | number | yes | ID of the voice-note message to transcribe |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Cancel a scheduled Telegram message before it is sent
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | — |
| message_id | string/number | yes | — |
| confirmed | boolean | no | Required when confirmation mode is enabled |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Permanently close a Telegram poll so no further votes are accepted
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username/+phone) |
| message_id | number | yes | Message ID containing the poll |
| confirmed | boolean | no | Required when confirmation mode is enabled |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Create and send a poll in a Telegram chat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username/+phone) |
| question | string | yes | Poll question (1-255 chars) |
| options | array | yes | Poll options (2-10 strings, each 1-100 chars) |
| is_anonymous | boolean | no | Anonymous votes (default true) |
| allow_multiple_answers | boolean | no | Allow multiple answers (default false) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Delete one or more messages from a Telegram chat (destructive, requires confirmation)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self |
| message_ids | array | yes | List of message IDs to delete |
| revoke | boolean | no | Delete for all participants (default: true) |
| confirmed | boolean | no | Set to true to confirm this destructive operation |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Edit the text of an existing message in a Telegram chat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self |
| message_id | number | yes | ID of the message to edit |
| text | string | yes | New message text (max 4096 characters) |
| parse_mode | string | no | Text formatting mode (default: plain) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Forward messages from one Telegram chat to another
| Parameter | Type | Required | Notes |
|---|---|---|---|
| from_chat_id | string/number | yes | Source chat identifier |
| to_chat_id | string/number | yes | Destination chat identifier |
| message_ids | array | yes | List of message IDs to forward |
| idempotency_key | string | no | Stable key for one intended send; reuse to recover without sending again |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Retrieve recent messages from a Telegram chat with pagination support
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self |
| limit | number | no | Number of messages to retrieve (1–100, default 20) |
| from_message_id | number | no | Start from this message ID for pagination (0 = latest) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Retrieve messages surrounding a specific target message for context
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username/+phone) |
| message_id | number | yes | Target message ID |
| context_size | number | no | Total messages around the target (default 6, max 100) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Create a shareable Telegram link for a message without modifying it
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username/+phone) |
| message_id | number | yes | Message ID to link |
| for_album | boolean | no | Link the whole media album when available (default false) |
| in_message_thread | boolean | no | Keep the link inside the current message thread (default false) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Get reaction counts for a message and list senders when Telegram permits it
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username/+phone) |
| message_id | number | yes | Target message ID |
| limit | number | no | Max reactions to return (1-100, default 50) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
List users who viewed a message where Telegram exposes read receipts (small groups, recent outgoing messages)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username/+phone) |
| message_id | number | yes | Outgoing message ID to inspect |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Get messages around a specific message ID for context
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self |
| message_id | number | yes | Target message ID to get context around |
| context_size | number | no | Number of messages before and after (1–50, default 5) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Get all pinned messages in a Telegram chat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Read the selected account's saved send receipt. SENT confirms a stored final message ID; UNKNOWN requires checking delivery, never automatic resend; NOT_FOUND means no saved reservation. An active send returns OPERATION_IN_PROGRESS.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Destination chat identifier, as used for the send. |
| idempotency_key | string | yes | Key supplied to send_message or reply_to_message. |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
List inline-keyboard buttons attached to a Telegram message
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username/+phone) |
| message_id | number | yes | Target message ID |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
List messages scheduled for a Telegram chat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Mark messages as read in a Telegram chat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self |
| message_ids | array | yes | List of message IDs to mark as read |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Resolve a t.me message link and return the referenced message
| Parameter | Type | Required | Notes |
|---|---|---|---|
| link | string | yes | Telegram message link (e.g. https://t.me/c/123456/789 or https://t.me/channel/123) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Pin a message in a Telegram chat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self |
| message_id | number | yes | Message ID to pin |
| disable_notification | boolean | no | Pin silently without notification (default: false) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Press a callback or URL inline-keyboard button on a message
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username/+phone) |
| message_id | number | yes | Target message ID |
| button_index | number | no | Zero-based flattened button index |
| button_text | string | no | Match button by its visible text (case-insensitive) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Remove an emoji reaction previously placed on a message
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username/+phone) |
| message_id | number | yes | Target message ID |
| emoji | string | yes | Emoji of the reaction to remove |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Reply to a specific message in a Telegram chat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| idempotency_key | string | no | Optional unique reply key (1-128 ASCII letters, digits, '.', '_', ':', '-'). Identical retries return a saved receipt without sending again. UNKNOWN requires checking delivery. |
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self |
| message_id | number | yes | ID of the message to reply to |
| text | string | yes | Reply text (max 4096 characters) |
| parse_mode | string | no | Text formatting mode (default: plain) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Change the send time of a scheduled Telegram message
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | — |
| message_id | string/number | yes | — |
| send_at | string/number | yes | — |
| repeat_period_seconds | number | no | — |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Schedule a Telegram text message for a future time
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier |
| text | string | yes | Message text |
| send_at | string/number | yes | Future ISO-8601 instant or Unix epoch seconds |
| repeat_period_seconds | number | no | Optional repeat period in seconds; 0 disables repetition |
| disable_notification | boolean | no | Send without notification |
| parse_mode | string | no | — |
| idempotency_key | string | no | Stable key for one intended send; reuse to recover without sending again |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Search messages across all Telegram chats
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Search query (max 256 characters) |
| limit | number | no | Max results to return (1-100, default: 20) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Search messages in a Telegram chat by keyword or phrase
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self |
| query | string | yes | Search query string |
| limit | number | no | Max results (1–100, default 20) |
| offset | number | no | Pagination offset message ID (default 0) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Send a text message to a Telegram chat with optional HTML/Markdown formatting
| Parameter | Type | Required | Notes |
|---|---|---|---|
| idempotency_key | string | no | Optional unique send key (1-128 ASCII letters, digits, '.', '_', ':', '-'). Reuse with identical parameters to retrieve the stored receipt without sending again. Keyed calls return a delivery receipt; |
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self |
| text | string | yes | Message text (max 4096 characters) |
| parse_mode | string | no | Text formatting mode (default: plain) |
| message_thread_id | string/number | no | Optional forum topic message thread ID |
| reply_markup | object | no | Optional reply markup. Either a custom reply keyboard or a remove-keyboard marker. |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Add an emoji reaction to a Telegram message
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username/+phone) |
| message_id | number | yes | Target message ID |
| emoji | string | yes | Standard emoji to react with |
| is_big | boolean | no | Use the big-animation reaction (default false) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Unpin a message in a Telegram chat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self |
| message_id | number | yes | Message ID to unpin |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Vote in a Telegram poll by selecting option indexes
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier (ID/@username/+phone) |
| message_id | number | yes | Message ID containing the poll |
| option_ids | array | yes | 0-based option indexes to vote for; empty retracts the vote where Telegram allows it |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Return a compact Telegram connector manifest for orchestrators
No parameter schema on file.
List configured Telegram account labels available to this MCP client. Labels are safe routing identifiers, not profile names or phone numbers.
No parameter schema on file.
Register a Telegram chat as an internal admin context with looser anti-spam thresholds (destructive, requires confirmation)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Numeric Telegram chat ID to register as internal admin context |
| confirmed | boolean | no | Set to true to confirm loosening anti-spam limits for this chat |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Read-only discovery of public Telegram chats; honors the optional configured chat allowlist.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Search query (username prefix or title) |
| limit | number | no | Max results. Clamped by public-search.limits.max-chats-per-search. |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Read-only bounded export of Telegram chat messages by date, with optional query-term search fanout.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | Chat identifier: numeric ID, @username, +phone, or the canonical value self. |
| since | string/number | no | Inclusive lower date bound. ISO instant, yyyy-MM-dd, or unix seconds. |
| until | string/number | no | Inclusive upper date bound. ISO instant, yyyy-MM-dd, or unix seconds. |
| limit | number | no | Max unique messages to return (1-500, default 200). |
| query_terms | array | no | Optional product/intent search terms used to supplement history export. |
| include_history | boolean | no | Whether to supplement query results with normal get_history pagination (default true). |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Read-only search across multiple chats using a primary query and optional caller-supplied multilingual variants.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chats | array | yes | Chat identifiers (numeric IDs or @usernames). |
| query | string | yes | Primary search query in any language. |
| query_variants | array | no | Optional equivalent spellings, synonyms, or translations supplied by the caller; each is searched independently. |
| limit_per_chat | number | no | Max messages per chat (clamped by public-search config). |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Page through persistent observed message changes. Gaps require history reconciliation; not a Telegram-wide changelog.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| cursor | string | no | — |
| limit | integer | no | — |
| max_chars | integer | no | — |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Compact conversation page with stable message IDs; pass nextMessageId as from_message_id for an exclusive older-than cursor.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| chat_id | string/number | yes | — |
| limit | integer | no | — |
| from_message_id | integer | no | — |
| max_chars | integer | no | — |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Persistent pull-driven export: start, resume one page, status, read page, cancel or delete. Jobs are scoped to account and client.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| action | string | yes | — |
| chat_id | string/number | no | — |
| job_id | string | no | — |
| page | integer | no | — |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Unread inbox snapshot with bounded normalized JSON output; no read receipts are changed.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | integer | no | — |
| max_chars | integer | no | — |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Add a user to the Telegram address book
| Parameter | Type | Required | Notes |
|---|---|---|---|
| user_id | number | yes | Telegram user ID |
| first_name | string | yes | Contact's first name |
| last_name | string | no | Contact's last name (optional) |
| phone_number | string | no | Contact's phone number (optional) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Block a Telegram user (destructive, requires confirmation)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| user_id | number | yes | Telegram user ID to block |
| confirmed | boolean | no | Set to true to confirm this destructive operation |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Remove a user from the Telegram address book (destructive, requires confirmation)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| user_id | number | yes | Telegram user ID to remove from contacts |
| confirmed | boolean | no | Set to true to confirm this destructive operation |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Delete the current user's profile photo (requires confirmation)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| photo_id | number | no | Optional specific photo ID (defaults to primary photo) |
| confirmed | boolean | no | Set to true to confirm this destructive operation |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Get the list of blocked users/senders
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Max results (1–200, default 100) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
List groups and channels the current account shares with a user
| Parameter | Type | Required | Notes |
|---|---|---|---|
| user_id | string/number | yes | User identifier (ID/@username/+phone) |
| limit | number | no | Max chats to return (default 50, max 100) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Get the most recent message exchanged with a contact
| Parameter | Type | Required | Notes |
|---|---|---|---|
| contact_id | string/number | yes | Contact identifier (ID/@username/+phone) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Get the profile of the currently authenticated Telegram user or bot
| Parameter | Type | Required | Notes |
|---|---|---|---|
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Get profile photos of a user
| Parameter | Type | Required | Notes |
|---|---|---|---|
| user_id | string/number | yes | User identifier (ID/@username/+phone) |
| limit | number | no | Max photos (1–100, default 20) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Get the online/last-seen status of a Telegram user
| Parameter | Type | Required | Notes |
|---|---|---|---|
| user_id | string/number | yes | User identifier (ID/@username/+phone) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
List contacts from the Telegram address book with optional name/username filter
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | no | Optional filter by name or username (case-insensitive substring match) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Resolve a Telegram @username, +phone, or numeric ID to an entity with details
| Parameter | Type | Required | Notes |
|---|---|---|---|
| identifier | string/number | yes | Entity to resolve: @username, +phone number, or numeric ID |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Search the local contact list by name or username
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Search query (name or username prefix) |
| limit | number | no | Max results (1–200, default 50) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Upload and set the profile photo for the current user
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file_path | string | yes | Local image path (JPEG/PNG) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Unblock a previously blocked Telegram user
| Parameter | Type | Required | Notes |
|---|---|---|---|
| user_id | number | yes | Telegram user ID to unblock |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
Update the current user's first/last name and/or bio
| Parameter | Type | Required | Notes |
|---|---|---|---|
| first_name | string | no | New first name (1–64 chars) |
| last_name | string | no | New last name (0–64 chars) |
| bio | string | no | New bio/about text (0–70 chars) |
| account | string | no | Configured Telegram account label. Required when more than one account is configured. |
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source published under Apache-2.0
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Telegram MCP Server (TDLib) or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing ships as a container image. The scanner reads packages on npm and PyPI and public source; an image is neither, so there is no grade here — not a withheld one, an unmeasured one.
Release history
It installs from a container image rather than from a versioned package, so the command cannot be pinned to a release. The history below is for reading; the current release on file is 1.19.0.
- 1.19.0 adds 10 media/moderation tools (126 total), opt-in MCP resources and subscriptions, stronger approval and local-file protections, and dependency updates. Resources remain off by default; with subscriptions enabled, MCP POST bodies over 1 MiB return HTTP 413. Release: https://github.com/tolboy/telegram-mcp-tdlib/releases/tag/v1.19.0
- This release adds event waiting and richer message context, updates TDLib, and makes Telegram errors and retry decisions explicit.
- Fixes: session clear now checks every TDLib lock file before clearing a session and moves the data aside in one atomic step, so an interrupted clear can't leave a half-deleted session. doctor now reports leftover staging folders
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Telegram MCP Server (TDLib) can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.