MCP server: give Claude/Cursor tools over your personal Telegram — read, search, summarize and send messages
Server has 4 tools with clear verb-noun naming (list_chats, read_chat, search, send_message). All tools have descriptions (avg 95 chars, within 10-1024 range). Input schemas are present with type definitions and parameter descriptions. However, output schemas are undocumented, tools return formatted strings rather than structured objects, forcing LLMs to parse unstructured text. Error handling is minimal; no recovery guidance or actionable error messages. Missing tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles. Parameter descriptions are adequate but lack format constraints (e.g., chat identifier format, message length limits). No pagination support despite list_chats accepting a limit parameter.
List recent Telegram chats. Set unread_only=true to see only chats with unread messages.
Read the last messages of a chat. `chat` is a chat name, @username or numeric id from list_chats.
Search messages by text. Leave `chat` empty to search across all chats.
Send a text message to a chat (name, @username or numeric id). Use only when the user explicitly asks to send something.
Output schemas undocumented. All tools return formatted strings (e.g., 'Отправлено в «{chat}»: {text}') rather than structured JSON objects. LLMs cannot extract typed fields for downstream tool calls or reliable data extraction.
Missing tool annotations. send_message is destructive (WRITE risk) but lacks destructiveHint annotation. list_chats, read_chat, search are read-only but lack readOnlyHint. Agents cannot distinguish safe from unsafe operations without explicit hints.
No error handling or recovery guidance. Tools raise RuntimeError or generic exceptions without actionable messages. E.g., 'Telegram session is not authorized' tells the agent nothing about how to recover (run login script).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Parameter 'chat' accepts multiple formats (name, @username, numeric id) but lacks format documentation. Description says 'chat name, @username or numeric id' but does not specify constraints (e.g., max length, character restrictions, or examples of valid formats).
No pagination metadata. list_chats accepts limit but returns no total_count, next_cursor, or has_more flag. Agents cannot determine if results are truncated or plan multi-page retrieval.