telegram-mcp (KiaroSama/telegram-mcp) is an MCP server listed on the M8ven Trust Index. It scores 74 out of 100, grade C. It declares 216 tools. No publisher has claimed this listing.
Drive a real Telegram account from an MCP client. Telethon plus TDLib for what Telethon's layer cannot reach: chats, messages, media, secret chats, admin rights, invite links and Mini Apps, with multi-account routing and measured-not-assumed Telegram behaviour.
Emerging. No concerning findings. Grades remain capped until the project builds reputation through adoption. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
Verified is a snapshot. Live keeps it current, and builds your track record.
⚡ Connect GitHub → continuous verification on every pushwhy connect →Who stands behind it
KiaroSama
Source: github_repo_search
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →
Install from
The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.
These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.
list_accountsList all configured Telegram accounts with profile info.
promote_adminPromote a user to admin in a group/channel.
demote_adminDemote a user from admin in a group/channel.
edit_admin_rightsSet granular admin rights for a user in a supergroup or channel.
get_adminsGet all admins in a group or channel.
inspect_buttonsList a message's inline ("glass") buttons with the index needed to press one.
click_buttonPress one inline ("glass") button, chosen by its index from inspect_buttons.
check_channel_usernameAsk Telegram whether a public username is free for this channel.
set_channel_usernameChange a channel's public username — or, with an empty one, make it private.
get_channel_statisticsThe statistics Telegram keeps for a channel, a supergroup, or one post.
get_similar_channelsThe channels Telegram recommends as similar to this one.
set_discussion_groupAttach a discussion group to a channel, or detach the one it has.
set_join_to_sendRequire members to join a supergroup before they can post in it.
set_join_requestRequire admin approval before someone joins.
set_prehistory_hiddenHide messages sent before a member joined.
set_participants_hiddenHide the member list from non-admins.
set_signaturesSign channel posts with the name of the admin who sent them.
set_view_forum_as_messagesShow a forum as one flat message list rather than as topics.
subscribe_public_channelSubscribe (join) to a public channel or supergroup by username or ID.
mute_chatMute notifications for a chat.
unmute_chatUnmute notifications for a chat.
archive_chatArchive a chat.
unarchive_chatUnarchive a chat.
get_chatsGet a paginated list of chats. Args: page: Page number (1-indexed). Paging stops at 100,000 chats in. page_size: Number of chats per page (1-200; a larger value is served as 200 and the reply reports both numbers).
list_chatsList available chats with metadata.
get_chatGet detailed information about a specific chat.
search_public_chatsSearch chats, channels and bots by username or title.
resolve_usernameResolve a username to a user or chat ID.
get_full_chatGet full info of a channel or group including description/about text.
get_common_chatsList chats shared with a specific user.
get_message_read_byList user IDs who have read a specific message.
get_message_linkExport a t.me/... link for a specific message.
set_contact_aliasRemember what the user calls someone, so any tool taking a chat_id understands it.
list_contact_aliasesList remembered contacts, one row per person with all of their aliases.
delete_contact_aliasForget one remembered alias. Exact match only — deleting the wrong memory is silent, so fuzzy matching is deliberately not used here. Use list_contact_aliases first if unsure of the exact wording.
list_contactsList all contacts in your Telegram account.
search_contactsSearch for contacts by name, username, or phone number using Telethon's SearchRequest. Saved favorite aliases matching the query are checked first and returned at the top. Args: query: The search term to look for in contact names, usernames, or phone numbers.
get_contact_idsGet all contact IDs in your Telegram account.
get_direct_chat_by_contactFind a direct chat with a specific contact by name, username, or phone.
get_contact_chatsList all chats involving a specific contact.
get_last_interactionGet the most recent message with a contact.
add_contactAdd a new contact to your Telegram account. Args: phone: The phone number of the contact (with country code). Required if username is not provided. first_name: The contact's first name. last_name: The contact's last name (optional). username: The Telegram username (without @). Use this for adding co…
delete_contactDelete a contact by user ID. Args: user_id: The Telegram user ID or username of the contact to delete.
block_userBlock a user by user ID. Args: user_id: The Telegram user ID or username to block.
unblock_userUnblock a user by user ID. Args: user_id: The Telegram user ID or username to unblock.
import_contactsImport a list of contacts. Each contact should be a dict with phone, first_name, last_name.
export_contactsExport all contacts as a JSON string.
get_blocked_usersGet a list of blocked users.
send_contactSend a contact to a chat. Args: chat_id: The chat ID or username. phone_number: Contact's phone number. first_name: Contact's first name. last_name: Contact's last name (optional). vcard: Additional vCard data (optional).
inspect_custom_emojiEvery premium/custom emoji in a message, with the id needed to replace one.
replace_custom_emojiSwap the premium emoji in a message for a different one, keeping everything else.
get_file_roots_statusReport whether the file tools are usable, and exactly what to configure if not.
list_message_effectsList the message effects this account can send, so one can be CHOSEN.
get_message_effectResolve a message-level effect ID to its real assets, and optionally show one.
list_disappearing_mediaFind the self-destructing media in a chat, before it is opened.
send_disappearing_mediaSend a photo, video or voice message that destroys itself after viewing.
wait_for_new_messageBlock until a new incoming private message from a non-bot user arrives, then return immediately with the list of chats that currently have pending (unprocessed) incoming messages. If nothing arrives within `timeout` seconds, returns {"event": false, "reason": "timeout"}. Lets the agent react to even…
wait_for_settled_messageEvent-driven, DEBOUNCED wait. Blocks until some private user chat has received one or more incoming messages AND then gone quiet for `settle_ms` — so a client who types several messages (or sends file + text) in a row is delivered as ONE settled burst instead of waking the agent on every message. Re…
enable_incoming_feedCLAUDE CODE ONLY. Enable callback mode: a background task appends every settled incoming burst as one JSON line to the feed file, so an external watcher can wake the agent per event instead of the agent blocking in wait_for_settled_message.
disable_incoming_feedDisable the incoming event feed (stops writing to the feed file).
incoming_feed_statusReport whether the incoming event feed is enabled, its file path, and the watch command for waking an agent per event.
list_foldersGet all dialog folders (filters) with their IDs, names, and emoji. Returns a list of folders that can be used with other folder tools.
get_folderGet detailed information about a specific folder including all included chats.
create_folderCreate a new dialog folder.
add_chat_to_folderAdd a chat to an existing folder.
remove_chat_from_folderRemove a chat from a folder.
delete_folderDelete a folder. Chats in the folder are preserved, only the folder is removed.
reorder_foldersChange the order of folders in the folder list.
create_groupCreate a new group or supergroup and add users.
create_channelCreate a channel or supergroup, private by default or public under a username.
edit_chat_titleEdit the title of a chat, group, or channel.
edit_chat_photoEdit the photo of a chat, group, or channel. Requires a file path to an image.
edit_chat_aboutEdit the description ("About") of a chat, group, or channel.
delete_chat_photoDelete the photo of a chat, group, or channel.
toggle_slow_modeEnable or disable slow mode for a supergroup.
leave_chatLeave a group or channel by chat ID.
get_participantsList participants in a group or channel with pagination. Args: chat_id: The group or channel ID or username. page: Page number (1-indexed, default 1). Paging stops at 100,000 participants in. page_size: Number of participants per page (default 200, max 1000; a larger value is served as 1000).
invite_to_groupInvite users to a group or channel.
inspect_messageFull API view of one message, optionally with a picture of it.
inspect_messagesFull API view of the newest messages in a chat.
create_invite_linkMint an additional invite link, with any conditions Telegram supports.
edit_invite_linkChange the conditions on an existing invite link.
revoke_invite_linkStop an invite link working. Anyone holding it is locked out.
list_invite_linksThe invite links this account created for a chat, with their conditions.
list_join_requestsPeople waiting for approval to join, from links that require it.
approve_join_requestLet someone in, or turn them away, from the pending-approval queue.
get_invite_linkRead the invite link a group or channel already has.
export_chat_inviteMint a NEW primary invite link for a chat, replacing the previous one.
import_chat_inviteJoin a chat by its invite hash (the part after t.me/+ or t.me/joinchat/).
join_chat_by_linkJoin a chat by invite link.
get_admin_rights_via_tdlibRead one admin's rights through TDLib, which sees the ones Telethon cannot.
set_admin_rightSwitch ONE admin right on or off, including the ones Telethon cannot deliver.
send_fileSend a file to a chat. Args: chat_id: The chat ID or username. file_path: Absolute or relative path to the file under allowed roots. Pass a list of 2-10 paths to send them as one Telegram media group. caption: Optional caption for the file or media group. topic_id: Optional forum topic ID (from list…
send_albumSend multiple photos/videos as one Telegram media group (album).
download_mediaDownload media from a message in a chat.
send_voiceSend a voice message to a chat. File must be an OGG/OPUS voice note.
upload_fileUpload a local file to Telegram and return upload metadata.
get_media_infoGet info about media in a message.
get_sticker_setsList this account's packs, with the identifiers other tools need.
send_stickerSend a sticker to a chat. File must be a valid .webp sticker file.
116 further tools are not listed here. The complete surface is in the source.
TELEGRAM_EVENT_FEEDXDG_STATE_HOME$/telegram-mcp/ (~/.local/state/telegram-mcp/ by default), a directory theTELEGRAM_LINK_DOMAINsets the domain used to build message permalinks; the default isTELEGRAM_API_ID, TELEGRAM_API_HASH, or TELEGRAM_SESSION_STRING to thatTELEGRAM_API_HASHTELEGRAM_API_ID, , or TELEGRAM_SESSION_STRING to thatGITHUB_STEP_SUMMARYGITHUB_JOBRUNNER_OSGITHUB_SHATELEGRAM_CONTACT_FUZZYNO_COLORis set or the terminal has no virtual-terminal processing.TELEGRAM_ALLOW_SERVER_ROOTS_FALLBACK1 to fall back to the server CLI rootsTELEGRAM_LOCK_GRACE_SECONDSMCP_TRUSTED_PROXY_AUTHA reverse proxy in front authenticates requests. The server cannot verify this; you are stating it.MCP_ALLOW_UNAUTHENTICATED_REMOTEDeliberately open on a network you trust. Warns on every start.MCP_ALLOWED_HOSTSlocalhost: and [::1]:. Setting replaces that defaultMCP_ALLOWED_ORIGINSMCP_ALLOWED_HOSTS (and optionally ) to allow that Host header,MCP_STATELESS_HTTPSet =true for the older behaviour, where a client survives aMCP_HOSTFor http and sse, the server binds :MCP_PORT (defaultMCP_PORTFor http and sse, the server binds MCP_HOST: (defaultMCP_TRANSPORTThe server speaks three MCP transports, selected with :TELEGRAM_EXPOSED_TOOLSread-only to expose only tools annotated withTELEGRAM_DESKTOP_PROCESSAll four hints declared on every tool
207/216 tools missing one or more hints — list_accounts (missing: destructiveHint, idempotentHint, openWorldHint); promote_admin (missing: readOnlyHint); demote_admin (missing: readOnlyHint), +204 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.
For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.
Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.
[](https://m8ven.ai/mcp/kiarosama/telegram-mcp)?variant=verified to the badge URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check