A secure MCP server for interacting with Telegram chats and channels with encrypted credential storage and local message caching.
26 tools with consistent verb-noun naming (list_, find_, search_, get_, send_, edit_, delete_, save_, convert_). All tools have descriptions (10-200 chars, baseline 194). Input schemas present for all tools with typed parameters. However, critical gaps: (1) No output schemas documented, LLMs cannot infer response structure for chaining; (2) Parameter descriptions are minimal (avg 40-60 chars vs baseline 72); (3) No error handling guidance, tools return raw exception strings; (4) No pagination support despite list_my_chats and get_chat_members returning unbounded results; (5) Destructive tools (delete_message) lack confirmation/dry-run patterns; (6) No permission gates or scope declarations. Tools are functional but lack production-grade polish for agent reasoning.
Converts a video file to GIF format using FFmpeg.
Converts a video file to MP4 format using FFmpeg.
Deletes a message from a chat.
Edits the text content of an existing message in a chat.
Searches for a specific chat or channel by substring in its title.
Retrieves detailed information about a specific chat or channel.
Retrieves a list of members in a specific chat or channel.
No output schemas documented. Tools return unstructured strings (e.g., 'ID: 123 | Title: ...'). LLMs cannot parse responses reliably or chain tools without explicit field definitions.
Destructive tools (delete_message) lack confirmation/dry-run patterns. Agents can delete messages without explicit approval, risking irreversible data loss.
No pagination support. list_my_chats, get_chat_members, and search_in_my_chats return unbounded results (limit=200 hardcoded). Large result sets blow context windows and waste tokens.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Fetches the history of the most recent messages from a specific allowed chat.
Fetches messages around a specific message ID in a chat (context window).
Downloads a file from Telegram by message ID and saves it locally.
Retrieves information about a specific user by username or user ID.
Returns a list of all allowed chats and channels the user is a member of.
Retrieves accumulated messages from a chat being monitored in radar mode.
Starts monitoring a specific chat for new messages in real-time (radar mode).
Stops monitoring a specific chat in radar mode.
Saves a draft message in a specific chat.
Search for messages by keyword. Checks the ultra-fast local SQLite cache first, then all allowed chats/channels.
Sends an animation (GIF) to a specific allowed chat or channel.
Sends an audio file to a specific allowed chat or channel.
Sends a file to a specific allowed chat or channel.
Sends a text message to a specific allowed chat or channel.
Sends a text message as a reply to a specific message in a chat.
Sends a photo to a specific allowed chat or channel.
Sends a video to a specific allowed chat or channel.
Sends a video note (round video) to a specific allowed chat or channel.
Sends a voice message to a specific allowed chat or channel.
Error handling returns raw exception strings (e.g., 'Error fetching chats: ...'). No recovery guidance, error classification, or actionable next steps for LLMs.
No permission gates or scope declarations. Tools do not verify caller authority before executing sensitive operations (send_message, delete_message, get_user_info).