Skip to main content
Glama

Control computer

control_computer
Destructive

Use this when the task needs semantic inspection or control of native desktop applications: snapshots, windows, accessibility/UI elements, waits, displays, app launch, text/input, clipboard, open/reveal, notifications, or short screen recording. Semantic snapshot/find/wait operations observe state, while clicks, typing, window close, app launch, clipboard writes, and recording can change application or local state. Prefer semantic inspection/actions before raw coordinates; use view_image only when pixels are required and control_browser for page DOM/CDP actions.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
deviceYesReMCP device id returned by list_devices.
operationYesConcrete runtime operation to perform inside this domain.
parametersNoArguments for the selected operation. The selected operation keeps its original closed input schema.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataNoOptional structured result data for follow-up reasoning and tool calls.
textYesConcise human-readable result of the tool call.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • 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": "list_windows"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "include_monitor": {
      -              "description": "Enrich each window with monitor and monitor_index; default true.",
      -              "type": "boolean"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "ui_snapshot"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "app": {
      -              "description": "Optional application/process name substring scope.",
      -              "type": "string"
      -            },
      -            "browser_dom": {
      -              "description": "Prefer the native browser document accessibility subtree instead of browser chrome when supported.",
      -              "type": "boolean"
      -            },
      -            "max_depth": {
      -              "description": "Maximum traversal depth; default 8, maximum 32.",
      -              "type": "number"
      -            },
      -            "max_nodes": {
      -              "description": "Maximum nodes; default 500, maximum 5000.",
      -              "type": "number"
      -            },
      -            "pid": {
      -              "description": "Optional owning process id scope.",
      -              "type": "number"
      -            },
      -            "scope": {
      -              "description": "Default active. Use desktop only when cross-application discovery is required.",
      -              "enum": [
      -                "active",
      -                "desktop"
      -              ],
      -              "type": "string"
      -            },
      -            "semantic_tree": {
      -              "description": "Include compact semantic hierarchy text; default true.",
      -              "type": "boolean"
      -            },
      -            "window_title": {
      -              "description": "Optional top-level accessibility window/frame title scope.",
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "ui_find"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "anyOf": [
      -            {
      -              "required": [
      -                "id"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "label"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "name"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "role"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "automation_id"
      -              ]
      -            }
      -          ],
      -          "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"
      -            },
      -            "limit": {
      -              "description": "Maximum matches; default 20.",
      -              "type": "number"
      -            },
      -            "max_depth": {
      -              "description": "Maximum accessibility tree depth to traverse.",
      -              "type": "number"
      -            },
      -            "max_nodes": {
      -              "description": "Maximum accessibility nodes to inspect or return; keep this bounded and raise it only when the target is missing.",
      -              "type": "number"
      -            },
      -            "name": {
      -              "description": "Accessible name/title substring.",
      -              "type": "string"
      -            },
      -            "pid": {
      -              "description": "Limit matching to one owning process id when available.",
      -              "type": "number"
      -            },
      -            "refresh": {
      -              "description": "Force a fresh accessibility capture instead of the short-lived snapshot cache.",
      -              "type": "boolean"
      -            },
      -            "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"
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "wait_for_ui"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "allOf": [
      -            {
      -              "if": {
      -                "properties": {
      -                  "condition": {
      -                    "const": "text_exists"
      -                  }
      -                },
      -                "required": [
      -                  "condition"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "text"
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "condition": {
      -                    "const": "active_window"
      -                  }
      -                },
      -                "required": [
      -                  "condition"
      -                ]
      -              },
      -              "then": {
      -                "anyOf": [
      -                  {
      -                    "required": [
      -                      "text"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "name"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "window_title"
      -                    ]
      -                  }
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "condition": {
      -                    "enum": [
      -                      "element_exists",
      -                      "element_enabled"
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "condition"
      -                ]
      -              },
      -              "then": {
      -                "anyOf": [
      -                  {
      -                    "required": [
      -                      "id"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "label"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "name"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "role"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "automation_id"
      -                    ]
      -                  }
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "state": {
      -                    "enum": [
      -                      "present",
      -                      "absent"
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "state"
      -                ]
      -              },
      -              "then": {
      -                "anyOf": [
      -                  {
      -                    "required": [
      -                      "id"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "label"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "name"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "role"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "automation_id"
      -                    ]
      -                  }
      -                ]
      -              }
      -            }
      -          ],
      -          "anyOf": [
      -            {
      -              "required": [
      -                "state"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "condition"
      -              ]
      -            }
      -          ],
      -          "properties": {
      -            "app": {
      -              "description": "Limit matching to an application/process name substring when available.",
      -              "type": "string"
      -            },
      -            "automation_id": {
      -              "description": "Windows AutomationId when available.",
      -              "type": "string"
      -            },
      -            "browser_dom": {
      -              "description": "Use native browser document accessibility where supported.",
      -              "type": "boolean"
      -            },
      -            "condition": {
      -              "description": "Semantic condition to wait for; choose the condition that directly proves the requested state transition.",
      -              "enum": [
      -                "text_exists",
      -                "active_window",
      -                "element_exists",
      -                "element_enabled",
      -                "focused_element"
      -              ],
      -              "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"
      -            },
      -            "poll_ms": {
      -              "description": "Polling interval, 50..5000 ms.",
      -              "type": "number"
      -            },
      -            "role": {
      -              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      -              "type": "string"
      -            },
      -            "state": {
      -              "description": "changed captures the first matching semantic state and waits until it differs.",
      -              "enum": [
      -                "present",
      -                "absent",
      -                "changed"
      -              ],
      -              "type": "string"
      -            },
      -            "text": {
      -              "description": "Text used by text_exists or active_window.",
      -              "type": "string"
      -            },
      -            "timeout_ms": {
      -              "description": "Maximum wait, capped at 120000 ms.",
      -              "type": "number"
      -            },
      -            "window_title": {
      -              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "display_inventory"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "properties": {},
      -          "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": "window_action"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "allOf": [
      -            {
      -              "anyOf": [
      -                {
      -                  "required": [
      -                    "id"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "pid"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "app"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "title"
      -                  ]
      -                }
      -              ]
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "const": "move"
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "x",
      -                  "y"
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "const": "resize"
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "width",
      -                  "height"
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "const": "move_resize"
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "x",
      -                  "y",
      -                  "width",
      -                  "height"
      -                ]
      -              }
      -            }
      -          ],
      -          "properties": {
      -            "action": {
      -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
      -              "enum": [
      -                "focus",
      -                "minimize",
      -                "maximize",
      -                "restore",
      -                "move",
      -                "resize",
      -                "move_resize",
      -                "close"
      -              ],
      -              "type": "string"
      -            },
      -            "app": {
      -              "description": "Application/process name substring.",
      -              "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"
      -            },
      -            "height": {
      -              "description": "Height in pixels.",
      -              "type": "number"
      -            },
      -            "id": {
      -              "description": "Window id returned by list_windows.",
      -              "type": "string"
      -            },
      -            "pid": {
      -              "description": "Owning process id.",
      -              "type": "number"
      -            },
      -            "title": {
      -              "description": "Window title substring.",
      -              "type": "string"
      -            },
      -            "width": {
      -              "description": "Width in pixels.",
      -              "type": "number"
      -            },
      -            "x": {
      -              "description": "Virtual-desktop X coordinate in pixels.",
      -              "type": "number"
      -            },
      -            "y": {
      -              "description": "Virtual-desktop Y coordinate in pixels.",
      -              "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": "ui_action"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "allOf": [
      -            {
      -              "anyOf": [
      -                {
      -                  "required": [
      -                    "id"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "label"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "name"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "role"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "automation_id"
      -                  ]
      -                }
      -              ]
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "enum": [
      -                      "set_value",
      -                      "set_range_value"
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "value"
      -                ]
      -              }
      -            }
      -          ],
      -          "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"
      -              ],
      -              "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"
      -            },
      -            "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"
      -            },
      -            "value": {
      -              "description": "New text or numeric range value."
      -            },
      -            "window_title": {
      -              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "action"
      -          ],
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "parameters"
      -      ]
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "type_text"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "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"
      -            },
      -            "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"
      -            },
      -            "caret_position": {
      -              "description": "Where text insertion should occur when the semantic editor supports caret placement.",
      -              "enum": [
      -                "start",
      -                "idle",
      -                "end"
      -              ],
      -              "type": "string"
      -            },
      -            "clear": {
      -              "description": "Replace existing text for semantic/window-scoped accessibility input, or clear it before keyboard/paste fallback.",
      -              "type": "boolean"
      -            },
      -            "delay_ms": {
      -              "description": "Per-key delay for method=keys.",
      -              "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"
      -            },
      -            "method": {
      -              "description": "Default auto prefers verified accessibility editing and falls back to clipboard paste. keys sends physical key events and therefore follows the active keyboard layout.",
      -              "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"
      -            },
      -            "press_enter": {
      -              "description": "Press Enter after typing; physical Enter delivery requires verified window focus.",
      -              "type": "boolean"
      -            },
      -            "role": {
      -              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      -              "type": "string"
      -            },
      -            "text": {
      -              "description": "Text to enter.",
      -              "type": "string"
      -            },
      -            "title": {
      -              "description": "Optional target window title substring. With auto/accessibility + clear=true, a unique editable control may be updated semantically without compositor focus.",
      -              "type": "string"
      -            },
      -            "window_id": {
      -              "description": "Optional target window id. With auto/accessibility + clear=true, a unique editable control may be updated semantically without focus; keyboard/clipboard fallbacks verify focus before dispatch.",
      -              "type": "string"
      -            },
      -            "window_title": {
      -              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "text"
      -          ],
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "parameters"
      -      ]
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "keyboard"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "anyOf": [
      -            {
      -              "required": [
      -                "shortcut"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "key"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "keys"
      -              ]
      -            }
      -          ],
      -          "properties": {
      -            "app": {
      -              "description": "Optional target application/process name substring.",
      -              "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"
      -            },
      -            "key": {
      -              "description": "Single key name such as Enter, Escape, Tab or A.",
      -              "type": "string"
      -            },
      -            "keys": {
      -              "description": "Ordered key names that together form the requested shortcut or key sequence.",
      -              "items": {
      -                "type": "string"
      -              },
      -              "minItems": 1,
      -              "type": "array"
      -            },
      -            "pid": {
      -              "description": "Optional target process id.",
      -              "type": "number"
      -            },
      -            "shortcut": {
      -              "description": "Keyboard shortcut such as CTRL+L, CMD+K or ALT+F4.",
      -              "type": "string"
      -            },
      -            "title": {
      -              "description": "Optional target window title substring.",
      -              "type": "string"
      -            },
      -            "window_id": {
      -              "description": "Optional target window id returned by list_windows. On Wayland the target is focused and verified before keyboard/text input is dispatched.",
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "pointer"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "allOf": [
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "const": "move"
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "x",
      -                  "y"
      -                ]
      -              }
      -            }
      -          ],
      -          "properties": {
      -            "action": {
      -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
      -              "enum": [
      -                "move",
      -                "click",
      -                "double_click",
      -                "right_click",
      -                "down",
      -                "up"
      -              ],
      -              "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"
      -            },
      -            "button": {
      -              "description": "Pointer button to use for click/down/up or drag gestures.",
      -              "enum": [
      -                "left",
      -                "right",
      -                "middle"
      -              ],
      -              "type": "string"
      -            },
      -            "x": {
      -              "description": "Virtual-desktop X coordinate in pixels.",
      -              "type": "number"
      -            },
      -            "y": {
      -              "description": "Virtual-desktop Y coordinate in pixels.",
      -              "type": "number"
      -            }
      -          },
      -          "required": [
      -            "action"
      -          ],
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "parameters"
      -      ]
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "drag_drop"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "allOf": [
      -            {
      -              "anyOf": [
      -                {
      -                  "required": [
      -                    "from_id"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "from_x",
      -                    "from_y"
      -                  ]
      -                }
      -              ]
      -            },
      -            {
      -              "anyOf": [
      -                {
      -                  "required": [
      -                    "to_id"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "to_x",
      -                    "to_y"
      -                  ]
      -                }
      -              ]
      -            }
      -          ],
      -          "properties": {
      -            "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"
      -            },
      -            "button": {
      -              "description": "Pointer button to use for click/down/up or drag gestures.",
      -              "enum": [
      -                "left",
      -                "right",
      -                "middle"
      -              ],
      -              "type": "string"
      -            },
      -            "duration_ms": {
      -              "description": "Duration of the drag/movement gesture in milliseconds.",
      -              "type": "number"
      -            },
      -            "from_id": {
      -              "description": "Source UI element id; use instead of from_x/from_y.",
      -              "type": "string"
      -            },
      -            "from_x": {
      -              "description": "Source X coordinate for a drag gesture.",
      -              "type": "number"
      -            },
      -            "from_y": {
      -              "description": "Source Y coordinate for a drag gesture.",
      -              "type": "number"
      -            },
      -            "hold_ms": {
      -              "description": "How long to hold the pointer button before movement during a drag.",
      -              "type": "number"
      -            },
      -            "to_id": {
      -              "description": "Destination UI element id; use instead of to_x/to_y.",
      -              "type": "string"
      -            },
      -            "to_x": {
      -              "description": "Destination X coordinate for a drag gesture.",
      -              "type": "number"
      -            },
      -            "to_y": {
      -              "description": "Destination Y coordinate for a drag gesture.",
      -              "type": "number"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "scroll"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "anyOf": [
      -            {
      -              "required": [
      -                "delta_x"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "delta_y"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "delta"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "direction"
      -              ]
      -            }
      -          ],
      -          "properties": {
      -            "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"
      -            },
      -            "delta": {
      -              "description": "Alias for delta_y.",
      -              "type": "number"
      -            },
      -            "delta_x": {
      -              "description": "Horizontal delta; positive means right.",
      -              "type": "number"
      -            },
      -            "delta_y": {
      -              "description": "Vertical 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"
      -            },
      -            "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"
      -            },
      -            "wheel_times": {
      -              "description": "Number of 120-unit wheel steps when direction is used; 1..50.",
      -              "type": "number"
      -            },
      -            "window_title": {
      -              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      -              "type": "string"
      -            },
      -            "x": {
      -              "description": "Virtual-desktop X coordinate in pixels.",
      -              "type": "number"
      -            },
      -            "y": {
      -              "description": "Virtual-desktop Y coordinate in pixels.",
      -              "type": "number"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "clipboard"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "action": {
      -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
      -              "enum": [
      -                "read",
      -                "write",
      -                "clear"
      -              ],
      -              "type": "string"
      -            },
      -            "text": {
      -              "description": "Text to write.",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "action"
      -          ],
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "parameters"
      -      ]
      -    }
      -  },
      -  {
      -    "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"
      -      ]
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "notification"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "message": {
      -              "description": "Notification message.",
      -              "type": "string"
      -            },
      -            "timeout_seconds": {
      -              "description": "Bounded native notification display timeout in seconds when the platform supports it.",
      -              "type": "number"
      -            },
      -            "title": {
      -              "description": "Window/page title substring used to select the target.",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "message"
      -          ],
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "parameters"
      -      ]
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "record_screen"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "destination": {
      -              "description": "Permitted output path. If an extension is supplied, use .webm for native GNOME Wayland recording and .mp4 for the other recorder backends.",
      -              "type": "string"
      -            },
      -            "duration_seconds": {
      -              "description": "1..120 seconds.",
      -              "type": "number"
      -            },
      -            "fps": {
      -              "description": "1..60.",
      -              "type": "number"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      }
      -    }
      -  }
      -]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": "list_windows"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "include_monitor": {
      +              "description": "Enrich each window with monitor and monitor_index; default true.",
      +              "type": "boolean"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      }
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "ui_snapshot"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "app": {
      +              "description": "Optional application/process name substring scope.",
      +              "type": "string"
      +            },
      +            "browser_dom": {
      +              "description": "Prefer the native browser document accessibility subtree instead of browser chrome when supported.",
      +              "type": "boolean"
      +            },
      +            "max_depth": {
      +              "description": "Maximum traversal depth; default 8, maximum 32.",
      +              "type": "number"
      +            },
      +            "max_nodes": {
      +              "description": "Maximum nodes; default 500, maximum 5000.",
      +              "type": "number"
      +            },
      +            "pid": {
      +              "description": "Optional owning process id scope.",
      +              "type": "number"
      +            },
      +            "scope": {
      +              "description": "Default active. Use desktop only when cross-application discovery is required.",
      +              "enum": [
      +                "active",
      +                "desktop"
      +              ],
      +              "type": "string"
      +            },
      +            "semantic_tree": {
      +              "description": "Include compact semantic hierarchy text; default true.",
      +              "type": "boolean"
      +            },
      +            "window_title": {
      +              "description": "Optional top-level accessibility window/frame title scope.",
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      }
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "ui_find"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "anyOf": [
      +            {
      +              "required": [
      +                "id"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "label"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "name"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "role"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "automation_id"
      +              ]
      +            }
      +          ],
      +          "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"
      +            },
      +            "limit": {
      +              "description": "Maximum matches; default 20.",
      +              "type": "number"
      +            },
      +            "max_depth": {
      +              "description": "Maximum accessibility tree depth to traverse.",
      +              "type": "number"
      +            },
      +            "max_nodes": {
      +              "description": "Maximum accessibility nodes to inspect or return; keep this bounded and raise it only when the target is missing.",
      +              "type": "number"
      +            },
      +            "name": {
      +              "description": "Accessible name/title substring.",
      +              "type": "string"
      +            },
      +            "pid": {
      +              "description": "Limit matching to one owning process id when available.",
      +              "type": "number"
      +            },
      +            "refresh": {
      +              "description": "Force a fresh accessibility capture instead of the short-lived snapshot cache.",
      +              "type": "boolean"
      +            },
      +            "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"
      +        }
      +      }
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "wait_for_ui"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "allOf": [
      +            {
      +              "if": {
      +                "properties": {
      +                  "condition": {
      +                    "const": "text_exists"
      +                  }
      +                },
      +                "required": [
      +                  "condition"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "text"
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "condition": {
      +                    "const": "active_window"
      +                  }
      +                },
      +                "required": [
      +                  "condition"
      +                ]
      +              },
      +              "then": {
      +                "anyOf": [
      +                  {
      +                    "required": [
      +                      "text"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "name"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "window_title"
      +                    ]
      +                  }
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "condition": {
      +                    "enum": [
      +                      "element_exists",
      +                      "element_enabled"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "condition"
      +                ]
      +              },
      +              "then": {
      +                "anyOf": [
      +                  {
      +                    "required": [
      +                      "id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "label"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "name"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "role"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "automation_id"
      +                    ]
      +                  }
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "state": {
      +                    "enum": [
      +                      "present",
      +                      "absent"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "state"
      +                ]
      +              },
      +              "then": {
      +                "anyOf": [
      +                  {
      +                    "required": [
      +                      "id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "label"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "name"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "role"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "automation_id"
      +                    ]
      +                  }
      +                ]
      +              }
      +            }
      +          ],
      +          "anyOf": [
      +            {
      +              "required": [
      +                "state"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "condition"
      +              ]
      +            }
      +          ],
      +          "properties": {
      +            "app": {
      +              "description": "Limit matching to an application/process name substring when available.",
      +              "type": "string"
      +            },
      +            "automation_id": {
      +              "description": "Windows AutomationId when available.",
      +              "type": "string"
      +            },
      +            "browser_dom": {
      +              "description": "Use native browser document accessibility where supported.",
      +              "type": "boolean"
      +            },
      +            "condition": {
      +              "description": "Semantic condition to wait for; choose the condition that directly proves the requested state transition.",
      +              "enum": [
      +                "text_exists",
      +                "active_window",
      +                "element_exists",
      +                "element_enabled",
      +                "focused_element"
      +              ],
      +              "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"
      +            },
      +            "poll_ms": {
      +              "description": "Polling interval, 50..5000 ms.",
      +              "type": "number"
      +            },
      +            "role": {
      +              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      +              "type": "string"
      +            },
      +            "state": {
      +              "description": "changed captures the first matching semantic state and waits until it differs.",
      +              "enum": [
      +                "present",
      +                "absent",
      +                "changed"
      +              ],
      +              "type": "string"
      +            },
      +            "text": {
      +              "description": "Text used by text_exists or active_window.",
      +              "type": "string"
      +            },
      +            "timeout_ms": {
      +              "description": "Maximum wait, capped at 120000 ms.",
      +              "type": "number"
      +            },
      +            "window_title": {
      +              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      }
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "display_inventory"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "properties": {},
      +          "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"
      +      ]
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "window_action"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "allOf": [
      +            {
      +              "anyOf": [
      +                {
      +                  "required": [
      +                    "id"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "pid"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "app"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "title"
      +                  ]
      +                }
      +              ]
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "move"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "x",
      +                  "y"
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "resize"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "width",
      +                  "height"
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "move_resize"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "x",
      +                  "y",
      +                  "width",
      +                  "height"
      +                ]
      +              }
      +            }
      +          ],
      +          "properties": {
      +            "action": {
      +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
      +              "enum": [
      +                "focus",
      +                "minimize",
      +                "maximize",
      +                "restore",
      +                "move",
      +                "resize",
      +                "move_resize",
      +                "close"
      +              ],
      +              "type": "string"
      +            },
      +            "app": {
      +              "description": "Application/process name substring.",
      +              "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"
      +            },
      +            "height": {
      +              "description": "Height in pixels.",
      +              "type": "number"
      +            },
      +            "id": {
      +              "description": "Window id returned by list_windows.",
      +              "type": "string"
      +            },
      +            "pid": {
      +              "description": "Owning process id.",
      +              "type": "number"
      +            },
      +            "title": {
      +              "description": "Window title substring.",
      +              "type": "string"
      +            },
      +            "width": {
      +              "description": "Width in pixels.",
      +              "type": "number"
      +            },
      +            "x": {
      +              "description": "Virtual-desktop X coordinate in pixels.",
      +              "type": "number"
      +            },
      +            "y": {
      +              "description": "Virtual-desktop Y coordinate in pixels.",
      +              "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": "ui_action"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "allOf": [
      +            {
      +              "anyOf": [
      +                {
      +                  "required": [
      +                    "id"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "label"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "name"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "role"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "automation_id"
      +                  ]
      +                }
      +              ]
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "enum": [
      +                      "set_value",
      +                      "set_range_value"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "value"
      +                ]
      +              }
      +            }
      +          ],
      +          "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"
      +              ],
      +              "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"
      +            },
      +            "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"
      +            },
      +            "value": {
      +              "description": "New text or numeric range value."
      +            },
      +            "window_title": {
      +              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "action"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "parameters"
      +      ]
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "type_text"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "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"
      +            },
      +            "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"
      +            },
      +            "caret_position": {
      +              "description": "Where text insertion should occur when the semantic editor supports caret placement.",
      +              "enum": [
      +                "start",
      +                "idle",
      +                "end"
      +              ],
      +              "type": "string"
      +            },
      +            "clear": {
      +              "description": "Replace existing text for semantic/window-scoped accessibility input, or clear it before keyboard/paste fallback.",
      +              "type": "boolean"
      +            },
      +            "delay_ms": {
      +              "description": "Per-key delay for method=keys.",
      +              "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"
      +            },
      +            "method": {
      +              "description": "Default auto prefers verified accessibility editing and falls back to clipboard paste. keys sends physical key events and therefore follows the active keyboard layout.",
      +              "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"
      +            },
      +            "press_enter": {
      +              "description": "Press Enter after typing; physical Enter delivery requires verified window focus.",
      +              "type": "boolean"
      +            },
      +            "role": {
      +              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      +              "type": "string"
      +            },
      +            "text": {
      +              "description": "Text to enter.",
      +              "type": "string"
      +            },
      +            "title": {
      +              "description": "Optional target window title substring. With auto/accessibility + clear=true, a unique editable control may be updated semantically without compositor focus.",
      +              "type": "string"
      +            },
      +            "window_id": {
      +              "description": "Optional target window id. With auto/accessibility + clear=true, a unique editable control may be updated semantically without focus; keyboard/clipboard fallbacks verify focus before dispatch.",
      +              "type": "string"
      +            },
      +            "window_title": {
      +              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "text"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "parameters"
      +      ]
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "keyboard"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "anyOf": [
      +            {
      +              "required": [
      +                "shortcut"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "key"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "keys"
      +              ]
      +            }
      +          ],
      +          "properties": {
      +            "app": {
      +              "description": "Optional target application/process name substring.",
      +              "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"
      +            },
      +            "key": {
      +              "description": "Single key name such as Enter, Escape, Tab or A.",
      +              "type": "string"
      +            },
      +            "keys": {
      +              "description": "Ordered key names that together form the requested shortcut or key sequence.",
      +              "items": {
      +                "type": "string"
      +              },
      +              "minItems": 1,
      +              "type": "array"
      +            },
      +            "pid": {
      +              "description": "Optional target process id.",
      +              "type": "number"
      +            },
      +            "shortcut": {
      +              "description": "Keyboard shortcut such as CTRL+L, CMD+K or ALT+F4.",
      +              "type": "string"
      +            },
      +            "title": {
      +              "description": "Optional target window title substring.",
      +              "type": "string"
      +            },
      +            "window_id": {
      +              "description": "Optional target window id returned by list_windows. On Wayland the target is focused and verified before keyboard/text input is dispatched.",
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      }
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "pointer"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "allOf": [
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "move"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "x",
      +                  "y"
      +                ]
      +              }
      +            }
      +          ],
      +          "properties": {
      +            "action": {
      +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
      +              "enum": [
      +                "move",
      +                "click",
      +                "double_click",
      +                "right_click",
      +                "down",
      +                "up"
      +              ],
      +              "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"
      +            },
      +            "button": {
      +              "description": "Pointer button to use for click/down/up or drag gestures.",
      +              "enum": [
      +                "left",
      +                "right",
      +                "middle"
      +              ],
      +              "type": "string"
      +            },
      +            "x": {
      +              "description": "Virtual-desktop X coordinate in pixels.",
      +              "type": "number"
      +            },
      +            "y": {
      +              "description": "Virtual-desktop Y coordinate in pixels.",
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "action"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "parameters"
      +      ]
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "drag_drop"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "allOf": [
      +            {
      +              "anyOf": [
      +                {
      +                  "required": [
      +                    "from_id"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "from_x",
      +                    "from_y"
      +                  ]
      +                }
      +              ]
      +            },
      +            {
      +              "anyOf": [
      +                {
      +                  "required": [
      +                    "to_id"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "to_x",
      +                    "to_y"
      +                  ]
      +                }
      +              ]
      +            }
      +          ],
      +          "properties": {
      +            "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"
      +            },
      +            "button": {
      +              "description": "Pointer button to use for click/down/up or drag gestures.",
      +              "enum": [
      +                "left",
      +                "right",
      +                "middle"
      +              ],
      +              "type": "string"
      +            },
      +            "duration_ms": {
      +              "description": "Duration of the drag/movement gesture in milliseconds.",
      +              "type": "number"
      +            },
      +            "from_id": {
      +              "description": "Source UI element id; use instead of from_x/from_y.",
      +              "type": "string"
      +            },
      +            "from_x": {
      +              "description": "Source X coordinate for a drag gesture.",
      +              "type": "number"
      +            },
      +            "from_y": {
      +              "description": "Source Y coordinate for a drag gesture.",
      +              "type": "number"
      +            },
      +            "hold_ms": {
      +              "description": "How long to hold the pointer button before movement during a drag.",
      +              "type": "number"
      +            },
      +            "to_id": {
      +              "description": "Destination UI element id; use instead of to_x/to_y.",
      +              "type": "string"
      +            },
      +            "to_x": {
      +              "description": "Destination X coordinate for a drag gesture.",
      +              "type": "number"
      +            },
      +            "to_y": {
      +              "description": "Destination Y coordinate for a drag gesture.",
      +              "type": "number"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      }
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "scroll"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "anyOf": [
      +            {
      +              "required": [
      +                "delta_x"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "delta_y"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "delta"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "direction"
      +              ]
      +            }
      +          ],
      +          "properties": {
      +            "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"
      +            },
      +            "delta": {
      +              "description": "Alias for delta_y.",
      +              "type": "number"
      +            },
      +            "delta_x": {
      +              "description": "Horizontal delta; positive means right.",
      +              "type": "number"
      +            },
      +            "delta_y": {
      +              "description": "Vertical 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"
      +            },
      +            "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"
      +            },
      +            "wheel_times": {
      +              "description": "Number of 120-unit wheel steps when direction is used; 1..50.",
      +              "type": "number"
      +            },
      +            "window_title": {
      +              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      +              "type": "string"
      +            },
      +            "x": {
      +              "description": "Virtual-desktop X coordinate in pixels.",
      +              "type": "number"
      +            },
      +            "y": {
      +              "description": "Virtual-desktop Y coordinate in pixels.",
      +              "type": "number"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      }
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "clipboard"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "action": {
      +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
      +              "enum": [
      +                "read",
      +                "write",
      +                "clear"
      +              ],
      +              "type": "string"
      +            },
      +            "text": {
      +              "description": "Text to write.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "action"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "parameters"
      +      ]
      +    }
      +  },
      +  {
      +    "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"
      +      ]
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "notification"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "message": {
      +              "description": "Notification message.",
      +              "type": "string"
      +            },
      +            "timeout_seconds": {
      +              "description": "Bounded native notification display timeout in seconds when the platform supports it.",
      +              "type": "number"
      +            },
      +            "title": {
      +              "description": "Window/page title substring used to select the target.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "message"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "parameters"
      +      ]
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "record_screen"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "destination": {
      +              "description": "Permitted output path. If an extension is supplied, use .webm for native GNOME Wayland recording and .mp4 for the other recorder backends.",
      +              "type": "string"
      +            },
      +            "duration_seconds": {
      +              "description": "1..120 seconds.",
      +              "type": "number"
      +            },
      +            "fps": {
      +              "description": "1..60.",
      +              "type": "number"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      }
      +    }
      +  }
      +]
  2. Changed1 schema field changed
    • 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": "list_windows"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "include_monitor": {
      -              "description": "Enrich each window with monitor and monitor_index; default true.",
      -              "type": "boolean"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "ui_snapshot"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "app": {
      -              "description": "Optional application/process name substring scope.",
      -              "type": "string"
      -            },
      -            "browser_dom": {
      -              "description": "Prefer the native browser document accessibility subtree instead of browser chrome when supported.",
      -              "type": "boolean"
      -            },
      -            "max_depth": {
      -              "description": "Maximum traversal depth; default 8, maximum 32.",
      -              "type": "number"
      -            },
      -            "max_nodes": {
      -              "description": "Maximum nodes; default 500, maximum 5000.",
      -              "type": "number"
      -            },
      -            "pid": {
      -              "description": "Optional owning process id scope.",
      -              "type": "number"
      -            },
      -            "scope": {
      -              "description": "Default active. Use desktop only when cross-application discovery is required.",
      -              "enum": [
      -                "active",
      -                "desktop"
      -              ],
      -              "type": "string"
      -            },
      -            "semantic_tree": {
      -              "description": "Include compact semantic hierarchy text; default true.",
      -              "type": "boolean"
      -            },
      -            "window_title": {
      -              "description": "Optional top-level accessibility window/frame title scope.",
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "ui_find"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "anyOf": [
      -            {
      -              "required": [
      -                "id"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "label"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "name"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "role"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "automation_id"
      -              ]
      -            }
      -          ],
      -          "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"
      -            },
      -            "limit": {
      -              "description": "Maximum matches; default 20.",
      -              "type": "number"
      -            },
      -            "max_depth": {
      -              "description": "Maximum accessibility tree depth to traverse.",
      -              "type": "number"
      -            },
      -            "max_nodes": {
      -              "description": "Maximum accessibility nodes to inspect or return; keep this bounded and raise it only when the target is missing.",
      -              "type": "number"
      -            },
      -            "name": {
      -              "description": "Accessible name/title substring.",
      -              "type": "string"
      -            },
      -            "pid": {
      -              "description": "Limit matching to one owning process id when available.",
      -              "type": "number"
      -            },
      -            "refresh": {
      -              "description": "Force a fresh accessibility capture instead of the short-lived snapshot cache.",
      -              "type": "boolean"
      -            },
      -            "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"
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "wait_for_ui"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "allOf": [
      -            {
      -              "if": {
      -                "properties": {
      -                  "condition": {
      -                    "const": "text_exists"
      -                  }
      -                },
      -                "required": [
      -                  "condition"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "text"
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "condition": {
      -                    "const": "active_window"
      -                  }
      -                },
      -                "required": [
      -                  "condition"
      -                ]
      -              },
      -              "then": {
      -                "anyOf": [
      -                  {
      -                    "required": [
      -                      "text"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "name"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "window_title"
      -                    ]
      -                  }
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "condition": {
      -                    "enum": [
      -                      "element_exists",
      -                      "element_enabled"
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "condition"
      -                ]
      -              },
      -              "then": {
      -                "anyOf": [
      -                  {
      -                    "required": [
      -                      "id"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "label"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "name"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "role"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "automation_id"
      -                    ]
      -                  }
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "state": {
      -                    "enum": [
      -                      "present",
      -                      "absent"
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "state"
      -                ]
      -              },
      -              "then": {
      -                "anyOf": [
      -                  {
      -                    "required": [
      -                      "id"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "label"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "name"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "role"
      -                    ]
      -                  },
      -                  {
      -                    "required": [
      -                      "automation_id"
      -                    ]
      -                  }
      -                ]
      -              }
      -            }
      -          ],
      -          "anyOf": [
      -            {
      -              "required": [
      -                "state"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "condition"
      -              ]
      -            }
      -          ],
      -          "properties": {
      -            "app": {
      -              "description": "Limit matching to an application/process name substring when available.",
      -              "type": "string"
      -            },
      -            "automation_id": {
      -              "description": "Windows AutomationId when available.",
      -              "type": "string"
      -            },
      -            "browser_dom": {
      -              "description": "Use native browser document accessibility where supported.",
      -              "type": "boolean"
      -            },
      -            "condition": {
      -              "description": "Semantic condition to wait for; choose the condition that directly proves the requested state transition.",
      -              "enum": [
      -                "text_exists",
      -                "active_window",
      -                "element_exists",
      -                "element_enabled",
      -                "focused_element"
      -              ],
      -              "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"
      -            },
      -            "poll_ms": {
      -              "description": "Polling interval, 50..5000 ms.",
      -              "type": "number"
      -            },
      -            "role": {
      -              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      -              "type": "string"
      -            },
      -            "state": {
      -              "description": "changed captures the first matching semantic state and waits until it differs.",
      -              "enum": [
      -                "present",
      -                "absent",
      -                "changed"
      -              ],
      -              "type": "string"
      -            },
      -            "text": {
      -              "description": "Text used by text_exists or active_window.",
      -              "type": "string"
      -            },
      -            "timeout_ms": {
      -              "description": "Maximum wait, capped at 120000 ms.",
      -              "type": "number"
      -            },
      -            "window_title": {
      -              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "display_inventory"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "properties": {},
      -          "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": "window_action"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "allOf": [
      -            {
      -              "anyOf": [
      -                {
      -                  "required": [
      -                    "id"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "pid"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "app"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "title"
      -                  ]
      -                }
      -              ]
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "const": "move"
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "x",
      -                  "y"
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "const": "resize"
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "width",
      -                  "height"
      -                ]
      -              }
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "const": "move_resize"
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "x",
      -                  "y",
      -                  "width",
      -                  "height"
      -                ]
      -              }
      -            }
      -          ],
      -          "properties": {
      -            "action": {
      -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
      -              "enum": [
      -                "focus",
      -                "minimize",
      -                "maximize",
      -                "restore",
      -                "move",
      -                "resize",
      -                "move_resize",
      -                "close"
      -              ],
      -              "type": "string"
      -            },
      -            "app": {
      -              "description": "Application/process name substring.",
      -              "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"
      -            },
      -            "height": {
      -              "description": "Height in pixels.",
      -              "type": "number"
      -            },
      -            "id": {
      -              "description": "Window id returned by list_windows.",
      -              "type": "string"
      -            },
      -            "pid": {
      -              "description": "Owning process id.",
      -              "type": "number"
      -            },
      -            "title": {
      -              "description": "Window title substring.",
      -              "type": "string"
      -            },
      -            "width": {
      -              "description": "Width in pixels.",
      -              "type": "number"
      -            },
      -            "x": {
      -              "description": "Virtual-desktop X coordinate in pixels.",
      -              "type": "number"
      -            },
      -            "y": {
      -              "description": "Virtual-desktop Y coordinate in pixels.",
      -              "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": "ui_action"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "allOf": [
      -            {
      -              "anyOf": [
      -                {
      -                  "required": [
      -                    "id"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "label"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "name"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "role"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "automation_id"
      -                  ]
      -                }
      -              ]
      -            },
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "enum": [
      -                      "set_value",
      -                      "set_range_value"
      -                    ]
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "value"
      -                ]
      -              }
      -            }
      -          ],
      -          "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"
      -              ],
      -              "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"
      -            },
      -            "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"
      -            },
      -            "value": {
      -              "description": "New text or numeric range value."
      -            },
      -            "window_title": {
      -              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "action"
      -          ],
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "parameters"
      -      ]
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "type_text"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "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"
      -            },
      -            "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"
      -            },
      -            "caret_position": {
      -              "description": "Where text insertion should occur when the semantic editor supports caret placement.",
      -              "enum": [
      -                "start",
      -                "idle",
      -                "end"
      -              ],
      -              "type": "string"
      -            },
      -            "clear": {
      -              "description": "Replace existing text for semantic/window-scoped accessibility input, or clear it before keyboard/paste fallback.",
      -              "type": "boolean"
      -            },
      -            "delay_ms": {
      -              "description": "Per-key delay for method=keys.",
      -              "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"
      -            },
      -            "method": {
      -              "description": "Default auto prefers verified accessibility editing and falls back to clipboard paste. keys sends physical key events and therefore follows the active keyboard layout.",
      -              "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"
      -            },
      -            "press_enter": {
      -              "description": "Press Enter after typing; physical Enter delivery requires verified window focus.",
      -              "type": "boolean"
      -            },
      -            "role": {
      -              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      -              "type": "string"
      -            },
      -            "text": {
      -              "description": "Text to enter.",
      -              "type": "string"
      -            },
      -            "title": {
      -              "description": "Optional target window title substring. With auto/accessibility + clear=true, a unique editable control may be updated semantically without compositor focus.",
      -              "type": "string"
      -            },
      -            "window_id": {
      -              "description": "Optional target window id. With auto/accessibility + clear=true, a unique editable control may be updated semantically without focus; keyboard/clipboard fallbacks verify focus before dispatch.",
      -              "type": "string"
      -            },
      -            "window_title": {
      -              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "text"
      -          ],
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "parameters"
      -      ]
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "keyboard"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "anyOf": [
      -            {
      -              "required": [
      -                "shortcut"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "key"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "keys"
      -              ]
      -            }
      -          ],
      -          "properties": {
      -            "app": {
      -              "description": "Optional target application/process name substring.",
      -              "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"
      -            },
      -            "key": {
      -              "description": "Single key name such as Enter, Escape, Tab or A.",
      -              "type": "string"
      -            },
      -            "keys": {
      -              "description": "Ordered key names that together form the requested shortcut or key sequence.",
      -              "items": {
      -                "type": "string"
      -              },
      -              "minItems": 1,
      -              "type": "array"
      -            },
      -            "pid": {
      -              "description": "Optional target process id.",
      -              "type": "number"
      -            },
      -            "shortcut": {
      -              "description": "Keyboard shortcut such as CTRL+L, CMD+K or ALT+F4.",
      -              "type": "string"
      -            },
      -            "title": {
      -              "description": "Optional target window title substring.",
      -              "type": "string"
      -            },
      -            "window_id": {
      -              "description": "Optional target window id returned by list_windows. On Wayland the target is focused and verified before keyboard/text input is dispatched.",
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "pointer"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "allOf": [
      -            {
      -              "if": {
      -                "properties": {
      -                  "action": {
      -                    "const": "move"
      -                  }
      -                },
      -                "required": [
      -                  "action"
      -                ]
      -              },
      -              "then": {
      -                "required": [
      -                  "x",
      -                  "y"
      -                ]
      -              }
      -            }
      -          ],
      -          "properties": {
      -            "action": {
      -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
      -              "enum": [
      -                "move",
      -                "click",
      -                "double_click",
      -                "right_click",
      -                "down",
      -                "up"
      -              ],
      -              "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"
      -            },
      -            "button": {
      -              "description": "Pointer button to use for click/down/up or drag gestures.",
      -              "enum": [
      -                "left",
      -                "right",
      -                "middle"
      -              ],
      -              "type": "string"
      -            },
      -            "x": {
      -              "description": "Virtual-desktop X coordinate in pixels.",
      -              "type": "number"
      -            },
      -            "y": {
      -              "description": "Virtual-desktop Y coordinate in pixels.",
      -              "type": "number"
      -            }
      -          },
      -          "required": [
      -            "action"
      -          ],
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "parameters"
      -      ]
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "drag_drop"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "allOf": [
      -            {
      -              "anyOf": [
      -                {
      -                  "required": [
      -                    "from_id"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "from_x",
      -                    "from_y"
      -                  ]
      -                }
      -              ]
      -            },
      -            {
      -              "anyOf": [
      -                {
      -                  "required": [
      -                    "to_id"
      -                  ]
      -                },
      -                {
      -                  "required": [
      -                    "to_x",
      -                    "to_y"
      -                  ]
      -                }
      -              ]
      -            }
      -          ],
      -          "properties": {
      -            "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"
      -            },
      -            "button": {
      -              "description": "Pointer button to use for click/down/up or drag gestures.",
      -              "enum": [
      -                "left",
      -                "right",
      -                "middle"
      -              ],
      -              "type": "string"
      -            },
      -            "duration_ms": {
      -              "description": "Duration of the drag/movement gesture in milliseconds.",
      -              "type": "number"
      -            },
      -            "from_id": {
      -              "description": "Source UI element id; use instead of from_x/from_y.",
      -              "type": "string"
      -            },
      -            "from_x": {
      -              "description": "Source X coordinate for a drag gesture.",
      -              "type": "number"
      -            },
      -            "from_y": {
      -              "description": "Source Y coordinate for a drag gesture.",
      -              "type": "number"
      -            },
      -            "hold_ms": {
      -              "description": "How long to hold the pointer button before movement during a drag.",
      -              "type": "number"
      -            },
      -            "to_id": {
      -              "description": "Destination UI element id; use instead of to_x/to_y.",
      -              "type": "string"
      -            },
      -            "to_x": {
      -              "description": "Destination X coordinate for a drag gesture.",
      -              "type": "number"
      -            },
      -            "to_y": {
      -              "description": "Destination Y coordinate for a drag gesture.",
      -              "type": "number"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "scroll"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "anyOf": [
      -            {
      -              "required": [
      -                "delta_x"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "delta_y"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "delta"
      -              ]
      -            },
      -            {
      -              "required": [
      -                "direction"
      -              ]
      -            }
      -          ],
      -          "properties": {
      -            "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"
      -            },
      -            "delta": {
      -              "description": "Alias for delta_y.",
      -              "type": "number"
      -            },
      -            "delta_x": {
      -              "description": "Horizontal delta; positive means right.",
      -              "type": "number"
      -            },
      -            "delta_y": {
      -              "description": "Vertical 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"
      -            },
      -            "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"
      -            },
      -            "wheel_times": {
      -              "description": "Number of 120-unit wheel steps when direction is used; 1..50.",
      -              "type": "number"
      -            },
      -            "window_title": {
      -              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      -              "type": "string"
      -            },
      -            "x": {
      -              "description": "Virtual-desktop X coordinate in pixels.",
      -              "type": "number"
      -            },
      -            "y": {
      -              "description": "Virtual-desktop Y coordinate in pixels.",
      -              "type": "number"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      }
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "clipboard"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "action": {
      -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
      -              "enum": [
      -                "read",
      -                "write",
      -                "clear"
      -              ],
      -              "type": "string"
      -            },
      -            "text": {
      -              "description": "Text to write.",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "action"
      -          ],
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "parameters"
      -      ]
      -    }
      -  },
      -  {
      -    "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"
      -      ]
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "notification"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "message": {
      -              "description": "Notification message.",
      -              "type": "string"
      -            },
      -            "timeout_seconds": {
      -              "description": "Bounded native notification display timeout in seconds when the platform supports it.",
      -              "type": "number"
      -            },
      -            "title": {
      -              "description": "Window/page title substring used to select the target.",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "message"
      -          ],
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "parameters"
      -      ]
      -    }
      -  },
      -  {
      -    "if": {
      -      "properties": {
      -        "operation": {
      -          "const": "record_screen"
      -        }
      -      },
      -      "required": [
      -        "operation"
      -      ]
      -    },
      -    "then": {
      -      "properties": {
      -        "parameters": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "destination": {
      -              "description": "Permitted output path.",
      -              "type": "string"
      -            },
      -            "duration_seconds": {
      -              "description": "1..120 seconds.",
      -              "type": "number"
      -            },
      -            "fps": {
      -              "description": "1..60.",
      -              "type": "number"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      }
      -    }
      -  }
      -]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": "list_windows"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "include_monitor": {
      +              "description": "Enrich each window with monitor and monitor_index; default true.",
      +              "type": "boolean"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      }
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "ui_snapshot"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "app": {
      +              "description": "Optional application/process name substring scope.",
      +              "type": "string"
      +            },
      +            "browser_dom": {
      +              "description": "Prefer the native browser document accessibility subtree instead of browser chrome when supported.",
      +              "type": "boolean"
      +            },
      +            "max_depth": {
      +              "description": "Maximum traversal depth; default 8, maximum 32.",
      +              "type": "number"
      +            },
      +            "max_nodes": {
      +              "description": "Maximum nodes; default 500, maximum 5000.",
      +              "type": "number"
      +            },
      +            "pid": {
      +              "description": "Optional owning process id scope.",
      +              "type": "number"
      +            },
      +            "scope": {
      +              "description": "Default active. Use desktop only when cross-application discovery is required.",
      +              "enum": [
      +                "active",
      +                "desktop"
      +              ],
      +              "type": "string"
      +            },
      +            "semantic_tree": {
      +              "description": "Include compact semantic hierarchy text; default true.",
      +              "type": "boolean"
      +            },
      +            "window_title": {
      +              "description": "Optional top-level accessibility window/frame title scope.",
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      }
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "ui_find"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "anyOf": [
      +            {
      +              "required": [
      +                "id"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "label"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "name"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "role"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "automation_id"
      +              ]
      +            }
      +          ],
      +          "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"
      +            },
      +            "limit": {
      +              "description": "Maximum matches; default 20.",
      +              "type": "number"
      +            },
      +            "max_depth": {
      +              "description": "Maximum accessibility tree depth to traverse.",
      +              "type": "number"
      +            },
      +            "max_nodes": {
      +              "description": "Maximum accessibility nodes to inspect or return; keep this bounded and raise it only when the target is missing.",
      +              "type": "number"
      +            },
      +            "name": {
      +              "description": "Accessible name/title substring.",
      +              "type": "string"
      +            },
      +            "pid": {
      +              "description": "Limit matching to one owning process id when available.",
      +              "type": "number"
      +            },
      +            "refresh": {
      +              "description": "Force a fresh accessibility capture instead of the short-lived snapshot cache.",
      +              "type": "boolean"
      +            },
      +            "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"
      +        }
      +      }
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "wait_for_ui"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "allOf": [
      +            {
      +              "if": {
      +                "properties": {
      +                  "condition": {
      +                    "const": "text_exists"
      +                  }
      +                },
      +                "required": [
      +                  "condition"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "text"
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "condition": {
      +                    "const": "active_window"
      +                  }
      +                },
      +                "required": [
      +                  "condition"
      +                ]
      +              },
      +              "then": {
      +                "anyOf": [
      +                  {
      +                    "required": [
      +                      "text"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "name"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "window_title"
      +                    ]
      +                  }
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "condition": {
      +                    "enum": [
      +                      "element_exists",
      +                      "element_enabled"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "condition"
      +                ]
      +              },
      +              "then": {
      +                "anyOf": [
      +                  {
      +                    "required": [
      +                      "id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "label"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "name"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "role"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "automation_id"
      +                    ]
      +                  }
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "state": {
      +                    "enum": [
      +                      "present",
      +                      "absent"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "state"
      +                ]
      +              },
      +              "then": {
      +                "anyOf": [
      +                  {
      +                    "required": [
      +                      "id"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "label"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "name"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "role"
      +                    ]
      +                  },
      +                  {
      +                    "required": [
      +                      "automation_id"
      +                    ]
      +                  }
      +                ]
      +              }
      +            }
      +          ],
      +          "anyOf": [
      +            {
      +              "required": [
      +                "state"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "condition"
      +              ]
      +            }
      +          ],
      +          "properties": {
      +            "app": {
      +              "description": "Limit matching to an application/process name substring when available.",
      +              "type": "string"
      +            },
      +            "automation_id": {
      +              "description": "Windows AutomationId when available.",
      +              "type": "string"
      +            },
      +            "browser_dom": {
      +              "description": "Use native browser document accessibility where supported.",
      +              "type": "boolean"
      +            },
      +            "condition": {
      +              "description": "Semantic condition to wait for; choose the condition that directly proves the requested state transition.",
      +              "enum": [
      +                "text_exists",
      +                "active_window",
      +                "element_exists",
      +                "element_enabled",
      +                "focused_element"
      +              ],
      +              "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"
      +            },
      +            "poll_ms": {
      +              "description": "Polling interval, 50..5000 ms.",
      +              "type": "number"
      +            },
      +            "role": {
      +              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      +              "type": "string"
      +            },
      +            "state": {
      +              "description": "changed captures the first matching semantic state and waits until it differs.",
      +              "enum": [
      +                "present",
      +                "absent",
      +                "changed"
      +              ],
      +              "type": "string"
      +            },
      +            "text": {
      +              "description": "Text used by text_exists or active_window.",
      +              "type": "string"
      +            },
      +            "timeout_ms": {
      +              "description": "Maximum wait, capped at 120000 ms.",
      +              "type": "number"
      +            },
      +            "window_title": {
      +              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      }
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "display_inventory"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "properties": {},
      +          "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": "window_action"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "allOf": [
      +            {
      +              "anyOf": [
      +                {
      +                  "required": [
      +                    "id"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "pid"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "app"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "title"
      +                  ]
      +                }
      +              ]
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "move"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "x",
      +                  "y"
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "resize"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "width",
      +                  "height"
      +                ]
      +              }
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "move_resize"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "x",
      +                  "y",
      +                  "width",
      +                  "height"
      +                ]
      +              }
      +            }
      +          ],
      +          "properties": {
      +            "action": {
      +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
      +              "enum": [
      +                "focus",
      +                "minimize",
      +                "maximize",
      +                "restore",
      +                "move",
      +                "resize",
      +                "move_resize",
      +                "close"
      +              ],
      +              "type": "string"
      +            },
      +            "app": {
      +              "description": "Application/process name substring.",
      +              "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"
      +            },
      +            "height": {
      +              "description": "Height in pixels.",
      +              "type": "number"
      +            },
      +            "id": {
      +              "description": "Window id returned by list_windows.",
      +              "type": "string"
      +            },
      +            "pid": {
      +              "description": "Owning process id.",
      +              "type": "number"
      +            },
      +            "title": {
      +              "description": "Window title substring.",
      +              "type": "string"
      +            },
      +            "width": {
      +              "description": "Width in pixels.",
      +              "type": "number"
      +            },
      +            "x": {
      +              "description": "Virtual-desktop X coordinate in pixels.",
      +              "type": "number"
      +            },
      +            "y": {
      +              "description": "Virtual-desktop Y coordinate in pixels.",
      +              "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": "ui_action"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "allOf": [
      +            {
      +              "anyOf": [
      +                {
      +                  "required": [
      +                    "id"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "label"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "name"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "role"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "automation_id"
      +                  ]
      +                }
      +              ]
      +            },
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "enum": [
      +                      "set_value",
      +                      "set_range_value"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "value"
      +                ]
      +              }
      +            }
      +          ],
      +          "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"
      +              ],
      +              "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"
      +            },
      +            "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"
      +            },
      +            "value": {
      +              "description": "New text or numeric range value."
      +            },
      +            "window_title": {
      +              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "action"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "parameters"
      +      ]
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "type_text"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "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"
      +            },
      +            "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"
      +            },
      +            "caret_position": {
      +              "description": "Where text insertion should occur when the semantic editor supports caret placement.",
      +              "enum": [
      +                "start",
      +                "idle",
      +                "end"
      +              ],
      +              "type": "string"
      +            },
      +            "clear": {
      +              "description": "Replace existing text for semantic/window-scoped accessibility input, or clear it before keyboard/paste fallback.",
      +              "type": "boolean"
      +            },
      +            "delay_ms": {
      +              "description": "Per-key delay for method=keys.",
      +              "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"
      +            },
      +            "method": {
      +              "description": "Default auto prefers verified accessibility editing and falls back to clipboard paste. keys sends physical key events and therefore follows the active keyboard layout.",
      +              "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"
      +            },
      +            "press_enter": {
      +              "description": "Press Enter after typing; physical Enter delivery requires verified window focus.",
      +              "type": "boolean"
      +            },
      +            "role": {
      +              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
      +              "type": "string"
      +            },
      +            "text": {
      +              "description": "Text to enter.",
      +              "type": "string"
      +            },
      +            "title": {
      +              "description": "Optional target window title substring. With auto/accessibility + clear=true, a unique editable control may be updated semantically without compositor focus.",
      +              "type": "string"
      +            },
      +            "window_id": {
      +              "description": "Optional target window id. With auto/accessibility + clear=true, a unique editable control may be updated semantically without focus; keyboard/clipboard fallbacks verify focus before dispatch.",
      +              "type": "string"
      +            },
      +            "window_title": {
      +              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "text"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "parameters"
      +      ]
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "keyboard"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "anyOf": [
      +            {
      +              "required": [
      +                "shortcut"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "key"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "keys"
      +              ]
      +            }
      +          ],
      +          "properties": {
      +            "app": {
      +              "description": "Optional target application/process name substring.",
      +              "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"
      +            },
      +            "key": {
      +              "description": "Single key name such as Enter, Escape, Tab or A.",
      +              "type": "string"
      +            },
      +            "keys": {
      +              "description": "Ordered key names that together form the requested shortcut or key sequence.",
      +              "items": {
      +                "type": "string"
      +              },
      +              "minItems": 1,
      +              "type": "array"
      +            },
      +            "pid": {
      +              "description": "Optional target process id.",
      +              "type": "number"
      +            },
      +            "shortcut": {
      +              "description": "Keyboard shortcut such as CTRL+L, CMD+K or ALT+F4.",
      +              "type": "string"
      +            },
      +            "title": {
      +              "description": "Optional target window title substring.",
      +              "type": "string"
      +            },
      +            "window_id": {
      +              "description": "Optional target window id returned by list_windows. On Wayland the target is focused and verified before keyboard/text input is dispatched.",
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      }
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "pointer"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "allOf": [
      +            {
      +              "if": {
      +                "properties": {
      +                  "action": {
      +                    "const": "move"
      +                  }
      +                },
      +                "required": [
      +                  "action"
      +                ]
      +              },
      +              "then": {
      +                "required": [
      +                  "x",
      +                  "y"
      +                ]
      +              }
      +            }
      +          ],
      +          "properties": {
      +            "action": {
      +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
      +              "enum": [
      +                "move",
      +                "click",
      +                "double_click",
      +                "right_click",
      +                "down",
      +                "up"
      +              ],
      +              "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"
      +            },
      +            "button": {
      +              "description": "Pointer button to use for click/down/up or drag gestures.",
      +              "enum": [
      +                "left",
      +                "right",
      +                "middle"
      +              ],
      +              "type": "string"
      +            },
      +            "x": {
      +              "description": "Virtual-desktop X coordinate in pixels.",
      +              "type": "number"
      +            },
      +            "y": {
      +              "description": "Virtual-desktop Y coordinate in pixels.",
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "action"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "parameters"
      +      ]
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "drag_drop"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "allOf": [
      +            {
      +              "anyOf": [
      +                {
      +                  "required": [
      +                    "from_id"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "from_x",
      +                    "from_y"
      +                  ]
      +                }
      +              ]
      +            },
      +            {
      +              "anyOf": [
      +                {
      +                  "required": [
      +                    "to_id"
      +                  ]
      +                },
      +                {
      +                  "required": [
      +                    "to_x",
      +                    "to_y"
      +                  ]
      +                }
      +              ]
      +            }
      +          ],
      +          "properties": {
      +            "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"
      +            },
      +            "button": {
      +              "description": "Pointer button to use for click/down/up or drag gestures.",
      +              "enum": [
      +                "left",
      +                "right",
      +                "middle"
      +              ],
      +              "type": "string"
      +            },
      +            "duration_ms": {
      +              "description": "Duration of the drag/movement gesture in milliseconds.",
      +              "type": "number"
      +            },
      +            "from_id": {
      +              "description": "Source UI element id; use instead of from_x/from_y.",
      +              "type": "string"
      +            },
      +            "from_x": {
      +              "description": "Source X coordinate for a drag gesture.",
      +              "type": "number"
      +            },
      +            "from_y": {
      +              "description": "Source Y coordinate for a drag gesture.",
      +              "type": "number"
      +            },
      +            "hold_ms": {
      +              "description": "How long to hold the pointer button before movement during a drag.",
      +              "type": "number"
      +            },
      +            "to_id": {
      +              "description": "Destination UI element id; use instead of to_x/to_y.",
      +              "type": "string"
      +            },
      +            "to_x": {
      +              "description": "Destination X coordinate for a drag gesture.",
      +              "type": "number"
      +            },
      +            "to_y": {
      +              "description": "Destination Y coordinate for a drag gesture.",
      +              "type": "number"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      }
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "scroll"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "anyOf": [
      +            {
      +              "required": [
      +                "delta_x"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "delta_y"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "delta"
      +              ]
      +            },
      +            {
      +              "required": [
      +                "direction"
      +              ]
      +            }
      +          ],
      +          "properties": {
      +            "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"
      +            },
      +            "delta": {
      +              "description": "Alias for delta_y.",
      +              "type": "number"
      +            },
      +            "delta_x": {
      +              "description": "Horizontal delta; positive means right.",
      +              "type": "number"
      +            },
      +            "delta_y": {
      +              "description": "Vertical 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"
      +            },
      +            "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"
      +            },
      +            "wheel_times": {
      +              "description": "Number of 120-unit wheel steps when direction is used; 1..50.",
      +              "type": "number"
      +            },
      +            "window_title": {
      +              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
      +              "type": "string"
      +            },
      +            "x": {
      +              "description": "Virtual-desktop X coordinate in pixels.",
      +              "type": "number"
      +            },
      +            "y": {
      +              "description": "Virtual-desktop Y coordinate in pixels.",
      +              "type": "number"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      }
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "clipboard"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "action": {
      +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
      +              "enum": [
      +                "read",
      +                "write",
      +                "clear"
      +              ],
      +              "type": "string"
      +            },
      +            "text": {
      +              "description": "Text to write.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "action"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "parameters"
      +      ]
      +    }
      +  },
      +  {
      +    "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"
      +      ]
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "notification"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "message": {
      +              "description": "Notification message.",
      +              "type": "string"
      +            },
      +            "timeout_seconds": {
      +              "description": "Bounded native notification display timeout in seconds when the platform supports it.",
      +              "type": "number"
      +            },
      +            "title": {
      +              "description": "Window/page title substring used to select the target.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "message"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "parameters"
      +      ]
      +    }
      +  },
      +  {
      +    "if": {
      +      "properties": {
      +        "operation": {
      +          "const": "record_screen"
      +        }
      +      },
      +      "required": [
      +        "operation"
      +      ]
      +    },
      +    "then": {
      +      "properties": {
      +        "parameters": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "destination": {
      +              "description": "Permitted output path. If an extension is supplied, use .webm for native GNOME Wayland recording and .mp4 for the other recorder backends.",
      +              "type": "string"
      +            },
      +            "duration_seconds": {
      +              "description": "1..120 seconds.",
      +              "type": "number"
      +            },
      +            "fps": {
      +              "description": "1..60.",
      +              "type": "number"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      }
      +    }
      +  }
      +]
  3. Added

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only declare a blanket destructiveHint=true and openWorldHint=true; the description adds granular value by splitting observing operations (snapshot/find/wait) from state-changing ones (clicks, typing, window close, app launch, clipboard writes, recording), which tells the agent precisely which invocations carry side effects. It does not cover auth/consent requirements (e.g. Wayland portal consent, which the schema mentions), so it stops short of a 5.

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

Conciseness4/5

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

Three dense sentences, front-loaded with the scope, then the read/write split, then the sibling routing. Every sentence earns its place, though the enumeration in sentence one is long for a 20-operation catch-all tool and could be tighter.

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?

With an output schema present and 100% schema coverage for a 20-operation tool, the description supplies what structured fields cannot: the domain boundary, the mutation split, and sibling routing. It omits nothing critical, though it does not hint at operation-level prerequisites like portal consent or backend selection.

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 the schema carries per-operation parameter definitions, so the description does not need to restate parameter semantics. It adds no syntax or format detail beyond the schema, making the baseline 3 appropriate.

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

Purpose5/5

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

States a specific verb+resource domain (semantic inspection/control of native desktop applications) and enumerates the operation families it covers (snapshots, windows, accessibility, waits, displays, launch, input, clipboard, open/reveal, notifications, recording). It also explicitly distinguishes itself from sibling tools view_image and control_browser, so an agent can route without opening schemas.

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

Usage Guidelines5/5

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

Gives explicit selection rules: prefer semantic inspection/actions before raw coordinates, use view_image only when pixels are required, and use control_browser for page DOM/CDP work. These are concrete when-to-use and when-to-use-something-else statements naming the alternatives.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources