Telegram bot that turns your phone into a Claude Code control panel — approve terminal commands, monitor multiple projects in forum topics, talk hands-free via voice
Helyx provides 18 tools with mostly complete schemas and descriptions. Naming is verb-forward and clear (reply, react, edit_message, remember, recall, forget, list_*, search_*, etc.). Descriptions are present and contextual, averaging ~120 chars. However, several tools lack output schema documentation, and some parameter descriptions are sparse. Error handling guidance is minimal, tools do not explain recovery paths or categorize failures. The 'remember' tool has an excellent description with type guidance; 'reply' and 'react' are straightforward. But tools like 'curator_run' and 'curator_status' lack detail on what curator runs do and what status fields mean. No tool annotations (readOnlyHint, destructiveHint) are visible, despite clear WRITE/READ_ONLY/DESTRUCTIVE risk labels in the metadata.
Manually trigger a curator run to review agent-created skills
Get curator run history
Edit a bot message in Telegram
Delete a memory by ID
List all active agent-created skills
List memories with optional filters
List all registered sessions (CLI and standalone)
No output schemas documented for any tool. LLMs cannot infer what fields to expect in responses, forcing them to guess at downstream field names and risking broken tool chains.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are absent despite clear risk labels in metadata (WRITE, READ_ONLY, DESTRUCTIVE). These hints are required by the current MCP spec to guide agent planning.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Propose a new agent-created skill from session transcript. Distills the workflow into a SKILL.md and sends a Telegram approval message.
Set a reaction on a Telegram message
Semantic search through long-term memory. Returns the most relevant memories for a query.
Save project knowledge or a decision to long-term memory. Use type='fact' for architectural discoveries, non-obvious constraints, important file roles, setup quirks, and conventions that future sessions should know. Use type='decision' for explicit architectural choices. Write content as a self-contained sentence (assume no session context).
Send a message to a Telegram chat
Approve or reject a proposed skill
Scan a project directory and save structural knowledge (tech stack, architecture, entry points, setup) to long-term memory. Run this to force a rescan after major changes.
Semantic search over long-term project context and work summaries. Use when you need knowledge from prior sessions about this project.
Get details about a specific session
Set a human-readable name and project path for this CLI session. Call this at the start of a session.
Load a skill and return its content with inline shell tokens expanded. Use this when you need to read a skill file that contains dynamic context via !`cmd` syntax.
Error handling lacks recovery guidance. Tools do not explain what to do on failure (retry, ask user, abort). E.g., 'forget' and 'curator_run' provide no error context.
Parameter descriptions for 'curator_run' and 'curator_status' are minimal. 'curator_run' has no description of what a curator run does or what triggers it. 'curator_status' does not explain what status fields are returned.
Pagination support is incomplete. 'list_memories' and 'list_sessions' accept limit/offset but do not document total count or next_cursor in responses, making it unclear if more results exist.