Multi-session Telegram router for Claude Code — switch between Claude sessions from Telegram
Four tools with complete schemas and descriptions, but significant gaps in parameter documentation and error handling. Tool names follow verb_noun convention (reply, react, download_attachment, edit_message). Descriptions are present (avg ~80 chars) but lack actionable context for LLM selection. Parameters have types but many lack descriptions (e.g., 'format' enum in reply/edit_message has no description explaining when to use markdownv2 vs text). No output schemas documented. Error handling is minimal, no recovery guidance or categorization. Composition is reasonable (each tool does one thing), but missing idempotency guarantees and chaining metadata.
Download a file attachment from a Telegram message. Use when the inbound <channel> meta shows attachment_file_id. Returns the local file path.
Edit a message the bot previously sent. Edits don't trigger push notifications.
Add an emoji reaction to a Telegram message.
Reply on Telegram. Pass chat_id from the inbound message. Optionally pass reply_to (message_id) for threading, and files (absolute paths) to attach images or documents.
Parameter descriptions missing or incomplete. 'format' enum in reply/edit_message has no description explaining markdownv2 vs text rendering. 'emoji' in react lacks guidance on valid emoji format. LLMs cannot infer parameter semantics from names alone.
No output schemas documented. Callers cannot know what fields to expect from reply, react, download_attachment, or edit_message responses. This breaks tool chaining and forces LLMs to guess downstream parameter types.
Error handling absent. No guidance on retryability, user-fixable errors, or recovery steps. If reply fails due to invalid chat_id, the LLM has no actionable next step.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Tool descriptions lack context for LLM selection. 'Reply on Telegram' does not explain when to use reply vs edit_message, or what happens if chat_id is invalid. Descriptions should answer: what, when, and what to do if it fails.
No idempotency guarantees documented. If reply is called twice with the same chat_id and text, does it send two messages or deduplicate? Agents retry on ambiguous failures, non-idempotent tools risk duplicate side effects.