A Dart-based agent framework with tool execution, memory management, task scheduling, and platform automation capabilities
Sanad Agent has 6 tools with mixed quality. Tool definitions are present with schemas and descriptions, but several critical gaps emerge: (1) naming lacks consistent verb-noun patterns (e.g., 'system_keyboard', 'system_mouse' are vague about action scope); (2) descriptions are present but often generic and lack WHEN/WHY guidance for LLM selection; (3) parameter descriptions are sparse or missing entirely (e.g., system_keyboard 'text' param has no description of expected format); (4) no documented output schemas for any tool; (5) error handling is absent, no recovery guidance or categorization; (6) no security considerations despite WRITE-risk tools controlling system input and task delegation. The memory tool is the strongest (detailed description, atomic operations), but system tools are weakest (minimal descriptions, unclear parameter semantics).
Delegate a specific task to a sub-agent. Useful for parallel work or specialized roles.
List all currently scheduled tasks.
Save durable facts to persistent file-backed memory. Prefer one operations batch when consolidating or making multiple changes; the batch is atomic and checked against final capacity. Use target="user" for user identity/preferences and target="memory" for durable environment/project notes. Use a single action for one add, replace, remove, or explicit read.
Schedule a task to be executed by the agent at a specific time.
Type text or press keyboard shortcuts.
Control the mouse cursor, click, or scroll.
System tools (keyboard, mouse) lack parameter descriptions. 'text' param in system_keyboard has no description of format, length, or encoding. 'x', 'y', 'dx', 'dy' in system_mouse lack coordinate system documentation (screen pixels? relative? absolute?).
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. E.g., does list_scheduled_tasks return task IDs, timestamps, descriptions? What fields does schedule_task return?
No error handling or recovery guidance. Tools provide no actionable error messages. E.g., if schedule_task fails due to invalid time format, what should the LLM do? Retry? Ask user? No guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
Naming ambiguity in system tools. 'system_keyboard' and 'system_mouse' do not clearly indicate scope (local machine? remote? which user?). Verb-noun pattern weak: 'type_text' or 'press_key' would be clearer than 'system_keyboard'.
schedule_task and delegate_task descriptions lack WHEN/WHY guidance. When should an LLM choose schedule_task over delegate_task? What are the prerequisites? No dependency hints provided.