Tool Reference¶
Every tool that takes a peer accepts the identifier formats described in Peers. Tools that send or edit text require parseMode — see Messages.
Tools (78)¶
Messages (16)¶
tg_messages_list— List messages in a chattg_messages_get— Get specific messages by IDtg_messages_context— Get messages around a specific messagetg_messages_search— Search messages in a chat (optional topic, sender, kind and date filters)tg_messages_search_global— Search messages across all chats (optional kind, date and dialog-kind filters, cursor pagination)tg_messages_transcribe_audio— Transcribe a Telegram voice message or video note by message IDtg_messages_send— Send a text messagetg_messages_edit— Edit an existing messagetg_messages_delete— Delete messagestg_messages_forward— Forward messages between chatstg_messages_pin— Pin or unpin a messagetg_messages_react— Add or remove reactionstg_messages_mark_read— Mark messages as readtg_messages_get_reactions— List who reacted to a messagetg_messages_get_scheduled— List messages scheduled for later deliverytg_messages_delete_history— Delete an entire chat history
Dialogs (5)¶
tg_dialogs_list— List all dialogstg_dialogs_search— Search dialogs by querytg_dialogs_get_info— Get chat/channel metadatatg_dialogs_pin— Pin or unpin a dialogtg_dialogs_mark_unread— Mark a dialog as unread or read
Contacts & Users (10)¶
tg_contacts_get— Get contact infotg_contacts_search— Search contactstg_users_get— Get user infotg_users_get_photos— Get user profile photostg_users_block— Block or unblock a usertg_users_get_common_chats— Get chats shared with a usertg_contacts_add— Add a contacttg_contacts_delete— Delete a contacttg_contacts_get_statuses— Get online statuses of all contactstg_contacts_list_blocked— List blocked users
Groups (12)¶
tg_groups_list— List groupstg_groups_info— Get group infotg_groups_join— Join a public channel or supergrouptg_groups_leave— Leave a group or channeltg_groups_rename— Rename a grouptg_groups_members_add— Add a membertg_groups_members_remove— Remove a membertg_groups_invite_link_get— Get invite linktg_groups_invite_link_revoke— Revoke invite linktg_groups_members_list— List group memberstg_groups_admin_set— Promote or demote an admin with specific rightstg_groups_slowmode— Set the slowmode delay
Chat Management (10)¶
tg_chats_create— Create a new group or channeltg_chats_archive— Archive or unarchive a chattg_chats_mute— Mute or unmute notificationstg_chats_delete— Delete a channel or supergrouptg_chats_set_photo— Set chat phototg_chats_set_description— Set chat descriptiontg_chats_get_admins— List administrators (channels/supergroups)tg_chats_set_permissions— Set default permissionstg_chats_get_send_as— List the identities this account may post under in a supergroup or channeltg_chats_set_send_as— Set the identity this account posts under by default in a supergroup or channel
Media & Files (4)¶
tg_messages_send_file— Send a file with captiontg_media_download— Download media from a messagetg_media_upload— Upload a filetg_media_send_album— Send a media album
Profile (4)¶
tg_profile_get— Get own profile infotg_profile_set_name— Update display nametg_profile_set_bio— Update biotg_profile_set_photo— Set profile photo
Forum Topics (4)¶
tg_topics_list— List forum topicstg_topics_search— Search forum topicstg_topics_create— Create a forum topictg_topics_edit— Rename a forum topic
Stickers (3)¶
tg_stickers_search— Search sticker setstg_stickers_get_set— Get a sticker settg_stickers_send— Send a sticker (read its set first, see below)
A sticker is addressed by three numbers, not one: an id, an access hash and a file reference. Only the id is stable and public; the other two arrive with the sticker set. So tg_stickers_get_set must be called before tg_stickers_send for that set — it caches what the send needs. Sending an id alone would answer MEDIA_EMPTY, a code that names neither the sticker nor the remedy, so an uncached sticker is rejected before the request leaves.
stickerFileId is a decimal string, not a JSON number. The MCP SDK unmarshals tool arguments into map[string]any to apply schema defaults, then re-marshals them, so every JSON number round-trips through float64. A sticker document id needs 63 bits and a float64 mantissa holds 53, which silently corrupts it — 5181593617004757506 arrives as 5181593617004758000. Quote the id and it survives.
Drafts (3)¶
tg_drafts_set— Set a draft messagetg_drafts_clear— Clear a drafttg_messages_clear_all_drafts— Clear all drafts across every chat
Folders (4)¶
tg_folders_list— List chat folderstg_folders_create— Create a foldertg_folders_edit— Edit a foldertg_folders_delete— Delete a folder
Status (2)¶
tg_typing_send— Send typing indicatortg_online_status_set— Set online/offline status
Server (1)¶
tg_server_version— Get build metadata (semver tag, git commit SHA, Go runtime version); reachable before authentication completes
Annotations¶
Every tool carries MCP annotations so a client can reason about its effects before calling it. The four buckets are mutually exclusive and sum to the tool total:
| Bucket | Count | Meaning |
|---|---|---|
| read-only | 31 | Only reads data |
| idempotent | 28 | Modifies state, safe to retry |
| write | 10 | Creates new entities, not idempotent |
| destructive | 9 | Deletes or removes things |