Linux screen automation tool with HTTP API and MCP server support for accessibility-based UI automation
Geisterhand exposes 7 tools with basic schemas and descriptions, but falls short of production quality. Tool names lack action verbs (screenshot, click, type, key, scroll, status, check, only 'click', 'type', 'key', 'scroll' start with verbs; 'screenshot', 'status', 'check' are nouns). Descriptions are present but minimal (10-50 chars), below the 50-200 char LLM-optimized baseline. Parameter descriptions exist but are sparse and lack constraints (e.g., 'button' accepts 'left, right, center' but no enum; 'key' accepts arbitrary strings with no validation guidance). Output schemas are not documented, LLMs cannot predict what these tools return. Error handling is absent; no recovery guidance. Security concern: 'pid' parameter exposes process targeting without permission checks. Overall, definitions are skeletal, suitable for CLI but not for agentic use.
Check accessibility support for an app
Click at coordinates or element
Press a key combination
Take a screenshot and output to stdout or file
Scroll at position or element
Query server status
Type text into the focused element
No output schemas documented. LLMs cannot predict return types, forcing them to guess what fields are available for downstream tool calls or user display.
Tool names lack action verbs. 'screenshot', 'status', 'check' are nouns; LLMs infer intent from verb-noun pairs (get_screenshot, query_status, verify_accessibility). Noun-only names reduce clarity.
Descriptions are minimal (10-50 chars, well below 50-200 char baseline). 'Take a screenshot and output to stdout or file' lacks WHEN to use, WHAT it returns, and prerequisites. Insufficient for LLM tool selection.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 30 | 2026-07-28+ | v2 |
Parameter constraints not formalized. 'button' accepts 'left, right, center' as free text, not enum. 'key' accepts arbitrary strings with no validation. LLMs hallucinate invalid values; enums prevent this.
No error handling or recovery guidance. Tools fail silently or return raw errors. LLMs cannot self-correct or know whether to retry, ask user, or abort.