Offline local voice daemon: push-to-talk dictation and spoken status feedback for AI coding agents
Banshee provides 17 tools with basic descriptions and some schema information, but lacks the depth and precision required for production-grade agent integration. Most tool descriptions are terse (10-50 chars, below the 194-char baseline) and lack actionable guidance. Parameter descriptions are minimal or absent. No input/output schemas are formally documented. Tool naming is generally acceptable but several tools combine multiple concerns or lack verb-noun clarity. The codebase shows this is primarily a daemon control system (start/restart/status) with voice I/O features (list_voices, preview_voice, download_models), but the tool definitions do not match Arcade's 54 patterns for error recovery, idempotency, composition, or LLM-optimized descriptions. Schemas are inferred from sparse function signatures; explicit JSON Schema registration is not visible in the provided source snippets.
Apply agent connection or disconnection changes
Clear all dictation history
Copy text to system clipboard
Detect connected AI coding agents
Download required speech recognition and synthesis models
Retrieve dictation history with optional limit
List available input audio devices
No visible input/output schemas. Parameters are inferred from function signatures in Rust; JSON Schema definitions are not documented. For tools like 'set_setting', the schema shows {'value': object} but lacks structure, enum constraints, or nested field documentation.
Descriptions are terse and lack actionable context. Most are 10-35 chars (e.g., 'Get the current status of the daemon', 'List available input audio devices'). Baseline is 194 chars. No descriptions answer WHEN to use this tool instead of a similar one, what it returns, or prerequisites.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | <=2025-11-25 | v2 |
List supported languages
List available text-to-speech voices
Open system permission settings pane for a specific feature
Open the system tray menu bar icon
Plan changes for connecting or disconnecting an agent
Preview a specific text-to-speech voice
Restart the Banshee daemon service
Configure daemon settings with optional persistence
Start the Banshee daemon service
Get the current status of the daemon
Parameter descriptions are minimal or missing. E.g., 'set_setting' has 'value: object' with no guidance on valid structure, nesting, or examples. 'plan_connect' and 'apply_connect' have identical schemas and descriptions but do not clarify the distinction or why both exist.
No error handling or recovery guidance. Descriptions do not state which tools are idempotent, retryable, or irreversible. E.g., 'clear_history' is destructive but lacks confirmation or dry-run guidance. No tool describes what to do if it fails.
plan_connect and apply_connect appear to duplicate functionality. Both accept the same (id, disconnect) parameters with identical descriptions. The 'plan' prefix suggests a dry-run, but no description clarifies the difference or the expected workflow.
No output schema documentation. Tools like 'list_devices', 'list_voices', 'history', and 'detect_agents' describe what they return in prose only. No structured output schema is provided, forcing LLMs to guess field names and types.
Tool naming lacks consistent verb_noun structure in some cases. 'open_the_tray' includes 'the' (non-standard), and 'open_permission_pane' is vague about which feature or system component is affected. 'copy_text' is generic; 'copy_to_clipboard' would be clearer.
Parameters accept opaque IDs without accepting human-readable names. E.g., 'preview_voice' requires a voice 'id' but provides no guidance on where to find valid IDs. Agents must call 'list_voices' first to discover IDs, this is defensible but should be documented.
set_setting parameter 'value' is typed as 'object' with no constraints. No documentation of allowed keys, nesting, types, or validation rules. This invites invalid input and requires agents to guess the schema.