A Ruby gem for building AI agents with tool execution, session management, and multi-provider support (Anthropic, OpenAI, Gemini)
Mistri provides 7 file and memory management tools with basic schemas and descriptions. All tools have input schemas with typed properties and descriptions. However, descriptions are minimal (10-50 chars), lacking context on WHEN to use each tool, prerequisites, or recovery guidance. Parameter descriptions are present but terse. No output schemas documented. Error handling is absent from visible code. Tools follow verb_noun naming (read_file, write_file, edit_file) which is good, but lack guidance on mutual exclusivity (edit_file vs write_file), idempotency, or side effects. No tool annotations (readOnlyHint, destructiveHint) despite clear risk profiles (WRITE vs READ_ONLY).
Edits a file by replacing old text with new text
Searches for text patterns in a file
Lists files in the workspace
Reads the contents of a file from the workspace
Reads from a persistent memory store
Updates a persistent memory store
Writes content to a file in the workspace
Descriptions are too brief (10-50 chars, baseline 194 chars). Missing WHEN to use, prerequisites, and side effects. E.g., 'Reads the contents of a file from the workspace' lacks context on file size limits, encoding, or error cases.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. E.g., list_files should document returned fields (name, type, size, path) and pagination behavior.
No tool annotations despite clear risk profiles. write_file and edit_file are destructive (WRITE risk); read_file, find_in_file, list_files, read_memory are read-only. Missing destructiveHint and readOnlyHint annotations prevent agents from reasoning about safety.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | <=2025-11-25 | v2 |
edit_file and write_file both modify files but lack guidance on mutual exclusivity or when to use each. edit_file requires old_string match; write_file overwrites. LLMs may choose wrong tool or attempt both.
No error handling guidance visible. Tools lack recovery hints (e.g., 'File not found. Check path with list_files()' or 'Memory key not found. Use update_memory() to initialize.'). Agents cannot self-correct on failures.