MCP server exposing telegram-rest-gateway as agent tools (Telegram user account)
12 tools with consistent verb_noun naming (telegram_get_*, telegram_send_*, etc.). All tools have descriptions in Russian, ranging 50 - 200 chars. Input schemas present for all tools with type definitions and constraints (enums, min/max). However, descriptions lack English translations, making them inaccessible to non-Russian-speaking agents. Parameter descriptions are sparse, many lack context on format, dependencies, or recovery guidance. Output schemas are not documented. Error handling is absent from tool definitions. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (READ_ONLY, WRITE, DESTRUCTIVE). Idempotency key on telegram_send_message is good, but not reflected in schema annotations.
Удалить сообщения. revoke=true (default) — у всех участников; false — только у себя.
Отредактировать текст своего сообщения.
Переслать сообщения из одного чата в другой.
Карточка чата по id (тип, название). Работает для чатов, известных клиенту (из списка/resolve).
Список чатов аккаунта (главный список, по порядку). Возвращает id (строки!), title, type, unread_count.
История сообщений чата, от новых к старым. Медиа-сообщения содержат file_id — его можно скачать telegram_download_file.
All tool descriptions are in Russian only. Non-Russian-speaking agents cannot understand when or why to select tools. Descriptions must be in English for LLM accessibility.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (e.g., chat_id from telegram_get_chats for use in telegram_send_message). Responses must be formally specified.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Информация об аккаунте Telegram, от имени которого работает гейтвей.
Карточка пользователя: имя, @username, телефон, онлайн-статус, premium.
Поставить или снять emoji-реакцию на сообщение.
Найти публичный чат/канал/пользователя по @username. Возвращает chat_id для остальных инструментов.
ЖИВОЙ поиск Telegram (серверный, searchMessages/searchChatMessages) — всегда актуальный, без индексатора. Без chat_id — глобально по всем чатам; с chat_id — внутри чата. Отличие от telegram_search_history: этот идёт напрямую в Telegram (свежие данные, но по правилам поиска Telegram и без удалённых сообщений).
Отправить текстовое сообщение в чат. Возвращает временный id (202); финальный id появится в истории. parse_mode=markdown — это MarkdownV2 Telegram: спецсимволы _ * [ ] ( ) ~ ` > # + - = | { } . ! вне разметки ОБЯЗАТЕЛЬНО экранировать обратным слэшем, иначе VALIDATION_ERROR. Без parse_mode текст уходит как есть (надёжнее для обычных сообщений).
Tool annotations missing. telegram_delete_messages (DESTRUCTIVE), telegram_send_message (WRITE), and telegram_get_* (READ_ONLY) lack readOnlyHint/destructiveHint/idempotentHint. Agents cannot distinguish safe from irreversible operations.
Parameter descriptions lack format/constraint guidance. E.g., 'chat_id' is described as 'id чата (строка)' but no guidance on format (numeric string? alphanumeric?). 'parse_mode' enum values are documented in tool description, not parameter schema.
No error handling guidance. Tools lack recovery hints (e.g., 'User not found. Try telegram_resolve_username() first.'). Agents cannot self-correct on failures.