Handy
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HANDY_BACKEND | No | Set to "virtual" to use the built-in 1280x800 multi-window interactive virtual desktop backend for headless CI and agent sandboxing. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Handy provides real-time computer screen vision with mapped (x, y) coordinates, window-scoped capture (window), active window metadata, pixel-under-cursor color, and frame-to-frame visual diffs (handy_see), plus real-time native mouse, keyboard, clipboard, and window control supporting chained multi-step actions and window-relative coordinates (handy_act, handy_windows, handy_clipboard). Always call handy_see before clicking unfamiliar UI elements, prefer paste for long or multi-line text, use wait_for_change / wait_for_settled / wait_for_color instead of blind sleeps, and chain sequential steps in a single handy_act call.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| handy_seeA | Capture the computer screen (or a single desktop window via |
| handy_actA | Execute native mouse, keyboard, clipboard-paste, window-focus, and smart visual-wait controls in real-time. Supports chaining multiple steps sequentially in one call — e.g. [{ "type": "focus_window", "title": "Code" }, { "type": "click", "x": 420, "y": 260 }, { "type": "paste", "text": "Hello!" }, { "type": "wait_for_settled" }]. Steps support |
| handy_windowsA | List visible desktop windows with their titles, owning apps, screen bounds |
| handy_clipboardA | Read current plain-text clipboard contents ( |
| handy_statusA | Check whether Handy permission is currently ON or OFF, which native OS backend is active, connected monitor dimensions, active window, and current mouse position (when enabled). |
| handy_permissionA | Inspect or turn OFF Handy computer control permissions. Turning Handy OFF ( |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| computer-control | Guide an LLM through accurate coordinate-mapped screen reading and chained mouse/keyboard control. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| handy-status | Live JSON state of Handy permission toggle, OS backend, active window, and displays. |
| handy-windows | Live list of visible desktop windows with titles, apps, and bounds (requires Handy ON). |
| handy-current-screen | Real-time PNG screenshot with mapped coordinates and live mouse position (requires Handy ON). |
TDQS
Scored across 6 tools
Each tool maps to a distinct capability (observe, act, enumerate windows, clipboard, status, permissions), and descriptions give clear guidance on when to use handy_see vs handy_act. There is minor overlap: window focusing exists both in handy_act as a step type and as handy_windows 'focus', and paste in handy_act overlaps with handy_clipboard write, while handy_status vs handy_permission both report permission state.
All six tools share a consistent 'handy_' prefix with snake_case suffixes. The suffixes mix verbs (see, act) with nouns (windows, clipboard, permission, status), which is a small deviation but still predictable and readable as a toolset.
Six tools is tightly scoped for a computer-control server: observe, act, windows, clipboard, status, and permissions. Each one earns its place and there is no redundant filler.
Coverage spans the core loop of screenshot -> act -> verify, plus window enumeration, clipboard I/O, and permission control. Gaps remain for window management (move/resize/close), multi-monitor enumeration, and richer clipboard formats, but agents can work around these.