Self-hosted Telegram AI assistant with local memory and autonomous workflows
Cobrain defines 6 tools with explicit Zod schemas and descriptions. All tools have names starting with action verbs (read_, archive_, consolidate_, update_, log_, send_). Descriptions are present and reasonably detailed (avg ~120 chars). However, several parameters lack descriptions or have minimal guidance. Error handling uses helper functions (toolError/toolSuccess) but responses are generic text without recovery guidance. No output schemas documented. Parameter constraints are minimal, dates accept strings without format validation, arrays lack length bounds. Tool composition is reasonable (single responsibility), but some tools like archive_events and consolidate_event could benefit from clearer preconditions and side-effect documentation.
Archive specific date sections from events.md. Mneme decides WHICH dates to archive based on content evaluation. Archived events move to archive/YYYY-MM-events.md.
Replace a verbose event section with a concise summary. Use this to compress long entries while preserving key information.
Add a new event to events.md.
Read the facts.md and events.md files.
Send the consolidation summary report via Telegram.
Update a section in facts.md or add a new one.
No output schemas documented. Tools return generic text responses (toolSuccess/toolError) without structured field definitions. LLMs cannot plan downstream calls or extract typed data.
Error responses lack recovery guidance. toolError() returns only 'prefix: message' text. No indication of whether error is retryable, user-fixable, or fatal. LLM cannot determine next action.
Date parameters (archive_events.dates, consolidate_event.date, log_event.date) accept strings without format validation or regex pattern. No min/max constraints on array length. LLMs may pass invalid dates or oversized arrays.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
send_report tool accepts arbitrary text with no length limit or validation. Telegram message size limits (4096 chars) not enforced. Tool may silently truncate or fail without guidance.
archive_events and consolidate_event lack idempotency guarantees. Calling twice with same dates may produce different results (second call finds no matching sections). No documentation of side effects or retry safety.