Local MCP server that lets AI agents drive a personal Telegram account: send messages as you, read replies, full-text search chat history, and draft replies in your own writing style
Server has 10 tools with consistent naming (verb_noun pattern: tg_send, tg_read_dialog, tg_search_local_history, etc.). All tools have descriptions (50-150 chars, within baseline 34-392 range). Input schemas are present with typed parameters and descriptions. However, output schemas are not documented in the visible code, LLMs cannot predict return structure. Error handling is mentioned in docstrings (returns ERROR:/WARNING: text) but not exemplified. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications (WRITE vs READ_ONLY). Parameter descriptions are adequate but lack format constraints (e.g., 'target' accepts @username, phone, or ID but no regex/enum). No pagination support visible for list_dialogs or search results despite baseline expectation for discovery tools.
Add a person to the account's contact list
Get a summary of unread messages across all dialogs
List all private conversations, groups, and channels the account is a member of
Mark messages as read in a specific dialog
Retrieve the persona (writing style profile) for a specific dialog
Get writing samples from a dialog to analyze the account owner's style
Set or update the persona (writing style profile) for a specific dialog
Output schemas not documented. LLMs cannot predict return structure (fields, types, pagination). Baseline requires 100% of A+ tools to have documented return types.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk classifications. Tools marked WRITE (tg_send, tg_mark_read, tg_add_contact, tg_persona_set) should declare destructiveHint=true for agent safety.
Parameter 'target' (used in 7 tools) accepts @username, phone, or numeric ID but lacks enum/pattern constraint. Description says 'accepts X, Y, Z' but no formal validation. LLMs may pass invalid formats.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | <=2025-11-25 | v2 |
Read the conversation history with one peer, optionally filtered by date range
Full-text search the local PostgreSQL archive of synced Telegram messages
Send a message to a peer (person, group, or channel) the account has a relationship with
Discovery tools (tg_list_dialogs, tg_search_local_history) lack pagination (limit/offset/cursor). Baseline expects pagination for list tools. tg_search_local_history has 'limit' but no cursor/offset for continuation.
Error handling documented in docstring ('returns ERROR:/WARNING: text') but no examples or recovery guidance visible. Baseline requires 'what to do next' in error responses.