{ "action_sequence": { "description": "Execute validated short gesture steps consecutively; stop at the first failure.", "inputSchema": { "$defs": { "ClickStep": { "additionalProperties": false, "properties": { "action": { "const": "click", "title": "Action", "type": "string" }, "target": { "anyOf": [ { "items": { "type": "integer" }, "maxItems": 2, "minItems": 2, "type": "array" }, { "maxLength": 512, "minLength": 1, "type": "string" } ], "description": "Prefer an exact observed resource_id: resolve its live bounds before tapping, refusing absent/ambiguous targets. Otherwise use [x,y] in coordinate_space; never mix screenshot pixels with normalized coordinates.", "title": "Target" }, "target_description": { "maxLength": 512, "minLength": 1, "title": "Target Description", "type": "string" }, "coordinate_space": { "default": "normalized", "enum": [ "normalized", "pixel" ], "title": "Coordinate Space", "type": "string" }, "times": { "default": 1, "description": "Consecutive taps within this ONE member, e.g. 10 for a scale +/- button; no model turns between taps.", "maximum": 10, "minimum": 1, "title": "Times", "type": "integer" }, "delay_ms": { "default": 100, "maximum": 1000, "minimum": 0, "title": "Delay Ms", "type": "integer" }, "unless_visible": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "description": "Exact previously observed resource_id inside a toggled panel (not the opener). Skip this opener click when that control is already visible; otherwise click. Avoid closing a still-open panel.", "title": "Unless Visible" } }, "required": [ "action", "target", "target_description" ], "title": "ClickStep", "type": "object" }, "ControlActionStep": { "additionalProperties": false, "properties": { "action": { "const": "control_action", "title": "Action", "type": "string" }, "request": { "$ref": "#/$defs/SequenceControlRequest" } }, "required": [ "action", "request" ], "title": "ControlActionStep", "type": "object" }, "ControlCondition": { "additionalProperties": false, "properties": { "state": { "enum": [ "checked", "unchecked", "selected", "unselected", "text", "content_desc", "value" ], "title": "State", "type": "string" }, "expected_text": { "anyOf": [ { "maxLength": 4096, "type": "string" }, { "type": "null" } ], "default": null, "title": "Expected Text" }, "expected_value": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "title": "Expected Value" }, "tolerance": { "default": 0, "minimum": 0, "title": "Tolerance", "type": "number" } }, "required": [ "state" ], "title": "ControlCondition", "type": "object" }, "ControlSelector": { "additionalProperties": false, "description": "Every supplied attribute is an exact AND match against a fresh native node.", "properties": { "resource_id": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Resource Id" }, "text": { "anyOf": [ { "maxLength": 4096, "type": "string" }, { "type": "null" } ], "default": null, "title": "Text" }, "content_desc": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Content Desc" }, "class_name": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Class Name" }, "package_name": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Package Name" }, "bounds": { "anyOf": [ { "items": { "type": "integer" }, "maxItems": 4, "minItems": 4, "type": "array" }, { "type": "null" } ], "default": null, "title": "Bounds" } }, "title": "ControlSelector", "type": "object" }, "DragCalibration": { "additionalProperties": false, "properties": { "axis": { "enum": [ "x", "y" ], "title": "Axis", "type": "string" }, "mode": { "description": "thumb moves a handle to a value; pan moves a scale under a fixed indicator.", "enum": [ "thumb", "pan" ], "title": "Mode", "type": "string" }, "anchors": { "items": { "$ref": "#/$defs/ScaleAnchor" }, "maxItems": 2, "minItems": 2, "title": "Anchors", "type": "array" }, "target_value": { "title": "Target Value", "type": "number" }, "indicator_position": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Required for pan: the fixed indicator's observed axis position.", "title": "Indicator Position" }, "tolerance": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Allowed value error. Reject a plan whose pixel rounding exceeds it; this is geometric error only, not proof of application precision.", "title": "Tolerance" }, "min_movement_px": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Previously measured minimum effective drag distance in pixels. If this calibrated move is smaller, refuse input and zoom first. Never guess a device-wide threshold.", "title": "Min Movement Px" } }, "required": [ "axis", "mode", "anchors", "target_value" ], "title": "DragCalibration", "type": "object" }, "DragStep": { "additionalProperties": false, "properties": { "start": { "items": { "type": "integer" }, "maxItems": 2, "minItems": 2, "title": "Start", "type": "array" }, "target_description": { "minLength": 1, "title": "Target Description", "type": "string" }, "end": { "anyOf": [ { "items": { "type": "integer" }, "maxItems": 2, "minItems": 2, "type": "array" }, { "type": "null" } ], "default": null, "description": "Exact endpoint; MUST be null when calibration is supplied.", "title": "End" }, "coordinate_space": { "default": "normalized", "enum": [ "normalized", "pixel" ], "title": "Coordinate Space", "type": "string" }, "duration_ms": { "default": 300, "maximum": 10000, "minimum": 1, "title": "Duration Ms", "type": "integer" }, "region": { "anyOf": [ { "items": { "type": "integer" }, "maxItems": 4, "minItems": 4, "type": "array" }, { "type": "null" } ], "default": null, "description": "Observed gesture surface rectangle in coordinate_space, excluding date/navigation rails and unrelated overlays.", "title": "Region" }, "calibration": { "anyOf": [ { "$ref": "#/$defs/DragCalibration" }, { "type": "null" } ], "default": null, "description": "Computes the endpoint from observed anchors; then set end=null." }, "require_visible": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "description": "Exact previously observed resource_id of a panel control. Check live visibility before dragging; refuse input if absent. Use for auto-hiding controls.", "title": "Require Visible" }, "action": { "const": "drag", "title": "Action", "type": "string" } }, "required": [ "start", "target_description", "action" ], "title": "DragStep", "type": "object" }, "EnsureVisibleStep": { "additionalProperties": false, "properties": { "action": { "const": "ensure_visible", "title": "Action", "type": "string" }, "target": { "description": "Panel control resource_id copied VERBATIM from observed elements, including the ':id/' separator. Never rewrite it as ':id:' or guess an ID.", "maxLength": 512, "minLength": 1, "title": "Target", "type": "string" }, "opener": { "description": "UI opener resource_id copied VERBATIM from observed elements, including ':id/' (not ':id:'). Tap ONCE only if target is absent; never use a business submission as an opener.", "maxLength": 512, "minLength": 1, "title": "Opener", "type": "string" }, "target_description": { "minLength": 1, "title": "Target Description", "type": "string" }, "timeout_ms": { "default": 1500, "description": "Bounded live-UI wait AFTER opening, without extra model turns or repeated opener taps.", "maximum": 3000, "minimum": 100, "title": "Timeout Ms", "type": "integer" } }, "required": [ "action", "target", "opener", "target_description" ], "title": "EnsureVisibleStep", "type": "object" }, "PinchStep": { "additionalProperties": false, "properties": { "center": { "items": { "type": "integer" }, "maxItems": 2, "minItems": 2, "title": "Center", "type": "array" }, "start_span": { "exclusiveMinimum": 0, "maximum": 20000, "title": "Start Span", "type": "integer" }, "end_span": { "exclusiveMinimum": 0, "maximum": 20000, "title": "End Span", "type": "integer" }, "angle_degrees": { "default": 0, "maximum": 360, "minimum": -360, "title": "Angle Degrees", "type": "number" }, "rotation_degrees": { "default": 0, "maximum": 360, "minimum": -360, "title": "Rotation Degrees", "type": "number" }, "duration_ms": { "default": 800, "maximum": 10000, "minimum": 1, "title": "Duration Ms", "type": "integer" }, "coordinate_space": { "default": "normalized", "enum": [ "normalized", "pixel" ], "title": "Coordinate Space", "type": "string" }, "target_description": { "maxLength": 512, "minLength": 1, "title": "Target Description", "type": "string" }, "require_visible": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Require Visible" }, "region": { "anyOf": [ { "items": { "type": "integer" }, "maxItems": 4, "minItems": 4, "type": "array" }, { "type": "null" } ], "default": null, "description": "Observed zoom surface bounds in coordinate_space; not the whole screen or date rail. Both fingers must remain inside.", "title": "Region" }, "action": { "const": "pinch", "title": "Action", "type": "string" } }, "required": [ "center", "start_span", "end_span", "target_description", "action" ], "title": "PinchStep", "type": "object" }, "ScaleAnchor": { "additionalProperties": false, "properties": { "position": { "description": "Observed axis coordinate in the selected coordinate space.", "title": "Position", "type": "number" }, "value": { "description": "Observed scale value, in one consistent numeric unit.", "title": "Value", "type": "number" } }, "required": [ "position", "value" ], "title": "ScaleAnchor", "type": "object" }, "SequenceControlRequest": { "additionalProperties": false, "properties": { "selector": { "$ref": "#/$defs/ControlSelector" }, "action": { "enum": [ "click", "long_click", "focus", "show_on_screen", "set_progress", "scroll_forward", "scroll_backward", "scroll_up", "scroll_down", "scroll_left", "scroll_right", "set_selection", "replace_selection", "set_text", "ime_enter" ], "title": "Action", "type": "string" }, "expected_token": { "anyOf": [ { "pattern": "^[a-f0-9]{64}$", "type": "string" }, { "type": "null" } ], "default": null, "title": "Expected Token" }, "value": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "title": "Value" }, "text": { "anyOf": [ { "maxLength": 1024, "type": "string" }, { "type": "null" } ], "default": null, "title": "Text" }, "selection_start": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null, "title": "Selection Start" }, "selection_end": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null, "title": "Selection End" }, "ensure_state": { "anyOf": [ { "$ref": "#/$defs/ControlCondition" }, { "type": "null" } ], "default": null, "description": "Desired observed state: skip an already satisfied action; otherwise write ONCE and verify by read-only polling. Never infer state from an icon or missing attributes." }, "verify_timeout_ms": { "default": 1500, "maximum": 3000, "minimum": 1, "title": "Verify Timeout Ms", "type": "integer" } }, "required": [ "selector", "action" ], "title": "SequenceControlRequest", "type": "object" }, "TouchFrame": { "additionalProperties": false, "properties": { "at_ms": { "maximum": 10000, "minimum": 0, "title": "At Ms", "type": "integer" }, "points": { "items": { "items": { "type": "integer" }, "maxItems": 2, "minItems": 2, "type": "array" }, "maxItems": 5, "minItems": 1, "title": "Points", "type": "array" } }, "required": [ "at_ms", "points" ], "title": "TouchFrame", "type": "object" }, "TouchGestureStep": { "additionalProperties": false, "properties": { "frames": { "items": { "$ref": "#/$defs/TouchFrame" }, "maxItems": 32, "minItems": 2, "title": "Frames", "type": "array" }, "coordinate_space": { "default": "normalized", "enum": [ "normalized", "pixel" ], "title": "Coordinate Space", "type": "string" }, "target_description": { "maxLength": 512, "minLength": 1, "title": "Target Description", "type": "string" }, "require_visible": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Require Visible" }, "region": { "anyOf": [ { "items": { "type": "integer" }, "maxItems": 4, "minItems": 4, "type": "array" }, { "type": "null" } ], "default": null, "description": "Observed gesture surface bounds in coordinate_space; every finger path must stay inside it.", "title": "Region" }, "action": { "const": "touch_gesture", "title": "Action", "type": "string" } }, "required": [ "frames", "target_description", "action" ], "title": "TouchGestureStep", "type": "object" }, "ValueFeedback": { "additionalProperties": false, "properties": { "selector": { "$ref": "#/$defs/ControlSelector", "description": "Unique, observed persistent value readout, not a transient drag tooltip. Copy its stable selector, excluding changing text." }, "value_format": { "description": "range reads native range.current; number requires an entire numeric text; clock requires exactly one HH:MM:SS in readable text and returns seconds since midnight.", "enum": [ "range", "number", "clock" ], "title": "Value Format", "type": "string" }, "target_value": { "title": "Target Value", "type": "number" }, "tolerance": { "minimum": 0, "title": "Tolerance", "type": "number" }, "stable_ms": { "default": 1000, "maximum": 5000, "minimum": 100, "title": "Stable Ms", "type": "integer" }, "timeout_ms": { "default": 3000, "maximum": 10000, "minimum": 200, "title": "Timeout Ms", "type": "integer" } }, "required": [ "selector", "value_format", "target_value", "tolerance" ], "title": "ValueFeedback", "type": "object" }, "WaitStep": { "additionalProperties": false, "properties": { "action": { "const": "wait", "title": "Action", "type": "string" }, "time_in_ms": { "maximum": 10000, "minimum": 0, "title": "Time In Ms", "type": "integer" } }, "required": [ "action", "time_in_ms" ], "title": "WaitStep", "type": "object" }, "WaitUntilStep": { "additionalProperties": false, "properties": { "selector": { "$ref": "#/$defs/ControlSelector" }, "state": { "enum": [ "visible", "absent", "enabled", "disabled", "checked", "unchecked", "selected", "unselected", "text", "content_desc", "value", "stable" ], "title": "State", "type": "string" }, "expected_text": { "anyOf": [ { "maxLength": 4096, "type": "string" }, { "type": "null" } ], "default": null, "title": "Expected Text" }, "expected_value": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "title": "Expected Value" }, "tolerance": { "default": 0, "minimum": 0, "title": "Tolerance", "type": "number" }, "stable_ms": { "default": 300, "maximum": 5000, "minimum": 0, "title": "Stable Ms", "type": "integer" }, "timeout_ms": { "default": 1500, "maximum": 3000, "minimum": 1, "title": "Timeout Ms", "type": "integer" }, "poll_interval_ms": { "default": 200, "maximum": 1000, "minimum": 50, "title": "Poll Interval Ms", "type": "integer" }, "action": { "const": "wait_until", "title": "Action", "type": "string" } }, "required": [ "selector", "state", "action" ], "title": "WaitUntilStep", "type": "object" } }, "properties": { "steps": { "items": { "anyOf": [ { "$ref": "#/$defs/ClickStep" }, { "$ref": "#/$defs/DragStep" }, { "$ref": "#/$defs/WaitStep" }, { "$ref": "#/$defs/EnsureVisibleStep" }, { "$ref": "#/$defs/PinchStep" }, { "$ref": "#/$defs/TouchGestureStep" }, { "$ref": "#/$defs/ControlActionStep" }, { "$ref": "#/$defs/WaitUntilStep" } ] }, "title": "Steps", "type": "array" }, "feedback": { "anyOf": [ { "$ref": "#/$defs/ValueFeedback" }, { "type": "null" } ], "default": null } }, "required": [ "steps" ], "title": "action_sequenceArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "drag": { "description": "Drag with exact coordinates or an observed two-anchor calibration.", "inputSchema": { "$defs": { "ControlSelector": { "additionalProperties": false, "description": "Every supplied attribute is an exact AND match against a fresh native node.", "properties": { "resource_id": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Resource Id" }, "text": { "anyOf": [ { "maxLength": 4096, "type": "string" }, { "type": "null" } ], "default": null, "title": "Text" }, "content_desc": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Content Desc" }, "class_name": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Class Name" }, "package_name": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Package Name" }, "bounds": { "anyOf": [ { "items": { "type": "integer" }, "maxItems": 4, "minItems": 4, "type": "array" }, { "type": "null" } ], "default": null, "title": "Bounds" } }, "title": "ControlSelector", "type": "object" }, "DragCalibration": { "additionalProperties": false, "properties": { "axis": { "enum": [ "x", "y" ], "title": "Axis", "type": "string" }, "mode": { "description": "thumb moves a handle to a value; pan moves a scale under a fixed indicator.", "enum": [ "thumb", "pan" ], "title": "Mode", "type": "string" }, "anchors": { "items": { "$ref": "#/$defs/ScaleAnchor" }, "maxItems": 2, "minItems": 2, "title": "Anchors", "type": "array" }, "target_value": { "title": "Target Value", "type": "number" }, "indicator_position": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "Required for pan: the fixed indicator's observed axis position.", "title": "Indicator Position" }, "tolerance": { "anyOf": [ { "minimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Allowed value error. Reject a plan whose pixel rounding exceeds it; this is geometric error only, not proof of application precision.", "title": "Tolerance" }, "min_movement_px": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Previously measured minimum effective drag distance in pixels. If this calibrated move is smaller, refuse input and zoom first. Never guess a device-wide threshold.", "title": "Min Movement Px" } }, "required": [ "axis", "mode", "anchors", "target_value" ], "title": "DragCalibration", "type": "object" }, "ScaleAnchor": { "additionalProperties": false, "properties": { "position": { "description": "Observed axis coordinate in the selected coordinate space.", "title": "Position", "type": "number" }, "value": { "description": "Observed scale value, in one consistent numeric unit.", "title": "Value", "type": "number" } }, "required": [ "position", "value" ], "title": "ScaleAnchor", "type": "object" }, "ValueFeedback": { "additionalProperties": false, "properties": { "selector": { "$ref": "#/$defs/ControlSelector", "description": "Unique, observed persistent value readout, not a transient drag tooltip. Copy its stable selector, excluding changing text." }, "value_format": { "description": "range reads native range.current; number requires an entire numeric text; clock requires exactly one HH:MM:SS in readable text and returns seconds since midnight.", "enum": [ "range", "number", "clock" ], "title": "Value Format", "type": "string" }, "target_value": { "title": "Target Value", "type": "number" }, "tolerance": { "minimum": 0, "title": "Tolerance", "type": "number" }, "stable_ms": { "default": 1000, "maximum": 5000, "minimum": 100, "title": "Stable Ms", "type": "integer" }, "timeout_ms": { "default": 3000, "maximum": 10000, "minimum": 200, "title": "Timeout Ms", "type": "integer" } }, "required": [ "selector", "value_format", "target_value", "tolerance" ], "title": "ValueFeedback", "type": "object" } }, "properties": { "start": { "items": { "type": "integer" }, "title": "Start", "type": "array" }, "target_description": { "title": "Target Description", "type": "string" }, "end": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "End" }, "coordinate_space": { "default": "normalized", "enum": [ "normalized", "pixel" ], "title": "Coordinate Space", "type": "string" }, "duration_ms": { "default": 300, "title": "Duration Ms", "type": "integer" }, "region": { "anyOf": [ { "items": { "type": "integer" }, "maxItems": 4, "minItems": 4, "type": "array" }, { "type": "null" } ], "default": null, "title": "Region" }, "feedback": { "anyOf": [ { "$ref": "#/$defs/ValueFeedback" }, { "type": "null" } ], "default": null }, "calibration": { "anyOf": [ { "$ref": "#/$defs/DragCalibration" }, { "type": "null" } ], "default": null }, "require_visible": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Require Visible" } }, "required": [ "start", "target_description" ], "title": "dragArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "click": { "description": "Tap at a 0-1000 normalized [x, y] coordinate.", "inputSchema": { "properties": { "target": { "items": { "type": "integer" }, "title": "Target", "type": "array" }, "times": { "default": 1, "title": "Times", "type": "integer" }, "delay_ms": { "default": 100, "title": "Delay Ms", "type": "integer" }, "expected_resource_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Expected Resource Id" } }, "required": [ "target" ], "title": "clickArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "click_sequence": { "description": "Tap a series of 0-1000 normalized [x, y] points in one atomic burst.", "inputSchema": { "properties": { "sequence": { "items": { "items": { "type": "integer" }, "type": "array" }, "title": "Sequence", "type": "array" }, "delay_ms": { "default": 50, "title": "Delay Ms", "type": "integer" } }, "required": [ "sequence" ], "title": "click_sequenceArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "long_press": { "description": "Long-press at a 0-1000 normalized [x, y] coordinate.", "inputSchema": { "properties": { "target": { "items": { "type": "integer" }, "title": "Target", "type": "array" }, "duration_ms": { "default": 1000, "title": "Duration Ms", "type": "integer" } }, "required": [ "target" ], "title": "long_pressArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "input_text": { "description": "Type text, optionally focusing a 0-1000 normalized [x, y] target first.", "inputSchema": { "properties": { "text": { "title": "Text", "type": "string" }, "target": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Target" }, "clear_exist": { "default": true, "title": "Clear Exist", "type": "boolean" } }, "required": [ "text" ], "title": "input_textArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "swipe": { "description": "Swipe between two 0-1000 normalized [x, y] points.", "inputSchema": { "properties": { "start": { "items": { "type": "integer" }, "title": "Start", "type": "array" }, "end": { "items": { "type": "integer" }, "title": "End", "type": "array" }, "duration_ms": { "default": 800, "title": "Duration Ms", "type": "integer" } }, "required": [ "start", "end" ], "title": "swipeArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "press_key": { "description": "Press a device key (home, back, enter, delete, tab, search, menu, app_switch).", "inputSchema": { "properties": { "key": { "title": "Key", "type": "string" } }, "required": [ "key" ], "title": "press_keyArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "manage_app": { "description": "Launch or stop an app by human-readable name or package.", "inputSchema": { "properties": { "action": { "title": "Action", "type": "string" }, "app_name": { "title": "App Name", "type": "string" } }, "required": [ "action", "app_name" ], "title": "manage_appArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "wait_for_delay": { "description": "Wait for a fixed number of milliseconds.", "inputSchema": { "properties": { "time_in_ms": { "title": "Time In Ms", "type": "integer" } }, "required": [ "time_in_ms" ], "title": "wait_for_delayArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "wait_for_text": { "description": "Wait for text to appear on or disappear from the screen.", "inputSchema": { "properties": { "text": { "title": "Text", "type": "string" }, "wait_state": { "default": "appear", "title": "Wait State", "type": "string" }, "timeout_ms": { "default": 5000, "title": "Timeout Ms", "type": "integer" } }, "required": [ "text" ], "title": "wait_for_textArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "open_link": { "description": "Open a URL on the device.", "inputSchema": { "properties": { "url": { "title": "Url", "type": "string" } }, "required": [ "url" ], "title": "open_linkArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "erase_one_char": { "description": "Erase a single character in the focused field.", "inputSchema": { "properties": {}, "title": "erase_one_charArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "focus_and_clear_text": { "description": "Focus the field at a 0-1000 normalized [x, y] and clear its text.", "inputSchema": { "properties": { "target": { "items": { "type": "integer" }, "title": "Target", "type": "array" } }, "required": [ "target" ], "title": "focus_and_clear_textArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "pinch": { "description": "[ACTION] Synchronized two-finger pinch/rotation on an observed canvas. center and spans use coordinate_space: pixel is current screenshot pixels; normalized is 0..1000, with spans measured against the SHORT screen edge to preserve angles. angle_degrees starts from the horizontal axis, positive clockwise; rotation_degrees adds rotation. All paths are validated before input; off-screen paths fail without clamping. The span ratio is a gesture instruction, not proof of the app's resulting scale. Small spans may stay below the app's recognition threshold; choose a sufficiently large safe span inside the observed canvas and read the actual post-action ticks/value before recalibrating a precise drag.", "inputSchema": { "properties": { "center": { "items": { "type": "integer" }, "maxItems": 2, "minItems": 2, "title": "Center", "type": "array" }, "start_span": { "exclusiveMinimum": 0, "maximum": 20000, "title": "Start Span", "type": "integer" }, "end_span": { "exclusiveMinimum": 0, "maximum": 20000, "title": "End Span", "type": "integer" }, "target_description": { "maxLength": 512, "minLength": 1, "title": "Target Description", "type": "string" }, "angle_degrees": { "default": 0, "maximum": 360, "minimum": -360, "title": "Angle Degrees", "type": "number" }, "rotation_degrees": { "default": 0, "maximum": 360, "minimum": -360, "title": "Rotation Degrees", "type": "number" }, "duration_ms": { "default": 800, "maximum": 10000, "minimum": 1, "title": "Duration Ms", "type": "integer" }, "coordinate_space": { "default": "normalized", "enum": [ "normalized", "pixel" ], "title": "Coordinate Space", "type": "string" }, "require_visible": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Require Visible" }, "region": { "anyOf": [ { "items": { "type": "integer" }, "maxItems": 4, "minItems": 4, "type": "array" }, { "type": "null" } ], "default": null, "title": "Region" } }, "required": [ "center", "start_span", "end_span", "target_description" ], "title": "pinchArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "touch_gesture": { "description": "[ACTION] Continuous synchronized native touch paths with 1..5 fingers. frames contain at_ms and points; times strictly increase from 0 to at most 10000ms, same finger count in every frame. Equal adjacent points hold contact; later points move WITHOUT lifting, enabling hold-then-drag and multi-segment gestures. Use 2..32 frames, observed geometry and explicit coordinate_space. All frames are validated before input. Completion reports Android gesture dispatch; verify that the app actually received the input and produced the intended effect.", "inputSchema": { "$defs": { "TouchFrame": { "additionalProperties": false, "properties": { "at_ms": { "maximum": 10000, "minimum": 0, "title": "At Ms", "type": "integer" }, "points": { "items": { "items": { "type": "integer" }, "maxItems": 2, "minItems": 2, "type": "array" }, "maxItems": 5, "minItems": 1, "title": "Points", "type": "array" } }, "required": [ "at_ms", "points" ], "title": "TouchFrame", "type": "object" } }, "properties": { "frames": { "items": { "$ref": "#/$defs/TouchFrame" }, "maxItems": 32, "minItems": 2, "title": "Frames", "type": "array" }, "target_description": { "maxLength": 512, "minLength": 1, "title": "Target Description", "type": "string" }, "coordinate_space": { "default": "normalized", "enum": [ "normalized", "pixel" ], "title": "Coordinate Space", "type": "string" }, "require_visible": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Require Visible" }, "region": { "anyOf": [ { "items": { "type": "integer" }, "maxItems": 4, "minItems": 4, "type": "array" }, { "type": "null" } ], "default": null, "title": "Region" } }, "required": [ "frames", "target_description" ], "title": "touch_gestureArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "read_control": { "description": "[OBSERVE] Read ONE live native control by exact AND selector copied from the current UI. Use resource_id/text/content_desc/class_name and optional package_name/bounds to disambiguate. Returns current range/value, supported native actions, editable selection (UTF-16 offsets), identity token and visible subtree content_signature. Missing or ambiguous controls fail explicitly. Custom canvas controls may expose no range/actions; then use calibrated gestures and visual verification.", "inputSchema": { "$defs": { "ControlSelector": { "additionalProperties": false, "description": "Every supplied attribute is an exact AND match against a fresh native node.", "properties": { "resource_id": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Resource Id" }, "text": { "anyOf": [ { "maxLength": 4096, "type": "string" }, { "type": "null" } ], "default": null, "title": "Text" }, "content_desc": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Content Desc" }, "class_name": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Class Name" }, "package_name": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Package Name" }, "bounds": { "anyOf": [ { "items": { "type": "integer" }, "maxItems": 4, "minItems": 4, "type": "array" }, { "type": "null" } ], "default": null, "title": "Bounds" } }, "title": "ControlSelector", "type": "object" } }, "properties": { "selector": { "$ref": "#/$defs/ControlSelector" } }, "required": [ "selector" ], "title": "read_controlArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "control_action": { "description": "[ACTION] Perform ONE supported native action on a freshly resolved unique control. Read_control first; copy selector exactly and optionally expected_token to reject stale evidence. For a desired state use ensure_state (checked/selected/text/content_desc/value), then verify_timeout_ms: skip an already satisfied state, otherwise write ONCE and poll read-only. Copy observed state semantics; do not assume selected means paused. Bind a stable selector excluding text/content_desc that the action changes. A failed postcondition does not undo the completed input and must not cause an automatic second toggle. action=set_progress requires a finite in-range value; set_selection requires selection_start/end in UTF-16 code units (never split an emoji). set_text and replace_selection require text, including empty text; whitespace is preserved. Other actions take no text/value/selection. ime_enter invokes the advertised IME submit action. Unsupported actions fail without coordinate fallback or replay. Focus or selection changes may move the target; before subsequent edits, use wait_until state=stable when needed. STALE means no action started; observe again before rebuilding the request. Never resend an unknown write. An accepted action is not business verification; inspect the returned/current state.", "inputSchema": { "$defs": { "ControlCondition": { "additionalProperties": false, "properties": { "state": { "enum": [ "checked", "unchecked", "selected", "unselected", "text", "content_desc", "value" ], "title": "State", "type": "string" }, "expected_text": { "anyOf": [ { "maxLength": 4096, "type": "string" }, { "type": "null" } ], "default": null, "title": "Expected Text" }, "expected_value": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "title": "Expected Value" }, "tolerance": { "default": 0, "minimum": 0, "title": "Tolerance", "type": "number" } }, "required": [ "state" ], "title": "ControlCondition", "type": "object" }, "ControlSelector": { "additionalProperties": false, "description": "Every supplied attribute is an exact AND match against a fresh native node.", "properties": { "resource_id": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Resource Id" }, "text": { "anyOf": [ { "maxLength": 4096, "type": "string" }, { "type": "null" } ], "default": null, "title": "Text" }, "content_desc": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Content Desc" }, "class_name": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Class Name" }, "package_name": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Package Name" }, "bounds": { "anyOf": [ { "items": { "type": "integer" }, "maxItems": 4, "minItems": 4, "type": "array" }, { "type": "null" } ], "default": null, "title": "Bounds" } }, "title": "ControlSelector", "type": "object" } }, "properties": { "selector": { "$ref": "#/$defs/ControlSelector" }, "action": { "enum": [ "click", "long_click", "focus", "show_on_screen", "set_progress", "scroll_forward", "scroll_backward", "scroll_up", "scroll_down", "scroll_left", "scroll_right", "set_selection", "replace_selection", "set_text", "ime_enter" ], "title": "Action", "type": "string" }, "expected_token": { "anyOf": [ { "pattern": "^[a-f0-9]{64}$", "type": "string" }, { "type": "null" } ], "default": null, "title": "Expected Token" }, "value": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "title": "Value" }, "text": { "anyOf": [ { "maxLength": 65536, "type": "string" }, { "type": "null" } ], "default": null, "title": "Text" }, "selection_start": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null, "title": "Selection Start" }, "selection_end": { "anyOf": [ { "minimum": 0, "type": "integer" }, { "type": "null" } ], "default": null, "title": "Selection End" }, "ensure_state": { "anyOf": [ { "$ref": "#/$defs/ControlCondition" }, { "type": "null" } ], "default": null }, "verify_timeout_ms": { "default": 1500, "maximum": 3000, "minimum": 1, "title": "Verify Timeout Ms", "type": "integer" } }, "required": [ "selector", "action" ], "title": "control_actionArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "wait_until": { "description": "[OBSERVE] Bounded polling of a unique live native control, replacing blind delays. state=text requires exact expected_text; value requires expected_value and optional tolerance. stable requires at least two unchanged native observations for stable_ms, not pixel stability. Other states inspect visible/enabled/checked/selected or absence. Ambiguity, unavailable page or transport failure never counts as absence. timeout_ms is at most 30000; no input is dispatched.", "inputSchema": { "$defs": { "ControlSelector": { "additionalProperties": false, "description": "Every supplied attribute is an exact AND match against a fresh native node.", "properties": { "resource_id": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Resource Id" }, "text": { "anyOf": [ { "maxLength": 4096, "type": "string" }, { "type": "null" } ], "default": null, "title": "Text" }, "content_desc": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Content Desc" }, "class_name": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Class Name" }, "package_name": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Package Name" }, "bounds": { "anyOf": [ { "items": { "type": "integer" }, "maxItems": 4, "minItems": 4, "type": "array" }, { "type": "null" } ], "default": null, "title": "Bounds" } }, "title": "ControlSelector", "type": "object" } }, "properties": { "selector": { "$ref": "#/$defs/ControlSelector" }, "state": { "enum": [ "visible", "absent", "enabled", "disabled", "checked", "unchecked", "selected", "unselected", "text", "content_desc", "value", "stable" ], "title": "State", "type": "string" }, "expected_text": { "anyOf": [ { "maxLength": 4096, "type": "string" }, { "type": "null" } ], "default": null, "title": "Expected Text" }, "expected_value": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "title": "Expected Value" }, "tolerance": { "default": 0, "minimum": 0, "title": "Tolerance", "type": "number" }, "stable_ms": { "default": 300, "maximum": 5000, "minimum": 0, "title": "Stable Ms", "type": "integer" }, "timeout_ms": { "default": 5000, "maximum": 30000, "minimum": 1, "title": "Timeout Ms", "type": "integer" }, "poll_interval_ms": { "default": 200, "maximum": 1000, "minimum": 50, "title": "Poll Interval Ms", "type": "integer" } }, "required": [ "selector", "state" ], "title": "wait_untilArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "scroll_to": { "description": "[ACTION] Bounded native scrolling INSIDE a uniquely observed container until its scoped target becomes visible. Copy exact container and target selectors; direction is forward/backward/up/down/left/right. After each scroll, container content and the scoped target's visibility/identity must remain unchanged for settle_ms before success or another scroll. Stops at max_scrolls, timeout, unsupported action or no content progress. Retains every scroll receipt and never repeats unacknowledged input. Finding a target does not click it or verify a business outcome.", "inputSchema": { "$defs": { "ControlSelector": { "additionalProperties": false, "description": "Every supplied attribute is an exact AND match against a fresh native node.", "properties": { "resource_id": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Resource Id" }, "text": { "anyOf": [ { "maxLength": 4096, "type": "string" }, { "type": "null" } ], "default": null, "title": "Text" }, "content_desc": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Content Desc" }, "class_name": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Class Name" }, "package_name": { "anyOf": [ { "maxLength": 512, "minLength": 1, "type": "string" }, { "type": "null" } ], "default": null, "title": "Package Name" }, "bounds": { "anyOf": [ { "items": { "type": "integer" }, "maxItems": 4, "minItems": 4, "type": "array" }, { "type": "null" } ], "default": null, "title": "Bounds" } }, "title": "ControlSelector", "type": "object" } }, "properties": { "container": { "$ref": "#/$defs/ControlSelector" }, "target": { "$ref": "#/$defs/ControlSelector" }, "direction": { "default": "forward", "enum": [ "forward", "backward", "up", "down", "left", "right" ], "title": "Direction", "type": "string" }, "max_scrolls": { "default": 10, "maximum": 20, "minimum": 1, "title": "Max Scrolls", "type": "integer" }, "timeout_ms": { "default": 10000, "maximum": 30000, "minimum": 1, "title": "Timeout Ms", "type": "integer" }, "settle_ms": { "default": 300, "maximum": 3000, "minimum": 50, "title": "Settle Ms", "type": "integer" } }, "required": [ "container", "target" ], "title": "scroll_toArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Outcome of one device action, independent of any transport or agent.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode" }, "action": { "title": "Action", "type": "string" }, "message": { "title": "Message", "type": "string" }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Detail" }, "normalized_coordinates": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Normalized Coordinates" }, "duration_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Duration Ms" }, "metadata": { "additionalProperties": true, "title": "Metadata", "type": "object" } }, "required": [ "ok", "code", "action", "message" ], "title": "ActionResult", "type": "object" } }, "observe_screen": { "description": "Capture and index the current screen (adapter-internal).", "inputSchema": { "properties": { "settle_ms": { "default": 400, "title": "Settle Ms", "type": "integer" }, "include_image": { "default": false, "title": "Include Image", "type": "boolean" } }, "title": "observe_screenArguments", "type": "object" }, "outputSchema": { "$defs": { "ActionCode": { "description": "Machine-readable outcome classification for a device action.", "enum": [ "OK", "INVALID_ARGS", "TARGET_NOT_FOUND", "DEVICE_ERROR", "PACKAGE_NOT_FOUND", "TIMEOUT", "UNSUPPORTED" ], "title": "ActionCode", "type": "string" } }, "description": "Post-action observation: persisted screenshot plus the parsed element list.", "properties": { "ok": { "title": "Ok", "type": "boolean" }, "code": { "$ref": "#/$defs/ActionCode", "default": "OK" }, "message": { "default": "", "title": "Message", "type": "string" }, "screenshot_path": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Screenshot Path" }, "image_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Image Name" }, "width": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Width" }, "height": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Height" }, "elements_text": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Elements Text" }, "elements": { "items": { "additionalProperties": true, "type": "object" }, "title": "Elements", "type": "array" }, "hierarchy_ok": { "default": true, "title": "Hierarchy Ok", "type": "boolean" } }, "required": [ "ok" ], "title": "ObserveResult", "type": "object" } }, "take_screenshot": { "description": "Return the current screen as base64 (adapter-internal, no persistence).", "inputSchema": { "properties": { "timeout_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Timeout Ms" } }, "title": "take_screenshotArguments", "type": "object" }, "outputSchema": null }, "get_ui_hierarchy": { "description": "Return the raw UI element hierarchy (adapter-internal).", "inputSchema": { "properties": { "timeout_ms": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Timeout Ms" } }, "title": "get_ui_hierarchyArguments", "type": "object" }, "outputSchema": null } }