Lightweight Python agent framework for Telegram bots with MCP (Model Context Protocol) support, RAG, document generation, web search, browser control, and multi-agent orchestration
Qanot is a Telegram bot framework with 11 tools spanning memory, document generation, and agent orchestration. Most tools have descriptions and basic schemas, but critical gaps undermine production readiness: (1) descriptions are often vague or non-English (Uzbek text in pptx tools), (2) parameter descriptions are sparse or missing entirely, (3) no output schemas documented, (4) error handling guidance absent, (5) security concerns around file operations and agent delegation. The memory tool accepts arbitrary file paths with minimal validation. Delegation tools lack clear error recovery paths. Average tool score: 42/100.
View past agent results and execution history.
Cancel a running sub-agent by run_id, or cancel all active agents if no run_id provided.
Clear project board state.
Create a PowerPoint (.pptx) presentation. Provide title and slides. Each slide has a title and content.
Delegate a task to a specialist agent bot in the Telegram group. The agent works visibly — the user can watch, interrupt, or redirect. Use wait=true when you need the result before continuing. Use wait=false (default) for fire-and-forget delegation.
Edit a PowerPoint (.pptx) presentation. Add slide (add_slide), replace text (replace), or delete slide (delete_slide).
Descriptions in non-English (Uzbek) for pptx tools. LLMs trained on English cannot parse Uzbek descriptions, making tool selection unreliable. Descriptions like 'Fayl nomi (masalan: taqdimot.pptx)' are inaccessible to English-language models.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., agent_id from list_agents, board state from view_board). This violates the response-shaper pattern and forces agents to guess at response structure.
Memory tool accepts arbitrary file paths with no validation. Path traversal attacks possible (e.g., '../../../etc/passwd'). No mention of sandboxing or allowed directory constraints. Violates secret-injection and tool-gateway patterns.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
List available agents and active runs with their status, mode, and elapsed time.
Persistent memory — read and write files in /memories directory. Use to store important facts, user preferences, project context, and progress notes that persist across conversations. Commands: view, create, str_replace, insert, delete, rename.
Read a PowerPoint (.pptx) presentation. Returns text content of all slides.
Spawn a sub-agent for complex MULTI-STEP tasks that need parallel or independent work. When NOT to use: if you can accomplish the task with 1-2 direct tool calls, do it yourself. Use web_search directly for searches, read_file for reading, write_file for writing. Only spawn agents for tasks requiring 3+ tool calls or parallel independent workstreams. Modes: sync (wait for result), async (fire and deliver to chat), conversation (multi-turn dialogue with agent).
Read shared project board state.
Delegation and agent spawning tools lack error recovery guidance. No description of what happens on timeout, agent crash, or permission denial. Agents cannot self-correct on failure. Violates recovery-guide pattern.
Parameter descriptions missing or minimal for 8+ tools. 'agent_id' in spawn_agent lacks format guidance (UUID? string?). 'task' parameter has no length limit or complexity guidance. 'mode' enum is documented but no guidance on when to use each mode. Violates tool-description pattern.