changedInput schema / allOf
Previous value: -[
- {
- "if": {
- "properties": {
- "operation": {
- "const": "computer_snapshot"
- }
- },
- "required": [
- "operation"
- ]
- },
- "then": {
- "properties": {
- "parameters": {
- "additionalProperties": false,
- "properties": {
- "browser_max_nodes": {
- "description": "Maximum browser accessibility nodes; default 500, maximum 2000.",
- "type": "number"
- },
- "grid_columns": {
- "description": "Optional reference-grid column count returned as visual metadata; 0..20.",
- "type": "number"
- },
- "grid_rows": {
- "description": "Optional reference-grid row count returned as visual metadata; 0..20.",
- "type": "number"
- },
- "include_browser": {
- "description": "Include CDP browser accessibility when available. Default auto: only when the active app looks Chromium-based.",
- "type": "boolean"
- },
- "include_ocr": {
- "description": "Run optional local OCR. Default auto: only when native accessibility and browser DOM are unavailable. Requires tesseract on PATH.",
- "type": "boolean"
- },
- "include_screenshot": {
- "description": "Include real rendered desktop pixels; default true.",
- "type": "boolean"
- },
- "include_ui": {
- "description": "Include native accessibility tree; default true. False is the fast screenshot-only path.",
- "type": "boolean"
- },
- "max_ui_depth": {
- "description": "Maximum native accessibility depth; default 12.",
- "type": "number"
- },
- "max_ui_nodes": {
- "description": "Maximum native accessibility nodes; default 800.",
- "type": "number"
- },
- "ocr_language": {
- "description": "Tesseract language code, default eng; multiple languages may use eng+deu.",
- "type": "string"
- },
- "ocr_max_words": {
- "description": "Maximum OCR word boxes returned; default 2000, maximum 10000.",
- "type": "number"
- },
- "ocr_psm": {
- "description": "Tesseract page segmentation mode, 3..13; default 11.",
- "type": "number"
- },
- "ocr_timeout_ms": {
- "description": "OCR timeout, default 30000 ms, maximum 120000 ms.",
- "type": "number"
- },
- "screenshot_monitor": {
- "description": "Monitor name substring or \"primary\".",
- "type": "string"
- },
- "screenshot_monitor_index": {
- "description": "Zero-based monitor index.",
- "type": "number"
- },
- "screenshot_padding": {
- "description": "Pixels of context around a targeted screenshot; 0..200.",
- "type": "number"
- },
- "screenshot_region": {
- "description": "Virtual-desktop [left,top,right,bottom] region; takes precedence over full desktop.",
- "items": {
- "type": "number"
- },
- "maxItems": 4,
- "minItems": 4,
- "type": "array"
- },
- "screenshot_window_id": {
- "description": "Capture the window returned by list_windows instead of the whole desktop.",
- "type": "string"
- },
- "semantic_tree": {
- "description": "Include compact semantic hierarchy text alongside nodes; default true.",
- "type": "boolean"
- },
- "ui_browser_dom": {
- "description": "Prefer the native browser accessibility document subtree when the OS exposes one; on Windows this also enables the Firefox MSAA/IAccessible fallback.",
- "type": "boolean"
- },
- "ui_scope": {
- "description": "Accessibility scope for computer_snapshot. Default active keeps the compact snapshot fast; desktop requests all accessible applications/windows.",
- "enum": [
- "active",
- "desktop"
- ],
- "type": "string"
- }
- },
- "type": "object"
- }
- }
- }
- },
- {
- "if": {
- "properties": {
- "operation": {
- "const": "computer_action"
- }
- },
- "required": [
- "operation"
- ]
- },
- "then": {
- "properties": {
- "parameters": {
- "additionalProperties": false,
- "allOf": [
- {
- "if": {
- "properties": {
- "action": {
- "const": "click"
- }
- },
- "required": [
- "action"
- ]
- },
- "then": {
- "anyOf": [
- {
- "required": [
- "id"
- ]
- },
- {
- "required": [
- "label"
- ]
- },
- {
- "required": [
- "name"
- ]
- },
- {
- "required": [
- "role"
- ]
- },
- {
- "required": [
- "automation_id"
- ]
- },
- {
- "required": [
- "selector"
- ]
- },
- {
- "required": [
- "browser_text"
- ]
- },
- {
- "required": [
- "ocr_text"
- ]
- },
- {
- "required": [
- "x",
- "y"
- ]
- }
- ]
- }
- },
- {
- "if": {
- "properties": {
- "action": {
- "enum": [
- "invoke",
- "set_value",
- "select",
- "toggle",
- "expand",
- "collapse",
- "scroll_into_view",
- "set_range_value",
- "add_to_selection",
- "remove_from_selection"
- ]
- }
- },
- "required": [
- "action"
- ]
- },
- "then": {
- "anyOf": [
- {
- "required": [
- "id"
- ]
- },
- {
- "required": [
- "label"
- ]
- },
- {
- "required": [
- "name"
- ]
- },
- {
- "required": [
- "role"
- ]
- },
- {
- "required": [
- "automation_id"
- ]
- },
- {
- "required": [
- "selector"
- ]
- },
- {
- "required": [
- "browser_text"
- ]
- }
- ]
- }
- },
- {
- "if": {
- "properties": {
- "action": {
- "const": "focus"
- }
- },
- "required": [
- "action"
- ]
- },
- "then": {
- "anyOf": [
- {
- "required": [
- "id"
- ]
- },
- {
- "required": [
- "label"
- ]
- },
- {
- "required": [
- "name"
- ]
- },
- {
- "required": [
- "role"
- ]
- },
- {
- "required": [
- "automation_id"
- ]
- },
- {
- "required": [
- "selector"
- ]
- },
- {
- "required": [
- "browser_text"
- ]
- },
- {
- "required": [
- "pid"
- ]
- },
- {
- "required": [
- "app"
- ]
- },
- {
- "required": [
- "window_title"
- ]
- },
- {
- "required": [
- "title"
- ]
- }
- ]
- }
- },
- {
- "if": {
- "properties": {
- "action": {
- "enum": [
- "set_value",
- "set_range_value"
- ]
- }
- },
- "required": [
- "action"
- ]
- },
- "then": {
- "required": [
- "value"
- ]
- }
- },
- {
- "if": {
- "properties": {
- "action": {
- "const": "multi_select"
- }
- },
- "required": [
- "action"
- ]
- },
- "then": {
- "required": [
- "targets"
- ]
- }
- },
- {
- "if": {
- "properties": {
- "action": {
- "const": "multi_edit"
- }
- },
- "required": [
- "action"
- ]
- },
- "then": {
- "required": [
- "edits"
- ]
- }
- }
- ],
- "properties": {
- "action": {
- "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
- "enum": [
- "click",
- "invoke",
- "focus",
- "set_value",
- "select",
- "toggle",
- "expand",
- "collapse",
- "scroll_into_view",
- "set_range_value",
- "add_to_selection",
- "remove_from_selection",
- "multi_select",
- "multi_edit"
- ],
- "type": "string"
- },
- "app": {
- "description": "Limit matching to an application/process name substring when available.",
- "type": "string"
- },
- "automation_id": {
- "description": "Windows AutomationId when available.",
- "type": "string"
- },
- "backend": {
- "description": "Input backend preference. auto uses proven local backends and already-authorized portal input; portal explicitly requests XDG RemoteDesktop consent on Wayland; x11 forces XWayland/xdotool only for operations where read-back testing shows it is reliable. GNOME Wayland keyboard/text deliberately reject x11.",
- "enum": [
- "auto",
- "x11",
- "portal"
- ],
- "type": "string"
- },
- "browser_text": {
- "description": "Visible browser text used to locate a DOM fallback target.",
- "type": "string"
- },
- "edits": {
- "description": "Native semantic target + text entries for action=multi_edit.",
- "items": {
- "additionalProperties": false,
- "properties": {
- "app": {
- "description": "Limit matching to an application/process name substring when available.",
- "type": "string"
- },
- "automation_id": {
- "description": "Windows AutomationId when available.",
- "type": "string"
- },
- "clear": {
- "description": "Clear the current value before entering text; default true.",
- "type": "boolean"
- },
- "id": {
- "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
- "type": "string"
- },
- "label": {
- "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
- "type": "number"
- },
- "method": {
- "description": "Text-entry strategy; auto is recommended.",
- "enum": [
- "auto",
- "accessibility",
- "clipboard",
- "keys"
- ],
- "type": "string"
- },
- "name": {
- "description": "Accessible name/title substring.",
- "type": "string"
- },
- "pid": {
- "description": "Limit matching to one owning process id when available.",
- "type": "number"
- },
- "role": {
- "description": "Accessible role such as Button, Edit, textbox or AXButton.",
- "type": "string"
- },
- "text": {
- "description": "Replacement text for this semantic edit.",
- "type": "string"
- },
- "window_title": {
- "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
- "type": "string"
- }
- },
- "required": [
- "text"
- ],
- "type": "object"
- },
- "maxItems": 100,
- "minItems": 1,
- "type": "array"
- },
- "endpoint": {
- "description": "Loopback Chrome DevTools endpoint for a browser fallback.",
- "type": "string"
- },
- "id": {
- "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
- "type": "string"
- },
- "label": {
- "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
- "type": "number"
- },
- "name": {
- "description": "Accessible name/title substring.",
- "type": "string"
- },
- "ocr_language": {
- "description": "Tesseract language code, default eng.",
- "type": "string"
- },
- "ocr_psm": {
- "description": "Tesseract page segmentation mode, default 11.",
- "type": "number"
- },
- "ocr_region": {
- "description": "Optional virtual-desktop [left,top,right,bottom] region to OCR. Prefer bounds from list_windows or computer_snapshot.",
- "items": {
- "type": "number"
- },
- "maxItems": 4,
- "minItems": 4,
- "type": "array"
- },
- "ocr_text": {
- "description": "Visible text to find in rendered pixels for the OCR click fallback.",
- "type": "string"
- },
- "ocr_timeout_ms": {
- "description": "OCR timeout in milliseconds.",
- "type": "number"
- },
- "option": {
- "description": "Option value for browser select.",
- "type": "string"
- },
- "pid": {
- "description": "Limit matching to one owning process id when available.",
- "type": "number"
- },
- "replace_selection": {
- "description": "For multi_select, select the first item before adding the rest; default true.",
- "type": "boolean"
- },
- "role": {
- "description": "Accessible role such as Button, Edit, textbox or AXButton.",
- "type": "string"
- },
- "selector": {
- "description": "CSS selector when the fallback target is a browser element.",
- "type": "string"
- },
- "target": {
- "description": "Optional target type. auto tries native accessibility first, then browser DOM/CDP, OCR text when requested, then coordinates for click.",
- "enum": [
- "auto",
- "ui",
- "ui_element",
- "browser",
- "ocr",
- "coordinates"
- ],
- "type": "string"
- },
- "target_id": {
- "description": "Browser page target id returned by browser_tabs.",
- "type": "string"
- },
- "targets": {
- "description": "Native semantic targets for action=multi_select.",
- "items": {
- "additionalProperties": false,
- "properties": {
- "app": {
- "description": "Limit matching to an application/process name substring when available.",
- "type": "string"
- },
- "automation_id": {
- "description": "Windows AutomationId when available.",
- "type": "string"
- },
- "id": {
- "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
- "type": "string"
- },
- "label": {
- "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
- "type": "number"
- },
- "name": {
- "description": "Accessible name/title substring.",
- "type": "string"
- },
- "pid": {
- "description": "Limit matching to one owning process id when available.",
- "type": "number"
- },
- "role": {
- "description": "Accessible role such as Button, Edit, textbox or AXButton.",
- "type": "string"
- },
- "window_title": {
- "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
- "type": "string"
- }
- },
- "type": "object"
- },
- "maxItems": 100,
- "minItems": 1,
- "type": "array"
- },
- "text": {
- "description": "Text used by multi_edit or as a compatibility value for a semantic edit.",
- "type": "string"
- },
- "title": {
- "description": "Optional browser page title substring when target=browser.",
- "type": "string"
- },
- "url_contains": {
- "description": "Browser URL substring used to select a page.",
- "type": "string"
- },
- "value": {
- "description": "New value for set_value, set_range_value, or select.",
- "type": "string"
- },
- "window_title": {
- "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
- "type": "string"
- },
- "x": {
- "description": "Virtual-desktop X coordinate used only by the final click fallback.",
- "type": "number"
- },
- "y": {
- "description": "Virtual-desktop Y coordinate used only by the final click fallback.",
- "type": "number"
- }
- },
- "required": [
- "action"
- ],
- "type": "object"
- }
- },
- "required": [
- "parameters"
- ]
- }
- }
-]New value: +[
+ {
+ "if": {
+ "properties": {
+ "operation": {
+ "const": "computer_snapshot"
+ }
+ },
+ "required": [
+ "operation"
+ ]
+ },
+ "then": {
+ "properties": {
+ "parameters": {
+ "additionalProperties": false,
+ "properties": {
+ "browser_max_nodes": {
+ "description": "Maximum browser accessibility nodes; default 500, maximum 2000.",
+ "type": "number"
+ },
+ "grid_columns": {
+ "description": "Optional reference-grid column count returned as visual metadata; 0..20.",
+ "type": "number"
+ },
+ "grid_rows": {
+ "description": "Optional reference-grid row count returned as visual metadata; 0..20.",
+ "type": "number"
+ },
+ "include_browser": {
+ "description": "Include CDP browser accessibility when available. Default auto: only when the active app looks Chromium-based.",
+ "type": "boolean"
+ },
+ "include_ocr": {
+ "description": "Run optional local OCR. Default auto: only when native accessibility and browser DOM are unavailable. Requires tesseract on PATH.",
+ "type": "boolean"
+ },
+ "include_screenshot": {
+ "description": "Include real rendered desktop pixels; default true.",
+ "type": "boolean"
+ },
+ "include_ui": {
+ "description": "Include native accessibility tree; default true. False is the fast screenshot-only path.",
+ "type": "boolean"
+ },
+ "max_ui_depth": {
+ "description": "Maximum native accessibility depth; default 12.",
+ "type": "number"
+ },
+ "max_ui_nodes": {
+ "description": "Maximum native accessibility nodes; default 800.",
+ "type": "number"
+ },
+ "ocr_language": {
+ "description": "Tesseract language code, default eng; multiple languages may use eng+deu.",
+ "type": "string"
+ },
+ "ocr_max_words": {
+ "description": "Maximum OCR word boxes returned; default 2000, maximum 10000.",
+ "type": "number"
+ },
+ "ocr_psm": {
+ "description": "Tesseract page segmentation mode, 3..13; default 11.",
+ "type": "number"
+ },
+ "ocr_timeout_ms": {
+ "description": "OCR timeout, default 30000 ms, maximum 120000 ms.",
+ "type": "number"
+ },
+ "screenshot_monitor": {
+ "description": "Monitor name substring or \"primary\".",
+ "type": "string"
+ },
+ "screenshot_monitor_index": {
+ "description": "Zero-based monitor index.",
+ "type": "number"
+ },
+ "screenshot_padding": {
+ "description": "Pixels of context around a targeted screenshot; 0..200.",
+ "type": "number"
+ },
+ "screenshot_region": {
+ "description": "Virtual-desktop [left,top,right,bottom] region; takes precedence over full desktop.",
+ "items": {
+ "type": "number"
+ },
+ "maxItems": 4,
+ "minItems": 4,
+ "type": "array"
+ },
+ "screenshot_window_id": {
+ "description": "Capture the window returned by list_windows instead of the whole desktop.",
+ "type": "string"
+ },
+ "semantic_tree": {
+ "description": "Include compact semantic hierarchy text alongside nodes; default true.",
+ "type": "boolean"
+ },
+ "ui_browser_dom": {
+ "description": "Prefer the native browser accessibility document subtree when the OS exposes one; on Windows this also enables the Firefox MSAA/IAccessible fallback.",
+ "type": "boolean"
+ },
+ "ui_scope": {
+ "description": "Accessibility scope for computer_snapshot. Default active keeps the compact snapshot fast; desktop requests all accessible applications/windows.",
+ "enum": [
+ "active",
+ "desktop"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ }
+ }
+ },
+ {
+ "if": {
+ "properties": {
+ "operation": {
+ "const": "computer_action"
+ }
+ },
+ "required": [
+ "operation"
+ ]
+ },
+ "then": {
+ "properties": {
+ "parameters": {
+ "additionalProperties": false,
+ "allOf": [
+ {
+ "if": {
+ "properties": {
+ "target": {
+ "const": "window"
+ }
+ },
+ "required": [
+ "target"
+ ]
+ },
+ "then": {
+ "anyOf": [
+ {
+ "required": [
+ "window_id"
+ ]
+ },
+ {
+ "required": [
+ "pid"
+ ]
+ },
+ {
+ "required": [
+ "app"
+ ]
+ },
+ {
+ "required": [
+ "window_title"
+ ]
+ },
+ {
+ "required": [
+ "title"
+ ]
+ }
+ ],
+ "properties": {
+ "action": {
+ "enum": [
+ "type",
+ "focus",
+ "scroll",
+ "drag"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "if": {
+ "properties": {
+ "action": {
+ "const": "click"
+ }
+ },
+ "required": [
+ "action"
+ ]
+ },
+ "then": {
+ "anyOf": [
+ {
+ "required": [
+ "id"
+ ]
+ },
+ {
+ "required": [
+ "label"
+ ]
+ },
+ {
+ "required": [
+ "name"
+ ]
+ },
+ {
+ "required": [
+ "role"
+ ]
+ },
+ {
+ "required": [
+ "automation_id"
+ ]
+ },
+ {
+ "required": [
+ "selector"
+ ]
+ },
+ {
+ "required": [
+ "browser_text"
+ ]
+ },
+ {
+ "required": [
+ "name"
+ ]
+ },
+ {
+ "required": [
+ "ocr_text"
+ ]
+ },
+ {
+ "required": [
+ "x",
+ "y"
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "if": {
+ "properties": {
+ "action": {
+ "enum": [
+ "invoke",
+ "set_value",
+ "select",
+ "toggle",
+ "expand",
+ "collapse",
+ "scroll_into_view",
+ "set_range_value",
+ "add_to_selection",
+ "remove_from_selection"
+ ]
+ }
+ },
+ "required": [
+ "action"
+ ]
+ },
+ "then": {
+ "anyOf": [
+ {
+ "required": [
+ "id"
+ ]
+ },
+ {
+ "required": [
+ "label"
+ ]
+ },
+ {
+ "required": [
+ "name"
+ ]
+ },
+ {
+ "required": [
+ "role"
+ ]
+ },
+ {
+ "required": [
+ "automation_id"
+ ]
+ },
+ {
+ "required": [
+ "selector"
+ ]
+ },
+ {
+ "required": [
+ "browser_text"
+ ]
+ },
+ {
+ "required": [
+ "name"
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "if": {
+ "properties": {
+ "action": {
+ "const": "focus"
+ }
+ },
+ "required": [
+ "action"
+ ]
+ },
+ "then": {
+ "anyOf": [
+ {
+ "required": [
+ "id"
+ ]
+ },
+ {
+ "required": [
+ "label"
+ ]
+ },
+ {
+ "required": [
+ "name"
+ ]
+ },
+ {
+ "required": [
+ "role"
+ ]
+ },
+ {
+ "required": [
+ "automation_id"
+ ]
+ },
+ {
+ "required": [
+ "selector"
+ ]
+ },
+ {
+ "required": [
+ "browser_text"
+ ]
+ },
+ {
+ "required": [
+ "name"
+ ]
+ },
+ {
+ "required": [
+ "window_id"
+ ]
+ },
+ {
+ "required": [
+ "pid"
+ ]
+ },
+ {
+ "required": [
+ "app"
+ ]
+ },
+ {
+ "required": [
+ "window_title"
+ ]
+ },
+ {
+ "required": [
+ "title"
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "if": {
+ "properties": {
+ "action": {
+ "const": "type"
+ }
+ },
+ "required": [
+ "action"
+ ]
+ },
+ "then": {
+ "allOf": [
+ {
+ "anyOf": [
+ {
+ "required": [
+ "id"
+ ]
+ },
+ {
+ "required": [
+ "label"
+ ]
+ },
+ {
+ "required": [
+ "name"
+ ]
+ },
+ {
+ "required": [
+ "role"
+ ]
+ },
+ {
+ "required": [
+ "automation_id"
+ ]
+ },
+ {
+ "required": [
+ "selector"
+ ]
+ },
+ {
+ "required": [
+ "browser_text"
+ ]
+ },
+ {
+ "required": [
+ "name"
+ ]
+ },
+ {
+ "required": [
+ "window_id"
+ ]
+ },
+ {
+ "required": [
+ "pid"
+ ]
+ },
+ {
+ "required": [
+ "app"
+ ]
+ },
+ {
+ "required": [
+ "window_title"
+ ]
+ },
+ {
+ "required": [
+ "title"
+ ]
+ }
+ ]
+ },
+ {
+ "if": {
+ "properties": {
+ "target": {
+ "enum": [
+ "ui",
+ "ui_element"
+ ]
+ }
+ },
+ "required": [
+ "target"
+ ]
+ },
+ "then": {
+ "anyOf": [
+ {
+ "required": [
+ "id"
+ ]
+ },
+ {
+ "required": [
+ "label"
+ ]
+ },
+ {
+ "required": [
+ "name"
+ ]
+ },
+ {
+ "required": [
+ "role"
+ ]
+ },
+ {
+ "required": [
+ "automation_id"
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "if": {
+ "properties": {
+ "target": {
+ "const": "browser"
+ }
+ },
+ "required": [
+ "target"
+ ]
+ },
+ "then": {
+ "anyOf": [
+ {
+ "required": [
+ "selector"
+ ]
+ },
+ {
+ "required": [
+ "browser_text"
+ ]
+ },
+ {
+ "required": [
+ "name"
+ ]
+ }
+ ]
+ }
+ }
+ ],
+ "properties": {
+ "target": {
+ "enum": [
+ "auto",
+ "ui",
+ "ui_element",
+ "browser",
+ "window"
+ ]
+ }
+ },
+ "required": [
+ "text"
+ ]
+ }
+ },
+ {
+ "if": {
+ "properties": {
+ "action": {
+ "const": "scroll"
+ }
+ },
+ "required": [
+ "action"
+ ]
+ },
+ "then": {
+ "allOf": [
+ {
+ "anyOf": [
+ {
+ "required": [
+ "delta_x"
+ ]
+ },
+ {
+ "required": [
+ "delta_y"
+ ]
+ },
+ {
+ "required": [
+ "delta"
+ ]
+ },
+ {
+ "required": [
+ "direction"
+ ]
+ }
+ ]
+ },
+ {
+ "if": {
+ "properties": {
+ "target": {
+ "enum": [
+ "ui",
+ "ui_element"
+ ]
+ }
+ },
+ "required": [
+ "target"
+ ]
+ },
+ "then": {
+ "anyOf": [
+ {
+ "required": [
+ "id"
+ ]
+ },
+ {
+ "required": [
+ "label"
+ ]
+ },
+ {
+ "required": [
+ "name"
+ ]
+ },
+ {
+ "required": [
+ "role"
+ ]
+ },
+ {
+ "required": [
+ "automation_id"
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "if": {
+ "properties": {
+ "target": {
+ "const": "coordinates"
+ }
+ },
+ "required": [
+ "target"
+ ]
+ },
+ "then": {
+ "required": [
+ "x",
+ "y"
+ ]
+ }
+ }
+ ],
+ "properties": {
+ "target": {
+ "enum": [
+ "auto",
+ "ui",
+ "ui_element",
+ "browser",
+ "coordinates",
+ "window"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "if": {
+ "properties": {
+ "action": {
+ "const": "drag"
+ }
+ },
+ "required": [
+ "action"
+ ]
+ },
+ "then": {
+ "allOf": [
+ {
+ "anyOf": [
+ {
+ "required": [
+ "from_id"
+ ]
+ },
+ {
+ "required": [
+ "from_x",
+ "from_y"
+ ]
+ }
+ ]
+ },
+ {
+ "anyOf": [
+ {
+ "required": [
+ "to_id"
+ ]
+ },
+ {
+ "required": [
+ "to_x",
+ "to_y"
+ ]
+ }
+ ]
+ },
+ {
+ "if": {
+ "properties": {
+ "target": {
+ "enum": [
+ "ui",
+ "ui_element"
+ ]
+ }
+ },
+ "required": [
+ "target"
+ ]
+ },
+ "then": {
+ "required": [
+ "from_id",
+ "to_id"
+ ]
+ }
+ },
+ {
+ "if": {
+ "properties": {
+ "target": {
+ "const": "coordinates"
+ }
+ },
+ "required": [
+ "target"
+ ]
+ },
+ "then": {
+ "required": [
+ "from_x",
+ "from_y",
+ "to_x",
+ "to_y"
+ ]
+ }
+ }
+ ],
+ "properties": {
+ "target": {
+ "enum": [
+ "auto",
+ "ui",
+ "ui_element",
+ "coordinates",
+ "window"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "if": {
+ "properties": {
+ "action": {
+ "enum": [
+ "set_value",
+ "set_range_value"
+ ]
+ }
+ },
+ "required": [
+ "action"
+ ]
+ },
+ "then": {
+ "required": [
+ "value"
+ ]
+ }
+ },
+ {
+ "if": {
+ "properties": {
+ "action": {
+ "const": "multi_select"
+ }
+ },
+ "required": [
+ "action"
+ ]
+ },
+ "then": {
+ "required": [
+ "targets"
+ ]
+ }
+ },
+ {
+ "if": {
+ "properties": {
+ "action": {
+ "const": "multi_edit"
+ }
+ },
+ "required": [
+ "action"
+ ]
+ },
+ "then": {
+ "required": [
+ "edits"
+ ]
+ }
+ }
+ ],
+ "properties": {
+ "action": {
+ "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
+ "enum": [
+ "click",
+ "type",
+ "invoke",
+ "focus",
+ "select",
+ "scroll",
+ "drag",
+ "set_value",
+ "toggle",
+ "expand",
+ "collapse",
+ "scroll_into_view",
+ "set_range_value",
+ "add_to_selection",
+ "remove_from_selection",
+ "multi_select",
+ "multi_edit"
+ ],
+ "type": "string"
+ },
+ "app": {
+ "description": "Limit matching to an application/process name substring when available.",
+ "type": "string"
+ },
+ "automation_id": {
+ "description": "Windows AutomationId when available.",
+ "type": "string"
+ },
+ "backend": {
+ "description": "Input backend preference. auto uses proven local backends and already-authorized portal input; portal explicitly requests XDG RemoteDesktop consent on Wayland; x11 forces XWayland/xdotool only for operations where read-back testing shows it is reliable. GNOME Wayland keyboard/text deliberately reject x11.",
+ "enum": [
+ "auto",
+ "x11",
+ "portal"
+ ],
+ "type": "string"
+ },
+ "browser_text": {
+ "description": "Visible browser text used only to locate a DOM target; for action=type, text remains the value to enter.",
+ "type": "string"
+ },
+ "button": {
+ "description": "Pointer button to use for click/down/up or drag gestures.",
+ "enum": [
+ "left",
+ "right",
+ "middle"
+ ],
+ "type": "string"
+ },
+ "clear": {
+ "description": "For action=type, clear the current semantic/browser value before inserting text when supported.",
+ "type": "boolean"
+ },
+ "delta": {
+ "description": "Alias for delta_y.",
+ "type": "number"
+ },
+ "delta_x": {
+ "description": "Horizontal scroll delta; positive means right.",
+ "type": "number"
+ },
+ "delta_y": {
+ "description": "Vertical scroll delta; positive means down.",
+ "type": "number"
+ },
+ "direction": {
+ "description": "Human-readable scroll direction used with wheel_times instead of explicit deltas.",
+ "enum": [
+ "up",
+ "down",
+ "left",
+ "right"
+ ],
+ "type": "string"
+ },
+ "duration_ms": {
+ "description": "Drag movement duration.",
+ "type": "number"
+ },
+ "edits": {
+ "description": "Native semantic target + text entries for action=multi_edit.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "app": {
+ "description": "Limit matching to an application/process name substring when available.",
+ "type": "string"
+ },
+ "automation_id": {
+ "description": "Windows AutomationId when available.",
+ "type": "string"
+ },
+ "clear": {
+ "description": "Clear the current value before entering text; default true.",
+ "type": "boolean"
+ },
+ "id": {
+ "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
+ "type": "number"
+ },
+ "method": {
+ "description": "Text-entry strategy; auto is recommended.",
+ "enum": [
+ "auto",
+ "accessibility",
+ "clipboard",
+ "keys"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "description": "Accessible name/title substring.",
+ "type": "string"
+ },
+ "pid": {
+ "description": "Limit matching to one owning process id when available.",
+ "type": "number"
+ },
+ "role": {
+ "description": "Accessible role such as Button, Edit, textbox or AXButton.",
+ "type": "string"
+ },
+ "text": {
+ "description": "Replacement text for this semantic edit.",
+ "type": "string"
+ },
+ "window_title": {
+ "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "text"
+ ],
+ "type": "object"
+ },
+ "maxItems": 100,
+ "minItems": 1,
+ "type": "array"
+ },
+ "endpoint": {
+ "description": "Loopback Chrome DevTools endpoint for a browser fallback.",
+ "type": "string"
+ },
+ "from_id": {
+ "description": "Source semantic UI element id for action=drag.",
+ "type": "string"
+ },
+ "from_x": {
+ "description": "Drag source X coordinate.",
+ "type": "number"
+ },
+ "from_y": {
+ "description": "Drag source Y coordinate.",
+ "type": "number"
+ },
+ "hold_ms": {
+ "description": "Delay after pointer down before moving during action=drag.",
+ "type": "number"
+ },
+ "id": {
+ "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
+ "type": "number"
+ },
+ "name": {
+ "description": "Accessible name/title substring.",
+ "type": "string"
+ },
+ "ocr_language": {
+ "description": "Tesseract language code, default eng.",
+ "type": "string"
+ },
+ "ocr_psm": {
+ "description": "Tesseract page segmentation mode, default 11.",
+ "type": "number"
+ },
+ "ocr_region": {
+ "description": "Optional virtual-desktop [left,top,right,bottom] region to OCR. Prefer bounds from list_windows or computer_snapshot.",
+ "items": {
+ "type": "number"
+ },
+ "maxItems": 4,
+ "minItems": 4,
+ "type": "array"
+ },
+ "ocr_text": {
+ "description": "Visible text to find in rendered pixels for the OCR click fallback.",
+ "type": "string"
+ },
+ "ocr_timeout_ms": {
+ "description": "OCR timeout in milliseconds.",
+ "type": "number"
+ },
+ "option": {
+ "description": "Option value for browser select.",
+ "type": "string"
+ },
+ "pid": {
+ "description": "Limit matching to one owning process id when available.",
+ "type": "number"
+ },
+ "replace_selection": {
+ "description": "For multi_select, select the first item before adding the rest; default true.",
+ "type": "boolean"
+ },
+ "role": {
+ "description": "Accessible role such as Button, Edit, textbox or AXButton.",
+ "type": "string"
+ },
+ "selector": {
+ "description": "CSS selector when the fallback target is a browser element.",
+ "type": "string"
+ },
+ "target": {
+ "description": "Optional target type. auto prefers native accessibility, then browser DOM/CDP, then OCR/coordinates where supported. Use window for explicit top-level window focus/text/scroll targeting.",
+ "enum": [
+ "auto",
+ "ui",
+ "ui_element",
+ "browser",
+ "ocr",
+ "coordinates",
+ "window"
+ ],
+ "type": "string"
+ },
+ "target_id": {
+ "description": "Browser page target id returned by browser_tabs.",
+ "type": "string"
+ },
+ "targets": {
+ "description": "Native semantic targets for action=multi_select.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "app": {
+ "description": "Limit matching to an application/process name substring when available.",
+ "type": "string"
+ },
+ "automation_id": {
+ "description": "Windows AutomationId when available.",
+ "type": "string"
+ },
+ "id": {
+ "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
+ "type": "string"
+ },
+ "label": {
+ "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
+ "type": "number"
+ },
+ "name": {
+ "description": "Accessible name/title substring.",
+ "type": "string"
+ },
+ "pid": {
+ "description": "Limit matching to one owning process id when available.",
+ "type": "number"
+ },
+ "role": {
+ "description": "Accessible role such as Button, Edit, textbox or AXButton.",
+ "type": "string"
+ },
+ "window_title": {
+ "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "maxItems": 100,
+ "minItems": 1,
+ "type": "array"
+ },
+ "text": {
+ "description": "Unicode text to enter for action=type, or text used by multi_edit.",
+ "type": "string"
+ },
+ "title": {
+ "description": "Optional browser page title substring or top-level window title when target=window.",
+ "type": "string"
+ },
+ "to_id": {
+ "description": "Destination semantic UI element id for action=drag.",
+ "type": "string"
+ },
+ "to_x": {
+ "description": "Drag destination X coordinate.",
+ "type": "number"
+ },
+ "to_y": {
+ "description": "Drag destination Y coordinate.",
+ "type": "number"
+ },
+ "url_contains": {
+ "description": "Browser URL substring used to select a page.",
+ "type": "string"
+ },
+ "value": {
+ "description": "New value for set_value, set_range_value, or select.",
+ "type": "string"
+ },
+ "wheel_times": {
+ "description": "Number of 120-unit wheel steps for direction; 1..50.",
+ "type": "number"
+ },
+ "window_id": {
+ "description": "Top-level window id returned by list_windows when target=window.",
+ "type": "string"
+ },
+ "window_title": {
+ "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
+ "type": "string"
+ },
+ "x": {
+ "description": "Virtual-desktop X coordinate used by click/scroll coordinate targeting.",
+ "type": "number"
+ },
+ "y": {
+ "description": "Virtual-desktop Y coordinate used by click/scroll coordinate targeting.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "action"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "parameters"
+ ]
+ }
+ }
+]