An MCP server exposing Windows UI Automation. Instead of screenshots and pixel coordinates it reads the real control tree of an application and operates controls through their accessibility actions.
Server has 24 tools with complete schemas and descriptions. Naming is verb-forward and clear (describe_screen, read_ui_tree, invoke, toggle, set_text). Descriptions are substantive (avg ~120 chars) and explain purpose well. However, several tools lack parameter descriptions for all fields, and output schemas are not formally documented. Error handling is minimal, no recovery guidance or categorization. Security concerns: clipboard tool accepts write mode without validation; set_guard blocks user input without confirmation. Composition is good, tools chain well (describe_screen → read_ui_tree → invoke). No tool combines multiple concerns. Baseline: 549 production tools avg 18-char names, 194-char descriptions, 100% param coverage in A+ tier. This server achieves ~85% param coverage and ~100% tool descriptions, placing it solidly in the C+ to B- range.
Execute multiple tools in sequence and return all results.
Capture a screenshot of the screen, a window, or a single element as a PNG image.
Click at a screen coordinate.
Read or write the system clipboard.
Describe the current screen: all open windows, their titles, classes, and whether they are readable. Returns a list of windows with their accessibility tree status.
Get the element at a specific screen coordinate.
Expand or collapse a tree item or group.
Output schemas not formally documented. Tools return results but LLMs cannot see field structure, types, or required fields. Forces LLMs to infer output shape from descriptions alone.
Destructive operations (invoke, toggle, set_text, set_value, window, click, send_keys, clipboard write, set_guard) lack confirmation or dry-run support. Agents can accidentally modify UI without verification.
Error handling is minimal. No recovery guidance, error categorization, or actionable messages. Tools fail silently or return generic errors without telling LLM what to do next.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Find elements in a window by name, role, or state. Returns matching elements with their references and available actions.
Get the currently focused element and its context.
Read the text content of an element.
Invoke an action on an element (click, press, activate).
List all open windows with their titles, classes, and handles.
Read a table or grid control. Returns rows and columns with their content.
Read the accessibility tree of a window. Returns the control hierarchy with names, roles, states, and available actions.
Scroll a scrollable element in a direction.
Select an item in a list, dropdown, or selection control.
Run internal diagnostics and return server health status.
Send keyboard input to the focused window.
Control the input guard overlay: start blocking user input, or stop blocking.
Set the text content of an input field or text box.
Set the numeric value of a range or slider control.
Toggle a checkbox or switch element.
Wait for an element to appear or change state.
Manipulate a window: move, resize, minimize, maximize, close, or set focus.
Parameter descriptions incomplete or generic. 'ref' parameter appears in 12+ tools but lacks detail on format, lifetime, or how to obtain it. LLMs must infer from context.
set_guard tool blocks user input without confirmation or timeout. Agents could lock users out indefinitely. Missing safeguards for irreversible state changes.