Skip to main content
Glama

Control computer

control_computer
Destructive

Inspect and operate native desktop applications: windows, UI elements, waits, input, clipboard, launches, notifications, and screen recording using semantic targets before raw coordinates.

Instructions

Use this for semantic inspection or control of native desktop applications on this computer: windows, accessibility/UI elements, waits, displays, app launch, text/input, clipboard, open/reveal, notifications, or short screen recording. Snapshot/find/wait operations observe state; clicks, typing, window close, app launch, clipboard writes, and recording can change local application state. Prefer semantic targets before raw coordinates.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
operationYesConcrete local runtime operation to execute in this domain.
parametersNoArguments for the selected operation; validated against that operation’s original closed schema.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.2.141
    • changedInput schema / allOf
      Previous value: -[
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "computer_snapshot"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "browser_max_nodes": {
      -              "description": "Maximum browser accessibility nodes; default 500, maximum 2000.",
      -              "type": "number"
      -            },
      -            "grid_columns": {
      -              "description": "Optional reference-grid column count returned as visual metadata; 0..20.",
      -              "type": "number"
      -            },
      -            "grid_rows": {
      -              "description": "Optional reference-grid row count returned as visual metadata; 0..20.",
      -              "type": "number"
      -            },
      -            "include_browser": {
      -              "description": "Include CDP browser accessibility when available. Default auto: only when the active app looks Chromium-based.",
      -              "type": "boolean"
      -            },
      -            "include_ocr": {
      -              "description": "Run optional local OCR. Default auto: only when native accessibility and browser DOM are unavailable. Requires tesseract on PATH.",
      -              "type": "boolean"
      -            },
      -            "include_screenshot": {
      -              "description": "Include real rendered desktop pixels; default true.",
      -              "type": "boolean"
      -            },
      -            "include_ui": {
      -              "description": "Include native accessibility tree; default true. False is the fast screenshot-only path.",
      -              "type": "boolean"
      -            },
      -            "max_ui_depth": {
      -              "description": "Maximum native accessibility depth; default 12.",
      -              "type": "number"
      -            },
      -            "max_ui_nodes": {
      -              "description": "Maximum native accessibility nodes; default 800.",
      -              "type": "number"
      -            },
      -            "ocr_language": {
      -              "description": "Tesseract language code, default eng; multiple languages may use eng+deu.",
      -              "type": "string"
      -            },
      -            "ocr_max_words": {
      -              "description": "Maximum OCR word boxes returned; default 2000, maximum 10000.",
      -              "type": "number"
      -            },
      -            "ocr_psm": {
      -              "description": "Tesseract page segmentation mode, 3..13; default 11.",
      -              "type": "number"
      -            },
      -            "ocr_timeout_ms": {
      -              "description": "OCR timeout, default 30000 ms, maximum 120000 ms.",
      -              "type": "number"
      -            },
      -            "screenshot_monitor": {
      -              "description": "Monitor name substring or \"primary\".",
      -              "type": "string"
      -            },
      -            "screenshot_monitor_index": {
      -              "description": "Zero-based monitor index.",
      -              "type": "number"
      -            },
      -            "screenshot_padding": {
      -              "description": "Pixels of context around a targeted screenshot; 0..200.",
      -              "type": "number"
      -            },
      -            "screenshot_region": {
      -              "description": "Virtual-desktop [left,top,right,bottom] region; takes precedence over full desktop.",
      -              "items": {
      -                "type": "number"
      -              },
      -              "maxItems": 4,
      -              "minItems": 4,
      -              "type": "array"
      -            },
      -            "screenshot_window_id": {
      -              "description": "Capture the window returned by list_windows instead of the whole desktop.",
      -              "type": "string"
      -            },
      -            "semantic_tree": {
      -              "description": "Include compact semantic hierarchy text alongside nodes; default true.",
      -              "type": "boolean"
      -            },
      -            "ui_browser_dom": {
      -              "description": "Prefer the native browser accessibility document subtree when the OS exposes one; on Windows this also enables the Firefox MSAA/IAccessible fallback.",
      -              "type": "boolean"
      -            },
      -            "ui_scope": {
      -              "description": "Accessibility scope for computer_snapshot. Default active keeps the compact snapshot fast; desktop requests all accessible applications/windows.",
      -              "enum": [
      -                "active",
      -                "desktop"
      -              ],
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "computer_action"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "allOf": [
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "const": "click"
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "anyOf": [
      -                  {
      -                    "required": [
      -                      "id"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "label"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "name"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "role"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "automation_id"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "selector"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "browser_text"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "ocr_text"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "x",
      -                      "y"
      -                    ]
      -                  }
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "enum": [
      -                      "invoke",
      -                      "set_value",
      -                      "select",
      -                      "toggle",
      -                      "expand",
      -                      "collapse",
      -                      "scroll_into_view",
      -                      "set_range_value",
      -                      "add_to_selection",
      -                      "remove_from_selection"
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "anyOf": [
      -                  {
      -                    "required": [
      -                      "id"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "label"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "name"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "role"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "automation_id"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "selector"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "browser_text"
      -                    ]
      -                  }
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "const": "focus"
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "anyOf": [
      -                  {
      -                    "required": [
      -                      "id"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "label"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "name"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "role"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "automation_id"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "selector"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "browser_text"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "pid"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "app"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "window_title"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "title"
      -                    ]
      -                  }
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "enum": [
      -                      "set_value",
      -                      "set_range_value"
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "value"
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "const": "multi_select"
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "targets"
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "const": "multi_edit"
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "edits"
      -                ]
      -              }
      -            }
      -          ],
      -          "properties": {
      -            "action": {
      -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
      -              "enum": [
      -                "click",
      -                "invoke",
      -                "focus",
      -                "set_value",
      -                "select",
      -                "toggle",
      -                "expand",
      -                "collapse",
      -                "scroll_into_view",
      -                "set_range_value",
      -                "add_to_selection",
      -                "remove_from_selection",
      -                "multi_select",
      -                "multi_edit"
      -              ],
      -              "type": "string"
      -            },
      -            "app": {
      -              "description": "Limit matching to an application/process name substring when available.",
      -              "type": "string"
      -            },
      -            "automation_id": {
      -              "description": "Windows AutomationId when available.",
      -              "type": "string"
      -            },
      -            "backend": {
      -              "description": "Input backend preference. auto uses proven local backends and already-authorized portal input; portal explicitly requests XDG RemoteDesktop consent on Wayland; x11 forces XWayland/xdotool only for operations where read-back testing shows it is reliable. GNOME Wayland keyboard/text deliberately reject x11.",
      -              "enum": [
      -                "auto",
      -                "x11",
      -                "portal"
      -              ],
      -              "type": "string"
      -            },
      -            "browser_text": {
      -              "description": "Visible browser text used to locate a DOM fallback target.",
      -              "type": "string"
      -            },
      -            "edits": {
      -              "description": "Native semantic target + text entries for action=multi_edit.",
      -              "items": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "app": {
      -                    "description": "Limit matching to an application/process name substring when available.",
      -                    "type": "string"
      -                  },
      -                  "automation_id": {
      -                    "description": "Windows AutomationId when available.",
      -                    "type": "string"
      -                  },
      -                  "clear": {
      -                    "description": "Clear the current value before entering text; default true.",
      -                    "type": "boolean"
      -                  },
      -                  "id": {
      -                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
      -                    "type": "string"
      -                  },
      -                  "label": {
      -                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
      -                    "type": "number"
      -                  },
      -                  "method": {
      -                    "description": "Text-entry strategy; auto is recommended.",
      -                    "enum": [
      -                      "auto",
      -                      "accessibility",
      -                      "clipboard",
      -                      "keys"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "description": "Accessible name/title substring.",
      -                    "type": "string"
      -                  },
      -                  "pid": {
      -                    "description": "Limit matching to one owning process id when available.",
      -                    "type": "number"
      -                  },
      -                  "role": {
      -                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      -                    "type": "string"
      -                  },
      -                  "text": {
      -                    "description": "Replacement text for this semantic edit.",
      -                    "type": "string"
      -                  },
      -                  "window_title": {
      -                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "text"
      -                ],
      -                "type": "object"
      -              },
      -              "maxItems": 100,
      -              "minItems": 1,
      -              "type": "array"
      -            },
      -            "endpoint": {
      -              "description": "Loopback Chrome DevTools endpoint for a browser fallback.",
      -              "type": "string"
      -            },
      -            "id": {
      -              "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
      -              "type": "string"
      -            },
      -            "label": {
      -              "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
      -              "type": "number"
      -            },
      -            "name": {
      -              "description": "Accessible name/title substring.",
      -              "type": "string"
      -            },
      -            "ocr_language": {
      -              "description": "Tesseract language code, default eng.",
      -              "type": "string"
      -            },
      -            "ocr_psm": {
      -              "description": "Tesseract page segmentation mode, default 11.",
      -              "type": "number"
      -            },
      -            "ocr_region": {
      -              "description": "Optional virtual-desktop [left,top,right,bottom] region to OCR. Prefer bounds from list_windows or computer_snapshot.",
      -              "items": {
      -                "type": "number"
      -              },
      -              "maxItems": 4,
      -              "minItems": 4,
      -              "type": "array"
      -            },
      -            "ocr_text": {
      -              "description": "Visible text to find in rendered pixels for the OCR click fallback.",
      -              "type": "string"
      -            },
      -            "ocr_timeout_ms": {
      -              "description": "OCR timeout in milliseconds.",
      -              "type": "number"
      -            },
      -            "option": {
      -              "description": "Option value for browser select.",
      -              "type": "string"
      -            },
      -            "pid": {
      -              "description": "Limit matching to one owning process id when available.",
      -              "type": "number"
      -            },
      -            "replace_selection": {
      -              "description": "For multi_select, select the first item before adding the rest; default true.",
      -              "type": "boolean"
      -            },
      -            "role": {
      -              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      -              "type": "string"
      -            },
      -            "selector": {
      -              "description": "CSS selector when the fallback target is a browser element.",
      -              "type": "string"
      -            },
      -            "target": {
      -              "description": "Optional target type. auto tries native accessibility first, then browser DOM/CDP, OCR text when requested, then coordinates for click.",
      -              "enum": [
      -                "auto",
      -                "ui",
      -                "ui_element",
      -                "browser",
      -                "ocr",
      -                "coordinates"
      -              ],
      -              "type": "string"
      -            },
      -            "target_id": {
      -              "description": "Browser page target id returned by browser_tabs.",
      -              "type": "string"
      -            },
      -            "targets": {
      -              "description": "Native semantic targets for action=multi_select.",
      -              "items": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "app": {
      -                    "description": "Limit matching to an application/process name substring when available.",
      -                    "type": "string"
      -                  },
      -                  "automation_id": {
      -                    "description": "Windows AutomationId when available.",
      -                    "type": "string"
      -                  },
      -                  "id": {
      -                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
      -                    "type": "string"
      -                  },
      -                  "label": {
      -                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
      -                    "type": "number"
      -                  },
      -                  "name": {
      -                    "description": "Accessible name/title substring.",
      -                    "type": "string"
      -                  },
      -                  "pid": {
      -                    "description": "Limit matching to one owning process id when available.",
      -                    "type": "number"
      -                  },
      -                  "role": {
      -                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      -                    "type": "string"
      -                  },
      -                  "window_title": {
      -                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      -                    "type": "string"
      -                  }
      -                },
      -                "type": "object"
      -              },
      -              "maxItems": 100,
      -              "minItems": 1,
      -              "type": "array"
      -            },
      -            "text": {
      -              "description": "Text used by multi_edit or as a compatibility value for a semantic edit.",
      -              "type": "string"
      -            },
      -            "title": {
      -              "description": "Optional browser page title substring when target=browser.",
      -              "type": "string"
      -            },
      -            "url_contains": {
      -              "description": "Browser URL substring used to select a page.",
      -              "type": "string"
      -            },
      -            "value": {
      -              "description": "New value for set_value, set_range_value, or select.",
      -              "type": "string"
      -            },
      -            "window_title": {
      -              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      -              "type": "string"
      -            },
      -            "x": {
      -              "description": "Virtual-desktop X coordinate used only by the final click fallback.",
      -              "type": "number"
      -            },
      -            "y": {
      -              "description": "Virtual-desktop Y coordinate used only by the final click fallback.",
      -              "type": "number"
      -            }
      -          },
      -          "required": [
      -            "action"
      -          ],
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "parameters"
      -      ]
      -    }
      -  }
      -]New value: +[
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "computer_snapshot"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "browser_max_nodes": {
      +              "description": "Maximum browser accessibility nodes; default 500, maximum 2000.",
      +              "type": "number"
      +            },
      +            "grid_columns": {
      +              "description": "Optional reference-grid column count returned as visual metadata; 0..20.",
      +              "type": "number"
      +            },
      +            "grid_rows": {
      +              "description": "Optional reference-grid row count returned as visual metadata; 0..20.",
      +              "type": "number"
      +            },
      +            "include_browser": {
      +              "description": "Include CDP browser accessibility when available. Default auto: only when the active app looks Chromium-based.",
      +              "type": "boolean"
      +            },
      +            "include_ocr": {
      +              "description": "Run optional local OCR. Default auto: only when native accessibility and browser DOM are unavailable. Requires tesseract on PATH.",
      +              "type": "boolean"
      +            },
      +            "include_screenshot": {
      +              "description": "Include real rendered desktop pixels; default true.",
      +              "type": "boolean"
      +            },
      +            "include_ui": {
      +              "description": "Include native accessibility tree; default true. False is the fast screenshot-only path.",
      +              "type": "boolean"
      +            },
      +            "max_ui_depth": {
      +              "description": "Maximum native accessibility depth; default 12.",
      +              "type": "number"
      +            },
      +            "max_ui_nodes": {
      +              "description": "Maximum native accessibility nodes; default 800.",
      +              "type": "number"
      +            },
      +            "ocr_language": {
      +              "description": "Tesseract language code, default eng; multiple languages may use eng+deu.",
      +              "type": "string"
      +            },
      +            "ocr_max_words": {
      +              "description": "Maximum OCR word boxes returned; default 2000, maximum 10000.",
      +              "type": "number"
      +            },
      +            "ocr_psm": {
      +              "description": "Tesseract page segmentation mode, 3..13; default 11.",
      +              "type": "number"
      +            },
      +            "ocr_timeout_ms": {
      +              "description": "OCR timeout, default 30000 ms, maximum 120000 ms.",
      +              "type": "number"
      +            },
      +            "screenshot_monitor": {
      +              "description": "Monitor name substring or \"primary\".",
      +              "type": "string"
      +            },
      +            "screenshot_monitor_index": {
      +              "description": "Zero-based monitor index.",
      +              "type": "number"
      +            },
      +            "screenshot_padding": {
      +              "description": "Pixels of context around a targeted screenshot; 0..200.",
      +              "type": "number"
      +            },
      +            "screenshot_region": {
      +              "description": "Virtual-desktop [left,top,right,bottom] region; takes precedence over full desktop.",
      +              "items": {
      +                "type": "number"
      +              },
      +              "maxItems": 4,
      +              "minItems": 4,
      +              "type": "array"
      +            },
      +            "screenshot_window_id": {
      +              "description": "Capture the window returned by list_windows instead of the whole desktop.",
      +              "type": "string"
      +            },
      +            "semantic_tree": {
      +              "description": "Include compact semantic hierarchy text alongside nodes; default true.",
      +              "type": "boolean"
      +            },
      +            "ui_browser_dom": {
      +              "description": "Prefer the native browser accessibility document subtree when the OS exposes one; on Windows this also enables the Firefox MSAA/IAccessible fallback.",
      +              "type": "boolean"
      +            },
      +            "ui_scope": {
      +              "description": "Accessibility scope for computer_snapshot. Default active keeps the compact snapshot fast; desktop requests all accessible applications/windows.",
      +              "enum": [
      +                "active",
      +                "desktop"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      }
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "computer_action"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "allOf": [
      +            {
      +              "if": {
      +                "properties": {
      +                  "target": {
      +                    "const": "window"
      +                  }
      +                },
      +                "required": [
      +                  "target"
      +                ]
      +              },
      +              "then": {
      +                "anyOf": [
      +                  {
      +                    "required": [
      +                      "window_id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "pid"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "app"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "window_title"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "title"
      +                    ]
      +                  }
      +                ],
      +                "properties": {
      +                  "action": {
      +                    "enum": [
      +                      "type",
      +                      "focus",
      +                      "scroll",
      +                      "drag"
      +                    ]
      +                  }
      +                }
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "click"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "anyOf": [
      +                  {
      +                    "required": [
      +                      "id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "label"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "name"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "role"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "automation_id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "selector"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "browser_text"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "name"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "ocr_text"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "x",
      +                      "y"
      +                    ]
      +                  }
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "enum": [
      +                      "invoke",
      +                      "set_value",
      +                      "select",
      +                      "toggle",
      +                      "expand",
      +                      "collapse",
      +                      "scroll_into_view",
      +                      "set_range_value",
      +                      "add_to_selection",
      +                      "remove_from_selection"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "anyOf": [
      +                  {
      +                    "required": [
      +                      "id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "label"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "name"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "role"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "automation_id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "selector"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "browser_text"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "name"
      +                    ]
      +                  }
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "focus"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "anyOf": [
      +                  {
      +                    "required": [
      +                      "id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "label"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "name"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "role"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "automation_id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "selector"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "browser_text"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "name"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "window_id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "pid"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "app"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "window_title"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "title"
      +                    ]
      +                  }
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "type"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "allOf": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "required": [
      +                          "id"
      +                        ]
      +                      },
      +                      {
      +                        "required": [
      +                          "label"
      +                        ]
      +                      },
      +                      {
      +                        "required": [
      +                          "name"
      +                        ]
      +                      },
      +                      {
      +                        "required": [
      +                          "role"
      +                        ]
      +                      },
      +                      {
      +                        "required": [
      +                          "automation_id"
      +                        ]
      +                      },
      +                      {
      +                        "required": [
      +                          "selector"
      +                        ]
      +                      },
      +                      {
      +                        "required": [
      +                          "browser_text"
      +                        ]
      +                      },
      +                      {
      +                        "required": [
      +                          "name"
      +                        ]
      +                      },
      +                      {
      +                        "required": [
      +                          "window_id"
      +                        ]
      +                      },
      +                      {
      +                        "required": [
      +                          "pid"
      +                        ]
      +                      },
      +                      {
      +                        "required": [
      +                          "app"
      +                        ]
      +                      },
      +                      {
      +                        "required": [
      +                          "window_title"
      +                        ]
      +                      },
      +                      {
      +                        "required": [
      +                          "title"
      +                        ]
      +                      }
      +                    ]
      +                  },
      +                  {
      +                    "if": {
      +                      "properties": {
      +                        "target": {
      +                          "enum": [
      +                            "ui",
      +                            "ui_element"
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "target"
      +                      ]
      +                    },
      +                    "then": {
      +                      "anyOf": [
      +                        {
      +                          "required": [
      +                            "id"
      +                          ]
      +                        },
      +                        {
      +                          "required": [
      +                            "label"
      +                          ]
      +                        },
      +                        {
      +                          "required": [
      +                            "name"
      +                          ]
      +                        },
      +                        {
      +                          "required": [
      +                            "role"
      +                          ]
      +                        },
      +                        {
      +                          "required": [
      +                            "automation_id"
      +                          ]
      +                        }
      +                      ]
      +                    }
      +                  },
      +                  {
      +                    "if": {
      +                      "properties": {
      +                        "target": {
      +                          "const": "browser"
      +                        }
      +                      },
      +                      "required": [
      +                        "target"
      +                      ]
      +                    },
      +                    "then": {
      +                      "anyOf": [
      +                        {
      +                          "required": [
      +                            "selector"
      +                          ]
      +                        },
      +                        {
      +                          "required": [
      +                            "browser_text"
      +                          ]
      +                        },
      +                        {
      +                          "required": [
      +                            "name"
      +                          ]
      +                        }
      +                      ]
      +                    }
      +                  }
      +                ],
      +                "properties": {
      +                  "target": {
      +                    "enum": [
      +                      "auto",
      +                      "ui",
      +                      "ui_element",
      +                      "browser",
      +                      "window"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "text"
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "scroll"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "allOf": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "required": [
      +                          "delta_x"
      +                        ]
      +                      },
      +                      {
      +                        "required": [
      +                          "delta_y"
      +                        ]
      +                      },
      +                      {
      +                        "required": [
      +                          "delta"
      +                        ]
      +                      },
      +                      {
      +                        "required": [
      +                          "direction"
      +                        ]
      +                      }
      +                    ]
      +                  },
      +                  {
      +                    "if": {
      +                      "properties": {
      +                        "target": {
      +                          "enum": [
      +                            "ui",
      +                            "ui_element"
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "target"
      +                      ]
      +                    },
      +                    "then": {
      +                      "anyOf": [
      +                        {
      +                          "required": [
      +                            "id"
      +                          ]
      +                        },
      +                        {
      +                          "required": [
      +                            "label"
      +                          ]
      +                        },
      +                        {
      +                          "required": [
      +                            "name"
      +                          ]
      +                        },
      +                        {
      +                          "required": [
      +                            "role"
      +                          ]
      +                        },
      +                        {
      +                          "required": [
      +                            "automation_id"
      +                          ]
      +                        }
      +                      ]
      +                    }
      +                  },
      +                  {
      +                    "if": {
      +                      "properties": {
      +                        "target": {
      +                          "const": "coordinates"
      +                        }
      +                      },
      +                      "required": [
      +                        "target"
      +                      ]
      +                    },
      +                    "then": {
      +                      "required": [
      +                        "x",
      +                        "y"
      +                      ]
      +                    }
      +                  }
      +                ],
      +                "properties": {
      +                  "target": {
      +                    "enum": [
      +                      "auto",
      +                      "ui",
      +                      "ui_element",
      +                      "browser",
      +                      "coordinates",
      +                      "window"
      +                    ]
      +                  }
      +                }
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "drag"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "allOf": [
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "required": [
      +                          "from_id"
      +                        ]
      +                      },
      +                      {
      +                        "required": [
      +                          "from_x",
      +                          "from_y"
      +                        ]
      +                      }
      +                    ]
      +                  },
      +                  {
      +                    "anyOf": [
      +                      {
      +                        "required": [
      +                          "to_id"
      +                        ]
      +                      },
      +                      {
      +                        "required": [
      +                          "to_x",
      +                          "to_y"
      +                        ]
      +                      }
      +                    ]
      +                  },
      +                  {
      +                    "if": {
      +                      "properties": {
      +                        "target": {
      +                          "enum": [
      +                            "ui",
      +                            "ui_element"
      +                          ]
      +                        }
      +                      },
      +                      "required": [
      +                        "target"
      +                      ]
      +                    },
      +                    "then": {
      +                      "required": [
      +                        "from_id",
      +                        "to_id"
      +                      ]
      +                    }
      +                  },
      +                  {
      +                    "if": {
      +                      "properties": {
      +                        "target": {
      +                          "const": "coordinates"
      +                        }
      +                      },
      +                      "required": [
      +                        "target"
      +                      ]
      +                    },
      +                    "then": {
      +                      "required": [
      +                        "from_x",
      +                        "from_y",
      +                        "to_x",
      +                        "to_y"
      +                      ]
      +                    }
      +                  }
      +                ],
      +                "properties": {
      +                  "target": {
      +                    "enum": [
      +                      "auto",
      +                      "ui",
      +                      "ui_element",
      +                      "coordinates",
      +                      "window"
      +                    ]
      +                  }
      +                }
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "enum": [
      +                      "set_value",
      +                      "set_range_value"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "value"
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "multi_select"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "targets"
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "multi_edit"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "edits"
      +                ]
      +              }
      +            }
      +          ],
      +          "properties": {
      +            "action": {
      +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
      +              "enum": [
      +                "click",
      +                "type",
      +                "invoke",
      +                "focus",
      +                "select",
      +                "scroll",
      +                "drag",
      +                "set_value",
      +                "toggle",
      +                "expand",
      +                "collapse",
      +                "scroll_into_view",
      +                "set_range_value",
      +                "add_to_selection",
      +                "remove_from_selection",
      +                "multi_select",
      +                "multi_edit"
      +              ],
      +              "type": "string"
      +            },
      +            "app": {
      +              "description": "Limit matching to an application/process name substring when available.",
      +              "type": "string"
      +            },
      +            "automation_id": {
      +              "description": "Windows AutomationId when available.",
      +              "type": "string"
      +            },
      +            "backend": {
      +              "description": "Input backend preference. auto uses proven local backends and already-authorized portal input; portal explicitly requests XDG RemoteDesktop consent on Wayland; x11 forces XWayland/xdotool only for operations where read-back testing shows it is reliable. GNOME Wayland keyboard/text deliberately reject x11.",
      +              "enum": [
      +                "auto",
      +                "x11",
      +                "portal"
      +              ],
      +              "type": "string"
      +            },
      +            "browser_text": {
      +              "description": "Visible browser text used only to locate a DOM target; for action=type, text remains the value to enter.",
      +              "type": "string"
      +            },
      +            "button": {
      +              "description": "Pointer button to use for click/down/up or drag gestures.",
      +              "enum": [
      +                "left",
      +                "right",
      +                "middle"
      +              ],
      +              "type": "string"
      +            },
      +            "clear": {
      +              "description": "For action=type, clear the current semantic/browser value before inserting text when supported.",
      +              "type": "boolean"
      +            },
      +            "delta": {
      +              "description": "Alias for delta_y.",
      +              "type": "number"
      +            },
      +            "delta_x": {
      +              "description": "Horizontal scroll delta; positive means right.",
      +              "type": "number"
      +            },
      +            "delta_y": {
      +              "description": "Vertical scroll delta; positive means down.",
      +              "type": "number"
      +            },
      +            "direction": {
      +              "description": "Human-readable scroll direction used with wheel_times instead of explicit deltas.",
      +              "enum": [
      +                "up",
      +                "down",
      +                "left",
      +                "right"
      +              ],
      +              "type": "string"
      +            },
      +            "duration_ms": {
      +              "description": "Drag movement duration.",
      +              "type": "number"
      +            },
      +            "edits": {
      +              "description": "Native semantic target + text entries for action=multi_edit.",
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "app": {
      +                    "description": "Limit matching to an application/process name substring when available.",
      +                    "type": "string"
      +                  },
      +                  "automation_id": {
      +                    "description": "Windows AutomationId when available.",
      +                    "type": "string"
      +                  },
      +                  "clear": {
      +                    "description": "Clear the current value before entering text; default true.",
      +                    "type": "boolean"
      +                  },
      +                  "id": {
      +                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
      +                    "type": "string"
      +                  },
      +                  "label": {
      +                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
      +                    "type": "number"
      +                  },
      +                  "method": {
      +                    "description": "Text-entry strategy; auto is recommended.",
      +                    "enum": [
      +                      "auto",
      +                      "accessibility",
      +                      "clipboard",
      +                      "keys"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "description": "Accessible name/title substring.",
      +                    "type": "string"
      +                  },
      +                  "pid": {
      +                    "description": "Limit matching to one owning process id when available.",
      +                    "type": "number"
      +                  },
      +                  "role": {
      +                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      +                    "type": "string"
      +                  },
      +                  "text": {
      +                    "description": "Replacement text for this semantic edit.",
      +                    "type": "string"
      +                  },
      +                  "window_title": {
      +                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "text"
      +                ],
      +                "type": "object"
      +              },
      +              "maxItems": 100,
      +              "minItems": 1,
      +              "type": "array"
      +            },
      +            "endpoint": {
      +              "description": "Loopback Chrome DevTools endpoint for a browser fallback.",
      +              "type": "string"
      +            },
      +            "from_id": {
      +              "description": "Source semantic UI element id for action=drag.",
      +              "type": "string"
      +            },
      +            "from_x": {
      +              "description": "Drag source X coordinate.",
      +              "type": "number"
      +            },
      +            "from_y": {
      +              "description": "Drag source Y coordinate.",
      +              "type": "number"
      +            },
      +            "hold_ms": {
      +              "description": "Delay after pointer down before moving during action=drag.",
      +              "type": "number"
      +            },
      +            "id": {
      +              "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
      +              "type": "string"
      +            },
      +            "label": {
      +              "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
      +              "type": "number"
      +            },
      +            "name": {
      +              "description": "Accessible name/title substring.",
      +              "type": "string"
      +            },
      +            "ocr_language": {
      +              "description": "Tesseract language code, default eng.",
      +              "type": "string"
      +            },
      +            "ocr_psm": {
      +              "description": "Tesseract page segmentation mode, default 11.",
      +              "type": "number"
      +            },
      +            "ocr_region": {
      +              "description": "Optional virtual-desktop [left,top,right,bottom] region to OCR. Prefer bounds from list_windows or computer_snapshot.",
      +              "items": {
      +                "type": "number"
      +              },
      +              "maxItems": 4,
      +              "minItems": 4,
      +              "type": "array"
      +            },
      +            "ocr_text": {
      +              "description": "Visible text to find in rendered pixels for the OCR click fallback.",
      +              "type": "string"
      +            },
      +            "ocr_timeout_ms": {
      +              "description": "OCR timeout in milliseconds.",
      +              "type": "number"
      +            },
      +            "option": {
      +              "description": "Option value for browser select.",
      +              "type": "string"
      +            },
      +            "pid": {
      +              "description": "Limit matching to one owning process id when available.",
      +              "type": "number"
      +            },
      +            "replace_selection": {
      +              "description": "For multi_select, select the first item before adding the rest; default true.",
      +              "type": "boolean"
      +            },
      +            "role": {
      +              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      +              "type": "string"
      +            },
      +            "selector": {
      +              "description": "CSS selector when the fallback target is a browser element.",
      +              "type": "string"
      +            },
      +            "target": {
      +              "description": "Optional target type. auto prefers native accessibility, then browser DOM/CDP, then OCR/coordinates where supported. Use window for explicit top-level window focus/text/scroll targeting.",
      +              "enum": [
      +                "auto",
      +                "ui",
      +                "ui_element",
      +                "browser",
      +                "ocr",
      +                "coordinates",
      +                "window"
      +              ],
      +              "type": "string"
      +            },
      +            "target_id": {
      +              "description": "Browser page target id returned by browser_tabs.",
      +              "type": "string"
      +            },
      +            "targets": {
      +              "description": "Native semantic targets for action=multi_select.",
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "app": {
      +                    "description": "Limit matching to an application/process name substring when available.",
      +                    "type": "string"
      +                  },
      +                  "automation_id": {
      +                    "description": "Windows AutomationId when available.",
      +                    "type": "string"
      +                  },
      +                  "id": {
      +                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
      +                    "type": "string"
      +                  },
      +                  "label": {
      +                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
      +                    "type": "number"
      +                  },
      +                  "name": {
      +                    "description": "Accessible name/title substring.",
      +                    "type": "string"
      +                  },
      +                  "pid": {
      +                    "description": "Limit matching to one owning process id when available.",
      +                    "type": "number"
      +                  },
      +                  "role": {
      +                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      +                    "type": "string"
      +                  },
      +                  "window_title": {
      +                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "maxItems": 100,
      +              "minItems": 1,
      +              "type": "array"
      +            },
      +            "text": {
      +              "description": "Unicode text to enter for action=type, or text used by multi_edit.",
      +              "type": "string"
      +            },
      +            "title": {
      +              "description": "Optional browser page title substring or top-level window title when target=window.",
      +              "type": "string"
      +            },
      +            "to_id": {
      +              "description": "Destination semantic UI element id for action=drag.",
      +              "type": "string"
      +            },
      +            "to_x": {
      +              "description": "Drag destination X coordinate.",
      +              "type": "number"
      +            },
      +            "to_y": {
      +              "description": "Drag destination Y coordinate.",
      +              "type": "number"
      +            },
      +            "url_contains": {
      +              "description": "Browser URL substring used to select a page.",
      +              "type": "string"
      +            },
      +            "value": {
      +              "description": "New value for set_value, set_range_value, or select.",
      +              "type": "string"
      +            },
      +            "wheel_times": {
      +              "description": "Number of 120-unit wheel steps for direction; 1..50.",
      +              "type": "number"
      +            },
      +            "window_id": {
      +              "description": "Top-level window id returned by list_windows when target=window.",
      +              "type": "string"
      +            },
      +            "window_title": {
      +              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      +              "type": "string"
      +            },
      +            "x": {
      +              "description": "Virtual-desktop X coordinate used by click/scroll coordinate targeting.",
      +              "type": "number"
      +            },
      +            "y": {
      +              "description": "Virtual-desktop Y coordinate used by click/scroll coordinate targeting.",
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "action"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "parameters"
      +      ]
      +    }
      +  }
      +]
  2. Changed3 schema fields changedv0.2.131
    • changedInput schema / allOf
      Previous value: -[
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "computer_snapshot"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "browser_max_nodes": {
      -              "description": "Maximum browser accessibility nodes; default 500, maximum 2000.",
      -              "type": "number"
      -            },
      -            "grid_columns": {
      -              "description": "Optional reference-grid column count returned as visual metadata; 0..20.",
      -              "type": "number"
      -            },
      -            "grid_rows": {
      -              "description": "Optional reference-grid row count returned as visual metadata; 0..20.",
      -              "type": "number"
      -            },
      -            "include_browser": {
      -              "description": "Include CDP browser accessibility when available. Default auto: only when the active app looks Chromium-based.",
      -              "type": "boolean"
      -            },
      -            "include_ocr": {
      -              "description": "Run optional local OCR. Default auto: only when native accessibility and browser DOM are unavailable. Requires tesseract on PATH.",
      -              "type": "boolean"
      -            },
      -            "include_screenshot": {
      -              "description": "Include real rendered desktop pixels; default true.",
      -              "type": "boolean"
      -            },
      -            "include_ui": {
      -              "description": "Include native accessibility tree; default true. False is the fast screenshot-only path.",
      -              "type": "boolean"
      -            },
      -            "max_ui_depth": {
      -              "description": "Maximum native accessibility depth; default 12.",
      -              "type": "number"
      -            },
      -            "max_ui_nodes": {
      -              "description": "Maximum native accessibility nodes; default 800.",
      -              "type": "number"
      -            },
      -            "ocr_language": {
      -              "description": "Tesseract language code, default eng; multiple languages may use eng+deu.",
      -              "type": "string"
      -            },
      -            "ocr_max_words": {
      -              "description": "Maximum OCR word boxes returned; default 2000, maximum 10000.",
      -              "type": "number"
      -            },
      -            "ocr_psm": {
      -              "description": "Tesseract page segmentation mode, 3..13; default 11.",
      -              "type": "number"
      -            },
      -            "ocr_timeout_ms": {
      -              "description": "OCR timeout, default 30000 ms, maximum 120000 ms.",
      -              "type": "number"
      -            },
      -            "screenshot_monitor": {
      -              "description": "Monitor name substring or \"primary\".",
      -              "type": "string"
      -            },
      -            "screenshot_monitor_index": {
      -              "description": "Zero-based monitor index.",
      -              "type": "number"
      -            },
      -            "screenshot_padding": {
      -              "description": "Pixels of context around a targeted screenshot; 0..200.",
      -              "type": "number"
      -            },
      -            "screenshot_region": {
      -              "description": "Virtual-desktop [left,top,right,bottom] region; takes precedence over full desktop.",
      -              "items": {
      -                "type": "number"
      -              },
      -              "maxItems": 4,
      -              "minItems": 4,
      -              "type": "array"
      -            },
      -            "screenshot_window_id": {
      -              "description": "Capture the window returned by list_windows instead of the whole desktop.",
      -              "type": "string"
      -            },
      -            "semantic_tree": {
      -              "description": "Include compact semantic hierarchy text alongside nodes; default true.",
      -              "type": "boolean"
      -            },
      -            "ui_browser_dom": {
      -              "description": "Prefer the native browser accessibility document subtree when the OS exposes one; on Windows this also enables the Firefox MSAA/IAccessible fallback.",
      -              "type": "boolean"
      -            },
      -            "ui_scope": {
      -              "description": "Accessibility scope for computer_snapshot. Default active keeps the compact snapshot fast; desktop requests all accessible applications/windows.",
      -              "enum": [
      -                "active",
      -                "desktop"
      -              ],
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "computer_action"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "allOf": [
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "const": "click"
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "anyOf": [
      -                  {
      -                    "required": [
      -                      "id"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "label"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "name"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "role"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "automation_id"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "selector"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "browser_text"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "ocr_text"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "x",
      -                      "y"
      -                    ]
      -                  }
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "enum": [
      -                      "invoke",
      -                      "set_value",
      -                      "select",
      -                      "toggle",
      -                      "expand",
      -                      "collapse",
      -                      "scroll_into_view",
      -                      "set_range_value",
      -                      "add_to_selection",
      -                      "remove_from_selection"
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "anyOf": [
      -                  {
      -                    "required": [
      -                      "id"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "label"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "name"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "role"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "automation_id"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "selector"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "browser_text"
      -                    ]
      -                  }
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "const": "focus"
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "anyOf": [
      -                  {
      -                    "required": [
      -                      "id"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "label"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "name"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "role"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "automation_id"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "selector"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "browser_text"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "pid"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "app"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "window_title"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "title"
      -                    ]
      -                  }
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "enum": [
      -                      "set_value",
      -                      "set_range_value"
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "value"
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "const": "multi_select"
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "targets"
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "const": "multi_edit"
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "edits"
      -                ]
      -              }
      -            }
      -          ],
      -          "properties": {
      -            "action": {
      -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
      -              "enum": [
      -                "click",
      -                "invoke",
      -                "focus",
      -                "set_value",
      -                "select",
      -                "toggle",
      -                "expand",
      -                "collapse",
      -                "scroll_into_view",
      -                "set_range_value",
      -                "add_to_selection",
      -                "remove_from_selection",
      -                "multi_select",
      -                "multi_edit"
      -              ],
      -              "type": "string"
      -            },
      -            "app": {
      -              "description": "Limit matching to an application/process name substring when available.",
      -              "type": "string"
      -            },
      -            "automation_id": {
      -              "description": "Windows AutomationId when available.",
      -              "type": "string"
      -            },
      -            "backend": {
      -              "description": "Input backend preference. auto uses proven local backends and already-authorized portal input; portal explicitly requests XDG RemoteDesktop consent on Wayland; x11 forces XWayland/xdotool only for operations where read-back testing shows it is reliable. GNOME Wayland keyboard/text deliberately reject x11.",
      -              "enum": [
      -                "auto",
      -                "x11",
      -                "portal"
      -              ],
      -              "type": "string"
      -            },
      -            "browser_text": {
      -              "description": "Visible browser text used to locate a DOM fallback target.",
      -              "type": "string"
      -            },
      -            "edits": {
      -              "description": "Native semantic target + text entries for action=multi_edit.",
      -              "items": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "app": {
      -                    "description": "Limit matching to an application/process name substring when available.",
      -                    "type": "string"
      -                  },
      -                  "automation_id": {
      -                    "description": "Windows AutomationId when available.",
      -                    "type": "string"
      -                  },
      -                  "clear": {
      -                    "description": "Clear the current value before entering text; default true.",
      -                    "type": "boolean"
      -                  },
      -                  "id": {
      -                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
      -                    "type": "string"
      -                  },
      -                  "label": {
      -                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
      -                    "type": "number"
      -                  },
      -                  "method": {
      -                    "description": "Text-entry strategy; auto is recommended.",
      -                    "enum": [
      -                      "auto",
      -                      "accessibility",
      -                      "clipboard",
      -                      "keys"
      -                    ],
      -                    "type": "string"
      -                  },
      -                  "name": {
      -                    "description": "Accessible name/title substring.",
      -                    "type": "string"
      -                  },
      -                  "pid": {
      -                    "description": "Limit matching to one owning process id when available.",
      -                    "type": "number"
      -                  },
      -                  "role": {
      -                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      -                    "type": "string"
      -                  },
      -                  "text": {
      -                    "description": "Replacement text for this semantic edit.",
      -                    "type": "string"
      -                  },
      -                  "window_title": {
      -                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "text"
      -                ],
      -                "type": "object"
      -              },
      -              "maxItems": 100,
      -              "minItems": 1,
      -              "type": "array"
      -            },
      -            "endpoint": {
      -              "description": "Loopback Chrome DevTools endpoint for a browser fallback.",
      -              "type": "string"
      -            },
      -            "id": {
      -              "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
      -              "type": "string"
      -            },
      -            "label": {
      -              "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
      -              "type": "number"
      -            },
      -            "name": {
      -              "description": "Accessible name/title substring.",
      -              "type": "string"
      -            },
      -            "ocr_language": {
      -              "description": "Tesseract language code, default eng.",
      -              "type": "string"
      -            },
      -            "ocr_psm": {
      -              "description": "Tesseract page segmentation mode, default 11.",
      -              "type": "number"
      -            },
      -            "ocr_region": {
      -              "description": "Optional virtual-desktop [left,top,right,bottom] region to OCR. Prefer bounds from list_windows or computer_snapshot.",
      -              "items": {
      -                "type": "number"
      -              },
      -              "maxItems": 4,
      -              "minItems": 4,
      -              "type": "array"
      -            },
      -            "ocr_text": {
      -              "description": "Visible text to find in rendered pixels for the OCR click fallback.",
      -              "type": "string"
      -            },
      -            "ocr_timeout_ms": {
      -              "description": "OCR timeout in milliseconds.",
      -              "type": "number"
      -            },
      -            "option": {
      -              "description": "Option value for browser select.",
      -              "type": "string"
      -            },
      -            "pid": {
      -              "description": "Limit matching to one owning process id when available.",
      -              "type": "number"
      -            },
      -            "replace_selection": {
      -              "description": "For multi_select, select the first item before adding the rest; default true.",
      -              "type": "boolean"
      -            },
      -            "role": {
      -              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      -              "type": "string"
      -            },
      -            "selector": {
      -              "description": "CSS selector when the fallback target is a browser element.",
      -              "type": "string"
      -            },
      -            "target": {
      -              "description": "Optional target type. auto tries native accessibility first, then browser DOM/CDP, OCR text when requested, then coordinates for click.",
      -              "enum": [
      -                "auto",
      -                "ui",
      -                "ui_element",
      -                "browser",
      -                "ocr",
      -                "coordinates"
      -              ],
      -              "type": "string"
      -            },
      -            "target_id": {
      -              "description": "Browser page target id returned by browser_tabs.",
      -              "type": "string"
      -            },
      -            "targets": {
      -              "description": "Native semantic targets for action=multi_select.",
      -              "items": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "app": {
      -                    "description": "Limit matching to an application/process name substring when available.",
      -                    "type": "string"
      -                  },
      -                  "automation_id": {
      -                    "description": "Windows AutomationId when available.",
      -                    "type": "string"
      -                  },
      -                  "id": {
      -                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
      -                    "type": "string"
      -                  },
      -                  "label": {
      -                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
      -                    "type": "number"
      -                  },
      -                  "name": {
      -                    "description": "Accessible name/title substring.",
      -                    "type": "string"
      -                  },
      -                  "pid": {
      -                    "description": "Limit matching to one owning process id when available.",
      -                    "type": "number"
      -                  },
      -                  "role": {
      -                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      -                    "type": "string"
      -                  },
      -                  "window_title": {
      -                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      -                    "type": "string"
      -                  }
      -                },
      -                "type": "object"
      -              },
      -              "maxItems": 100,
      -              "minItems": 1,
      -              "type": "array"
      -            },
      -            "text": {
      -              "description": "Text used by multi_edit or as a compatibility value for a semantic edit.",
      -              "type": "string"
      -            },
      -            "title": {
      -              "description": "Optional browser page title substring when target=browser.",
      -              "type": "string"
      -            },
      -            "url_contains": {
      -              "description": "Browser URL substring used to select a page.",
      -              "type": "string"
      -            },
      -            "value": {
      -              "description": "New value for set_value, set_range_value, or select.",
      -              "type": "string"
      -            },
      -            "window_title": {
      -              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      -              "type": "string"
      -            },
      -            "x": {
      -              "description": "Virtual-desktop X coordinate used only by the final click fallback.",
      -              "type": "number"
      -            },
      -            "y": {
      -              "description": "Virtual-desktop Y coordinate used only by the final click fallback.",
      -              "type": "number"
      -            }
      -          },
      -          "required": [
      -            "action"
      -          ],
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "parameters"
      -      ]
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "launch_app"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "anyOf": [
      -            {
      -              "required": [
      -                "app"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "path"
      -              ]
      -            }
      -          ],
      -          "properties": {
      -            "app": {
      -              "description": "Application name, friendly Start Menu name, or executable path.",
      -              "type": "string"
      -            },
      -            "args": {
      -              "description": "Argument array passed directly to the launched application; no shell parsing.",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "cwd": {
      -              "description": "Optional permitted working directory for direct executable launch.",
      -              "type": "string"
      -            },
      -            "path": {
      -              "description": "Alias for app.",
      -              "type": "string"
      -            },
      -            "wait_for_window": {
      -              "description": "Optional application/title substring that must appear after launch.",
      -              "type": "string"
      -            },
      -            "wait_timeout_ms": {
      -              "description": "Maximum wait for wait_for_window; default 10000, maximum 120000.",
      -              "type": "number"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "open_path"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "path": {
      -              "description": "File or directory to open.",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "path"
      -          ],
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "parameters"
      -      ]
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "reveal_path"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "path": {
      -              "description": "File or directory to reveal.",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "path"
      -          ],
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "parameters"
      -      ]
      -    }
      -  }
      -]New value: +[
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "computer_snapshot"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "browser_max_nodes": {
      +              "description": "Maximum browser accessibility nodes; default 500, maximum 2000.",
      +              "type": "number"
      +            },
      +            "grid_columns": {
      +              "description": "Optional reference-grid column count returned as visual metadata; 0..20.",
      +              "type": "number"
      +            },
      +            "grid_rows": {
      +              "description": "Optional reference-grid row count returned as visual metadata; 0..20.",
      +              "type": "number"
      +            },
      +            "include_browser": {
      +              "description": "Include CDP browser accessibility when available. Default auto: only when the active app looks Chromium-based.",
      +              "type": "boolean"
      +            },
      +            "include_ocr": {
      +              "description": "Run optional local OCR. Default auto: only when native accessibility and browser DOM are unavailable. Requires tesseract on PATH.",
      +              "type": "boolean"
      +            },
      +            "include_screenshot": {
      +              "description": "Include real rendered desktop pixels; default true.",
      +              "type": "boolean"
      +            },
      +            "include_ui": {
      +              "description": "Include native accessibility tree; default true. False is the fast screenshot-only path.",
      +              "type": "boolean"
      +            },
      +            "max_ui_depth": {
      +              "description": "Maximum native accessibility depth; default 12.",
      +              "type": "number"
      +            },
      +            "max_ui_nodes": {
      +              "description": "Maximum native accessibility nodes; default 800.",
      +              "type": "number"
      +            },
      +            "ocr_language": {
      +              "description": "Tesseract language code, default eng; multiple languages may use eng+deu.",
      +              "type": "string"
      +            },
      +            "ocr_max_words": {
      +              "description": "Maximum OCR word boxes returned; default 2000, maximum 10000.",
      +              "type": "number"
      +            },
      +            "ocr_psm": {
      +              "description": "Tesseract page segmentation mode, 3..13; default 11.",
      +              "type": "number"
      +            },
      +            "ocr_timeout_ms": {
      +              "description": "OCR timeout, default 30000 ms, maximum 120000 ms.",
      +              "type": "number"
      +            },
      +            "screenshot_monitor": {
      +              "description": "Monitor name substring or \"primary\".",
      +              "type": "string"
      +            },
      +            "screenshot_monitor_index": {
      +              "description": "Zero-based monitor index.",
      +              "type": "number"
      +            },
      +            "screenshot_padding": {
      +              "description": "Pixels of context around a targeted screenshot; 0..200.",
      +              "type": "number"
      +            },
      +            "screenshot_region": {
      +              "description": "Virtual-desktop [left,top,right,bottom] region; takes precedence over full desktop.",
      +              "items": {
      +                "type": "number"
      +              },
      +              "maxItems": 4,
      +              "minItems": 4,
      +              "type": "array"
      +            },
      +            "screenshot_window_id": {
      +              "description": "Capture the window returned by list_windows instead of the whole desktop.",
      +              "type": "string"
      +            },
      +            "semantic_tree": {
      +              "description": "Include compact semantic hierarchy text alongside nodes; default true.",
      +              "type": "boolean"
      +            },
      +            "ui_browser_dom": {
      +              "description": "Prefer the native browser accessibility document subtree when the OS exposes one; on Windows this also enables the Firefox MSAA/IAccessible fallback.",
      +              "type": "boolean"
      +            },
      +            "ui_scope": {
      +              "description": "Accessibility scope for computer_snapshot. Default active keeps the compact snapshot fast; desktop requests all accessible applications/windows.",
      +              "enum": [
      +                "active",
      +                "desktop"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      }
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "computer_action"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "allOf": [
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "click"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "anyOf": [
      +                  {
      +                    "required": [
      +                      "id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "label"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "name"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "role"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "automation_id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "selector"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "browser_text"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "ocr_text"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "x",
      +                      "y"
      +                    ]
      +                  }
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "enum": [
      +                      "invoke",
      +                      "set_value",
      +                      "select",
      +                      "toggle",
      +                      "expand",
      +                      "collapse",
      +                      "scroll_into_view",
      +                      "set_range_value",
      +                      "add_to_selection",
      +                      "remove_from_selection"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "anyOf": [
      +                  {
      +                    "required": [
      +                      "id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "label"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "name"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "role"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "automation_id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "selector"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "browser_text"
      +                    ]
      +                  }
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "focus"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "anyOf": [
      +                  {
      +                    "required": [
      +                      "id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "label"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "name"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "role"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "automation_id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "selector"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "browser_text"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "pid"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "app"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "window_title"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "title"
      +                    ]
      +                  }
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "enum": [
      +                      "set_value",
      +                      "set_range_value"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "value"
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "multi_select"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "targets"
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "multi_edit"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "edits"
      +                ]
      +              }
      +            }
      +          ],
      +          "properties": {
      +            "action": {
      +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
      +              "enum": [
      +                "click",
      +                "invoke",
      +                "focus",
      +                "set_value",
      +                "select",
      +                "toggle",
      +                "expand",
      +                "collapse",
      +                "scroll_into_view",
      +                "set_range_value",
      +                "add_to_selection",
      +                "remove_from_selection",
      +                "multi_select",
      +                "multi_edit"
      +              ],
      +              "type": "string"
      +            },
      +            "app": {
      +              "description": "Limit matching to an application/process name substring when available.",
      +              "type": "string"
      +            },
      +            "automation_id": {
      +              "description": "Windows AutomationId when available.",
      +              "type": "string"
      +            },
      +            "backend": {
      +              "description": "Input backend preference. auto uses proven local backends and already-authorized portal input; portal explicitly requests XDG RemoteDesktop consent on Wayland; x11 forces XWayland/xdotool only for operations where read-back testing shows it is reliable. GNOME Wayland keyboard/text deliberately reject x11.",
      +              "enum": [
      +                "auto",
      +                "x11",
      +                "portal"
      +              ],
      +              "type": "string"
      +            },
      +            "browser_text": {
      +              "description": "Visible browser text used to locate a DOM fallback target.",
      +              "type": "string"
      +            },
      +            "edits": {
      +              "description": "Native semantic target + text entries for action=multi_edit.",
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "app": {
      +                    "description": "Limit matching to an application/process name substring when available.",
      +                    "type": "string"
      +                  },
      +                  "automation_id": {
      +                    "description": "Windows AutomationId when available.",
      +                    "type": "string"
      +                  },
      +                  "clear": {
      +                    "description": "Clear the current value before entering text; default true.",
      +                    "type": "boolean"
      +                  },
      +                  "id": {
      +                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
      +                    "type": "string"
      +                  },
      +                  "label": {
      +                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
      +                    "type": "number"
      +                  },
      +                  "method": {
      +                    "description": "Text-entry strategy; auto is recommended.",
      +                    "enum": [
      +                      "auto",
      +                      "accessibility",
      +                      "clipboard",
      +                      "keys"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "description": "Accessible name/title substring.",
      +                    "type": "string"
      +                  },
      +                  "pid": {
      +                    "description": "Limit matching to one owning process id when available.",
      +                    "type": "number"
      +                  },
      +                  "role": {
      +                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      +                    "type": "string"
      +                  },
      +                  "text": {
      +                    "description": "Replacement text for this semantic edit.",
      +                    "type": "string"
      +                  },
      +                  "window_title": {
      +                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "text"
      +                ],
      +                "type": "object"
      +              },
      +              "maxItems": 100,
      +              "minItems": 1,
      +              "type": "array"
      +            },
      +            "endpoint": {
      +              "description": "Loopback Chrome DevTools endpoint for a browser fallback.",
      +              "type": "string"
      +            },
      +            "id": {
      +              "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
      +              "type": "string"
      +            },
      +            "label": {
      +              "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
      +              "type": "number"
      +            },
      +            "name": {
      +              "description": "Accessible name/title substring.",
      +              "type": "string"
      +            },
      +            "ocr_language": {
      +              "description": "Tesseract language code, default eng.",
      +              "type": "string"
      +            },
      +            "ocr_psm": {
      +              "description": "Tesseract page segmentation mode, default 11.",
      +              "type": "number"
      +            },
      +            "ocr_region": {
      +              "description": "Optional virtual-desktop [left,top,right,bottom] region to OCR. Prefer bounds from list_windows or computer_snapshot.",
      +              "items": {
      +                "type": "number"
      +              },
      +              "maxItems": 4,
      +              "minItems": 4,
      +              "type": "array"
      +            },
      +            "ocr_text": {
      +              "description": "Visible text to find in rendered pixels for the OCR click fallback.",
      +              "type": "string"
      +            },
      +            "ocr_timeout_ms": {
      +              "description": "OCR timeout in milliseconds.",
      +              "type": "number"
      +            },
      +            "option": {
      +              "description": "Option value for browser select.",
      +              "type": "string"
      +            },
      +            "pid": {
      +              "description": "Limit matching to one owning process id when available.",
      +              "type": "number"
      +            },
      +            "replace_selection": {
      +              "description": "For multi_select, select the first item before adding the rest; default true.",
      +              "type": "boolean"
      +            },
      +            "role": {
      +              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      +              "type": "string"
      +            },
      +            "selector": {
      +              "description": "CSS selector when the fallback target is a browser element.",
      +              "type": "string"
      +            },
      +            "target": {
      +              "description": "Optional target type. auto tries native accessibility first, then browser DOM/CDP, OCR text when requested, then coordinates for click.",
      +              "enum": [
      +                "auto",
      +                "ui",
      +                "ui_element",
      +                "browser",
      +                "ocr",
      +                "coordinates"
      +              ],
      +              "type": "string"
      +            },
      +            "target_id": {
      +              "description": "Browser page target id returned by browser_tabs.",
      +              "type": "string"
      +            },
      +            "targets": {
      +              "description": "Native semantic targets for action=multi_select.",
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "app": {
      +                    "description": "Limit matching to an application/process name substring when available.",
      +                    "type": "string"
      +                  },
      +                  "automation_id": {
      +                    "description": "Windows AutomationId when available.",
      +                    "type": "string"
      +                  },
      +                  "id": {
      +                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
      +                    "type": "string"
      +                  },
      +                  "label": {
      +                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
      +                    "type": "number"
      +                  },
      +                  "name": {
      +                    "description": "Accessible name/title substring.",
      +                    "type": "string"
      +                  },
      +                  "pid": {
      +                    "description": "Limit matching to one owning process id when available.",
      +                    "type": "number"
      +                  },
      +                  "role": {
      +                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      +                    "type": "string"
      +                  },
      +                  "window_title": {
      +                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "maxItems": 100,
      +              "minItems": 1,
      +              "type": "array"
      +            },
      +            "text": {
      +              "description": "Text used by multi_edit or as a compatibility value for a semantic edit.",
      +              "type": "string"
      +            },
      +            "title": {
      +              "description": "Optional browser page title substring when target=browser.",
      +              "type": "string"
      +            },
      +            "url_contains": {
      +              "description": "Browser URL substring used to select a page.",
      +              "type": "string"
      +            },
      +            "value": {
      +              "description": "New value for set_value, set_range_value, or select.",
      +              "type": "string"
      +            },
      +            "window_title": {
      +              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      +              "type": "string"
      +            },
      +            "x": {
      +              "description": "Virtual-desktop X coordinate used only by the final click fallback.",
      +              "type": "number"
      +            },
      +            "y": {
      +              "description": "Virtual-desktop Y coordinate used only by the final click fallback.",
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "action"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "parameters"
      +      ]
      +    }
      +  }
      +]
    • changedInput schema / properties / operation / enum
      Previous value: -[
      -  "computer_snapshot",
      -  "computer_action",
      -  "launch_app",
      -  "open_path",
      -  "reveal_path"
      -]New value: +[
      +  "computer_snapshot",
      +  "computer_action"
      +]
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "description": "Computer snapshot structured result for computer_snapshot. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
      -    "properties": {
      -      "active_window": {
      -        "additionalProperties": true,
      -        "description": "Active top-level window when known; null when accessibility state cannot be joined to top-level window enumeration.",
      -        "type": [
      -          "object",
      -          "null"
      -        ]
      -      },
      -      "browser": {
      -        "additionalProperties": true,
      -        "description": "Optional browser DOM/CDP snapshot.",
      -        "type": "object"
      -      },
      -      "bytes": {
      -        "description": "Serialized structured-result size when truncation metadata is returned.",
      -        "type": "number"
      -      },
      -      "clipboard": {
      -        "additionalProperties": true,
      -        "description": "Clipboard metadata only unless clipboard content was explicitly requested.",
      -        "type": "object"
      -      },
      -      "cursor": {
      -        "additionalProperties": true,
      -        "description": "Pointer position when available.",
      -        "type": "object"
      -      },
      -      "data": {
      -        "description": "Array/scalar payload wrapper used when the natural result is not an object."
      -      },
      -      "device": {
      -        "additionalProperties": true,
      -        "description": "Device/platform metadata for the captured computer state.",
      -        "type": "object"
      -      },
      -      "displays": {
      -        "description": "Display inventory used for virtual-desktop geometry.",
      -        "items": {
      -          "additionalProperties": true,
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "errors": {
      -        "description": "Non-fatal sub-capture errors.",
      -        "items": {
      -          "additionalProperties": true,
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "fallback_chain": {
      -        "additionalProperties": true,
      -        "description": "Which semantic/DOM/OCR/coordinate layers were requested and available.",
      -        "type": "object"
      -      },
      -      "ocr": {
      -        "additionalProperties": true,
      -        "description": "Optional OCR words/metadata.",
      -        "type": "object"
      -      },
      -      "preview": {
      -        "description": "Bounded JSON preview when the full structured mirror is too large.",
      -        "type": "string"
      -      },
      -      "text": {
      -        "description": "Human-readable structured mirror for text-only results.",
      -        "type": "string"
      -      },
      -      "truncated": {
      -        "description": "True when the structured mirror was bounded because the result was large.",
      -        "type": "boolean"
      -      },
      -      "ui": {
      -        "additionalProperties": true,
      -        "description": "Native accessibility snapshot and semantic tree.",
      -        "type": "object"
      -      },
      -      "windows": {
      -        "description": "Top-level windows with stable ids/PIDs/bounds when available.",
      -        "items": {
      -          "additionalProperties": true,
      -          "type": "object"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": true,
      -    "description": "Computer action structured result for computer_action. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
      -    "properties": {
      -      "action": {
      -        "type": "string"
      -      },
      -      "bytes": {
      -        "description": "Serialized structured-result size when truncation metadata is returned.",
      -        "type": "number"
      -      },
      -      "capped": {
      -        "type": "boolean"
      -      },
      -      "completed": {
      -        "type": "number"
      -      },
      -      "count": {
      -        "type": "number"
      -      },
      -      "data": {
      -        "description": "Array/scalar payload wrapper used when the natural result is not an object."
      -      },
      -      "ok": {
      -        "type": "boolean"
      -      },
      -      "preview": {
      -        "description": "Bounded JSON preview when the full structured mirror is too large.",
      -        "type": "string"
      -      },
      -      "results": {
      -        "items": {
      -          "additionalProperties": true,
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "stopped_at": {
      -        "type": "number"
      -      },
      -      "text": {
      -        "description": "Human-readable structured mirror for text-only results.",
      -        "type": "string"
      -      },
      -      "truncated": {
      -        "description": "True when the structured mirror was bounded because the result was large.",
      -        "type": "boolean"
      -      },
      -      "waited_ms": {
      -        "type": "number"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": true,
      -    "description": "Launch application structured result for launch_app. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
      -    "properties": {
      -      "bytes": {
      -        "description": "Serialized structured-result size when truncation metadata is returned.",
      -        "type": "number"
      -      },
      -      "data": {
      -        "description": "Array/scalar payload wrapper used when the natural result is not an object."
      -      },
      -      "preview": {
      -        "description": "Bounded JSON preview when the full structured mirror is too large.",
      -        "type": "string"
      -      },
      -      "text": {
      -        "description": "Human-readable launch result and optional ready-window confirmation.",
      -        "type": "string"
      -      },
      -      "truncated": {
      -        "description": "True when the structured mirror was bounded because the result was large.",
      -        "type": "boolean"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": true,
      -    "description": "Open path structured result for open_path. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
      -    "properties": {
      -      "bytes": {
      -        "description": "Serialized structured-result size when truncation metadata is returned.",
      -        "type": "number"
      -      },
      -      "data": {
      -        "description": "Array/scalar payload wrapper used when the natural result is not an object."
      -      },
      -      "preview": {
      -        "description": "Bounded JSON preview when the full structured mirror is too large.",
      -        "type": "string"
      -      },
      -      "text": {
      -        "type": "string"
      -      },
      -      "truncated": {
      -        "description": "True when the structured mirror was bounded because the result was large.",
      -        "type": "boolean"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": true,
      -    "description": "Reveal path structured result for reveal_path. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
      -    "properties": {
      -      "bytes": {
      -        "description": "Serialized structured-result size when truncation metadata is returned.",
      -        "type": "number"
      -      },
      -      "data": {
      -        "description": "Array/scalar payload wrapper used when the natural result is not an object."
      -      },
      -      "preview": {
      -        "description": "Bounded JSON preview when the full structured mirror is too large.",
      -        "type": "string"
      -      },
      -      "text": {
      -        "type": "string"
      -      },
      -      "truncated": {
      -        "description": "True when the structured mirror was bounded because the result was large.",
      -        "type": "boolean"
      -      }
      -    },
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": true,
      +    "description": "Computer snapshot structured result for computer_snapshot. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
      +    "properties": {
      +      "active_window": {
      +        "additionalProperties": true,
      +        "description": "Active top-level window when known; null when accessibility state cannot be joined to top-level window enumeration.",
      +        "type": [
      +          "object",
      +          "null"
      +        ]
      +      },
      +      "browser": {
      +        "additionalProperties": true,
      +        "description": "Optional browser DOM/CDP snapshot.",
      +        "type": "object"
      +      },
      +      "bytes": {
      +        "description": "Serialized structured-result size when truncation metadata is returned.",
      +        "type": "number"
      +      },
      +      "clipboard": {
      +        "additionalProperties": true,
      +        "description": "Clipboard metadata only unless clipboard content was explicitly requested.",
      +        "type": "object"
      +      },
      +      "cursor": {
      +        "additionalProperties": true,
      +        "description": "Pointer position when available.",
      +        "type": "object"
      +      },
      +      "data": {
      +        "description": "Array/scalar payload wrapper used when the natural result is not an object."
      +      },
      +      "device": {
      +        "additionalProperties": true,
      +        "description": "Device/platform metadata for the captured computer state.",
      +        "type": "object"
      +      },
      +      "displays": {
      +        "description": "Display inventory used for virtual-desktop geometry.",
      +        "items": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "errors": {
      +        "description": "Non-fatal sub-capture errors.",
      +        "items": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "fallback_chain": {
      +        "additionalProperties": true,
      +        "description": "Which semantic/DOM/OCR/coordinate layers were requested and available.",
      +        "type": "object"
      +      },
      +      "ocr": {
      +        "additionalProperties": true,
      +        "description": "Optional OCR words/metadata.",
      +        "type": "object"
      +      },
      +      "preview": {
      +        "description": "Bounded JSON preview when the full structured mirror is too large.",
      +        "type": "string"
      +      },
      +      "text": {
      +        "description": "Human-readable structured mirror for text-only results.",
      +        "type": "string"
      +      },
      +      "truncated": {
      +        "description": "True when the structured mirror was bounded because the result was large.",
      +        "type": "boolean"
      +      },
      +      "ui": {
      +        "additionalProperties": true,
      +        "description": "Native accessibility snapshot and semantic tree.",
      +        "type": "object"
      +      },
      +      "windows": {
      +        "description": "Top-level windows with stable ids/PIDs/bounds when available.",
      +        "items": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "description": "Computer action structured result for computer_action. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
      +    "properties": {
      +      "action": {
      +        "type": "string"
      +      },
      +      "bytes": {
      +        "description": "Serialized structured-result size when truncation metadata is returned.",
      +        "type": "number"
      +      },
      +      "capped": {
      +        "type": "boolean"
      +      },
      +      "completed": {
      +        "type": "number"
      +      },
      +      "count": {
      +        "type": "number"
      +      },
      +      "data": {
      +        "description": "Array/scalar payload wrapper used when the natural result is not an object."
      +      },
      +      "ok": {
      +        "type": "boolean"
      +      },
      +      "preview": {
      +        "description": "Bounded JSON preview when the full structured mirror is too large.",
      +        "type": "string"
      +      },
      +      "results": {
      +        "items": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "stopped_at": {
      +        "type": "number"
      +      },
      +      "text": {
      +        "description": "Human-readable structured mirror for text-only results.",
      +        "type": "string"
      +      },
      +      "truncated": {
      +        "description": "True when the structured mirror was bounded because the result was large.",
      +        "type": "boolean"
      +      },
      +      "waited_ms": {
      +        "type": "number"
      +      }
      +    },
      +    "type": "object"
      +  }
      +]
  3. Addedv0.2.88

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and openWorldHint=true, but the description goes further by naming precisely which operations alter local application state (clicks, typing, window close, app launch, clipboard writes, recording) versus which merely observe. That operation-level granularity is real added value beyond the blanket annotation hints, though it omits platform/permission caveats like the Wayland portal consent that the schema mentions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: scope enumeration, then the observe/mutate distinction, then the targeting tactic. Nothing is repeated from the title or schema, and the most decision-relevant content (what the tool covers) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the very large nested schema, full annotations, and an existing output schema, the description only needs to convey scope and risk profile, which it does. It falls slightly short on tool-selection context against the six siblings and on platform constraints, but no essential calling information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and only two top-level parameters exist, so the schema carries full burden. The description's 'prefer semantic targets before raw coordinates' adds a targeting strategy that the schema does not state, but otherwise adds no parameter detail — baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (inspection/control) plus the resource (native desktop applications) and enumerates the covered domains — windows, UI elements, input, clipboard, notifications, recording. It clearly separates this from file/document tools, though it never names a sibling tool to disambiguate edge cases like run_terminal or view_image.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides an internal tactic ('Prefer semantic targets before raw coordinates') and splits operations into observe vs mutate, which implies when each is appropriate. However, it gives no guidance on when to pick this tool over siblings such as run_terminal, manage_system, or view_image, which is the gap the guideline dimension targets.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.