Safe Windows Computer Use, desktop automation, UI Automation, and MCP tools for DeepSeek Harness
14 tools with mixed quality. Naming is verb-forward and clear (list_windows, get_window, activate_window, click, drag, press_key, etc.), following pattern:tool conventions well. However, descriptions are inconsistent: some are terse (10-30 chars, e.g. 'List available windows on the desktop'), while others lack parameter-level documentation. Input schemas are present for all tools but vary in completeness, complex tools like click, drag, press_key, and scroll share a large nested window object and action_intent structure, yet lack descriptions for nested fields (appId, pid, hwnd, generation, kind, summary). Output schemas are not documented anywhere in the provided source. Error handling and recovery guidance are absent. No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk classifications (READ_ONLY vs WRITE). Composition is reasonable, tools are single-purpose, but chaining is not optimized (e.g., get_window_state returns observation_id and screenshot_id but downstream tools accept them as optional params, unclear if required for context).
Activate a window and bring it to foreground
Click on a UI element or coordinate
Drag from one location to another
Find UI elements matching criteria in the current window
Get the current state of an application (legacy compatibility adapter)
Get details about a specific window
Get the current state of a window including UI elements and screenshot
Nested object parameters (window, action_intent) lack field-level descriptions. LLMs cannot infer what appId, pid, hwnd, generation, kind, or summary mean without explicit documentation.
No output schemas documented. Tools return data but LLMs cannot plan downstream calls without knowing response structure (e.g., what fields does get_window_state return? Does it include observation_id for chaining?).
Tool descriptions are terse (10-50 chars) and lack context on WHEN to use each tool. E.g., 'Perform a secondary action on a UI element (e.g., SetFocus)' does not explain when to call this vs click or press_key.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Launch an application
List available windows on the desktop
Perform a secondary action on a UI element (e.g., SetFocus)
Press a keyboard key or key combination
Scroll within a window
Set the value of a UI element
Type text into a focused input field
No error handling guidance. Tools do not document what errors can occur, whether they are retryable, or what the LLM should do next (e.g., if click fails, should it retry, call get_window_state first, or abort?).
Tool annotations missing. Despite clear risk classifications (READ_ONLY vs WRITE), tools lack readOnlyHint and destructiveHint annotations. LLMs cannot distinguish safe from risky operations without explicit hints.