Telegram MCP — Next Generation
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_accountsA | List all configured Telegram accounts with profile name, phone number, and online status. Use at session start to discover available account labels for multi-account routing. Read-only operation with no side effects. Note: Returned names contain untrusted user content. |
| list_contactsA | List all registered Telegram contacts in your account address book with IDs and phone numbers. Use when finding contacts to message. To search contacts by query, use |
| search_contactsA | Search your Telegram contacts directory by name, phone number, or username. Use when looking up a specific person. To view the entire directory, use |
| get_contact_idsA | Retrieve a lightweight list of all Telegram user IDs in your address book. Use when checking if a user ID is an existing contact. For full contact profiles, use |
| get_contact_chatsB | Find all groups and channels shared between your account and a specific contact ID. Use when inspecting mutual group memberships. Read-only operation. |
| get_last_interactionA | Get the timestamp and summary of the most recent interaction or message with a contact. Use to check communication recency before initiating contact. Read-only operation. |
| get_chatsA | Retrieve active dialogs and recent conversation summaries including last message and unread count. Use for overview of recent chat activity. To search or list all chats comprehensively, use |
| list_chatsA | List all accessible chats, groups, channels, and direct dialogs with pagination support. Use when locating specific conversations by title or type. For a quick recent dialogs overview, use |
| get_chatA | Retrieve core metadata, title, member count, and type for a specific chat or channel. Use when inspecting a known chat ID or @username. To get full administrative settings and invite links, use |
| search_public_chatsA | Search Telegram globally for public channels, supergroups, and bots matching query terms. Use when discovering new public communities. To search within your existing chats, use |
| resolve_usernameA | Resolve a public @username to its underlying Telegram entity ID and object type (User, Channel, Group). Use before calling ID-based tools when only a username handle is known. Read-only operation. |
| get_full_chatA | Retrieve complete chat information including description/about, admin rights, notification settings, and invite links. Use when needing deep metadata. For basic title and type, prefer the lighter |
| get_messagesA | Retrieve paginated messages from a specific chat starting from an offset or limit. Use for sequential message retrieval. To filter messages by sender or date, use |
| list_messagesA | Retrieve messages from a chat matching optional filters such as sender, date range, or topic. Use when filtering chat history. For simple sequential pagination, use |
| get_message_contextA | Retrieve a surrounding window of messages before and after a target message ID in a chat. Use when understanding conversational context around a specific event or quote. Read-only operation. |
| search_messagesA | Search for text keywords within a specific Telegram chat or supergroup. Use when finding past conversations in a single chat. To search globally across all public channels, use |
| search_globalA | Search for message text across all joined dialogs and public channels globally. Use when the target chat is unknown. If the chat is known, prefer |
| get_historyA | Retrieve complete chronological message history from a chat up to the configured limit. Use when ingesting or summarizing a conversation. Read-only operation. |
| get_pinned_messagesA | Retrieve all pinned announcements and pinned messages in a chat or supergroup. Use when checking key rules or notices. To pin a message, use |
| get_adminsA | List all administrators and their permissions in a group or channel. Use when verifying group moderation staff. Read-only operation. |
| get_banned_usersA | List all banned and restricted members in a group or supergroup with restriction reasons. Use when auditing group moderation. Requires admin permission in the target group. |
| get_recent_actionsA | Retrieve the administrative audit log for a supergroup or channel (member bans, edits, admin changes). Use when reviewing moderation actions. Requires admin privileges. |
| get_media_infoA | Inspect media metadata (file size, dimensions, mime type, duration) attached to a specific message. Use before downloading to verify file attributes. To download the actual file, use |
| list_photosA | List and inspect photo messages within a chat. Use when auditing or finding images sent in a conversation. To download, use |
| open_photoA | Inspect and view photo content from a chat. Returns image metadata and preview. Use when analyzing an image in a conversation. For bulk photo galleries, use |
| get_photo_sheetA | Generate a visual contact sheet collage of recent photos from a chat. Use for quick visual overviews of shared imagery without downloading each item individually. |
| get_meA | Retrieve detailed profile identity of the current Telegram user account (ID, name, username, phone). Use when verifying account identity or permissions. To see all configured accounts instead, use |
| get_privacy_settingsA | Retrieve privacy rules and exception lists for account attributes (phone number, last seen, status). Use when auditing account security. To update privacy settings, use |
| get_bot_infoA | Inspect bot profile, command list, description, and capabilities for a specified bot. Use when discovering bot commands. To update bot commands, use |
| get_user_statusA | Check the online presence, last seen status, and bot flags for a specific Telegram user. Use before messaging to see if user is active. Read-only operation. |
| list_foldersA | List all custom Telegram dialog filter folders (tabs) with folder IDs and titles. Use when discovering folder organization. To see chats inside a folder, use |
| get_folderA | Retrieve all chats and channels included within a specific dialog folder ID. Use when navigating folder contents. To list available folders, use |
| cache_healthA | Inspect local SQLite/FTS5 archive integrity, database size, and active tool tier diagnostics. Use to verify cache readiness before running local searches. Operates entirely offline without Telegram API calls. |
| search_cached_messagesA | Search the local FTS5 SQLite archive for messages without making live Telegram API requests. Use for instantaneous, rate-limit-free search over synchronized messages. To sync messages into cache first, use |
| sync_chat_cacheA | Synchronize a batch of recent messages from a chat into the local SQLite/FTS5 archive. Use periodically to keep the offline cache fresh. Supports incremental mode (since last checkpoint) or full refresh. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 35 tools
Tools span distinct resources but several near-duplicate retrieval operations (get_chats/list_chats/get_chat/get_full_chat, get_messages/list_messages/get_history) rely on cross-references to disambiguate. The descriptions help, but an agent could still misselect among message-fetching and chat-listing tools.
Almost entirely consistent snake_case verb_noun pattern (list_, get_, search_, sync_), with only minor exceptions like cache_health and get_me. The naming is highly predictable and readable.
35 tools is well above the 15-tool ideal for an MCP surface. Many retrieval variants could be consolidated, making the set heavy and harder to navigate.
The surface is overwhelmingly read-only: no send_message, send_media, edit/delete, pin/unpin, download_media, set_bot_commands, or set_privacy_settings, despite descriptions referencing several of these missing tools. Core write and lifecycle operations for Telegram are absent.