A local sensory organ on macOS. Exposes screen perception (Vue, Touché) to any AI client over MCP. Agnostic by design; it never calls an AI itself.
Daimon defines 10 tools with complete input schemas and descriptions. Naming follows verb_noun convention (overlay_*, main_*). Descriptions are present but vary in quality: some are detailed (main_click at 380+ chars), others minimal (overlay_clear at 24 chars). All tools have typed parameters with descriptions. However, output schemas are not documented, LLMs cannot predict return structure. Error handling guidance is absent. Security considerations (reversibility flags, intent declarations) are present but not formalized as error recovery patterns. No pagination, no structured error responses, no recovery guidance.
Click an element/coordinate. button=left|right|middle, count=1|2 (double-click), modifiers=[cmd,shift,opt,ctrl]. Provide role/label (from Touché) so Daimon can verify reversibility. Refused above the ceiling. space='image' with display=k passes snapshot-local pixels (set max_width/region to match that snapshot) and Daimon resolves the global pixel itself — no manual offset/scale, negative displays handled. Pass window={bundle|title|pid} so Daimon checks the target is frontmost (ensure_focus on by default: activates a non-frontmost target window before clicking).
Send a discrete key or chord (Return/Tab/Esc/arrows/F-keys or e.g. cmd+shift+r). Distinct from main_type (text). Dangerous combos require confirmation.
Non-destructive scroll by scroll_y pixels. Give an explicit target view with (x, y) — Daimon moves the pointer there first so the scroll lands on the view you mean, not 'the focused view' (the last-touched element, often the wrong pane). x/y accept space='image' + display=k like the other Hands. Omit x/y to scroll wherever the pointer is.
Activate an engaging button at (x,y) via the Accessibility API. VALIDATION level — non-return targets require human confirmation. ensure_focus on by default: activates a non-frontmost target window before pressing.
Type text into the focused field. Declare intent/reversibility.
No output schemas documented. LLMs cannot predict return structure or plan downstream tool chains. Tools return success/failure but structure is opaque.
No error handling guidance. Tools declare reversibility and intent but do not document what errors can occur, how to recover, or what the LLM should do next.
Minimal descriptions on overlay tools. overlay_clear is 24 chars ('Clear all overlay drawings.'), below the 50-char baseline. Lacks context for LLM selection.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Show a HUD banner message.
Clear all overlay drawings.
Move the overlay cursor halo to (x,y).
Outline a screen rect with an optional label.
Dim everything except a screen rect (focus).
Complex parameter semantics not fully documented. main_click accepts space='image' with display=k and region bounds, but interaction between these is described in prose only, no formal constraints or validation rules.
No pagination or result limits documented. Tools that return lists (e.g., if any do) lack limit/offset parameters and total count fields.