[ { "type": "function", "function": { "name": "click", "description": "Left-click.", "parameters": { "type": "object", "properties": { "x": { "type": "number", "minimum": 0, "maximum": 1000, "description": "Normalized 0-1000 screenshot coordinate." }, "y": { "type": "number", "minimum": 0, "maximum": 1000, "description": "Normalized 0-1000 screenshot coordinate." } }, "required": [ "x", "y" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "double_click", "description": "Double-click.", "parameters": { "type": "object", "properties": { "x": { "type": "number", "minimum": 0, "maximum": 1000, "description": "Normalized 0-1000 screenshot coordinate." }, "y": { "type": "number", "minimum": 0, "maximum": 1000, "description": "Normalized 0-1000 screenshot coordinate." } }, "required": [ "x", "y" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "right_click", "description": "Right-click.", "parameters": { "type": "object", "properties": { "x": { "type": "number", "minimum": 0, "maximum": 1000, "description": "Normalized 0-1000 screenshot coordinate." }, "y": { "type": "number", "minimum": 0, "maximum": 1000, "description": "Normalized 0-1000 screenshot coordinate." } }, "required": [ "x", "y" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "type", "description": "Type literal text into the input that currently has focus. It takes no coordinates: click (or focus) the target input first, then type. To replace existing text, use click → clear → type.", "parameters": { "type": "object", "properties": { "text": { "type": "string" } }, "required": [ "text" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "hotkey", "description": "Press one key, or a key combination held down together, on the currently focused page/element. Pass the keys in order as a list: modifiers first, then the main key (e.g. [\"Control\", \"a\"]). Key names are case-sensitive and use these exact spellings (modifiers Control, Shift, Alt, Meta; named keys such as Enter, Escape, Tab, Backspace, Space, ArrowUp, ArrowDown, ArrowLeft, ArrowRight, Home, End, PageUp, PageDown, F1-F12; letters and digits in lowercase, e.g. a, 0, -). Keys and when to use them: Enter - submit a focused search box or form, or confirm a selection (use after type). Control+a - select all text in the focused input (e.g. before Backspace or before typing replacement text). Control+c - copy the current selection. Control+v - paste the clipboard into the focused input. Backspace - delete the character before the cursor, or the selected text. Tab / Shift+Tab - move focus to the next / previous element. Escape - close a popup, dialog, dropdown or autocomplete list. ArrowDown / ArrowUp - move through dropdown or autocomplete options, or scroll a little. ArrowLeft / ArrowRight - move the cursor in a text input, or switch slides/carousel items. Home / End - jump to the top / bottom of the page (or start / end of the input line). Control+Home / Control+End - jump to the very top / bottom of the page or document. PageDown / PageUp - scroll down / up by one screen. Space - toggle a focused checkbox/button, or scroll down. Control+f - open find-in-page. F3 - find the next match in find-in-page. Control+l / Alt+d / F6 - focus the address bar (prefer goto(url) to open a URL). Control+r / F5 - reload the current page. Control+Shift+r - hard reload the current page, ignoring the cache. Alt+ArrowLeft - go back in browser history (same as go_back). Alt+Home - open the browser home page. Control+t - open a new tab (prefer new_tab). Control+w - close the current tab (prefer close_tab). Control+n - open a new browser window. Control+Tab - switch to the next tab (prefer switch_tab). Control+1 ... Control+8 - switch to the tab at that position (prefer switch_tab). Control+- / Control+0 - zoom the page out / reset the zoom. F11 - toggle full-screen view. Control+h - open the browser history page. Control+j - open the browser downloads page. Control+d - bookmark the current page. Control+p - open the print dialog. Control+u - view the page source. F12 / Control+Shift+i / Control+Shift+j / Control+Shift+c - open the browser developer tools (console / element picker). Alt / Meta / Meta+r / Control+Escape / Alt+Tab / Control+Alt+t - operating-system or browser-menu keys (open the menu bar or start menu, run dialog, switch windows, open a terminal); they usually do not help with a web task. j / k / w - single-letter shortcuts that some websites define (for example next / previous item). Do not use hotkey to type text; use type for that. Clicking an input first gives it focus.", "parameters": { "type": "object", "properties": { "keys": { "type": "array", "items": { "type": "string" }, "minItems": 1, "description": "Keys pressed together, modifiers first. Examples: [\"Enter\"], [\"Control\", \"a\"], [\"Escape\"], [\"ArrowDown\"], [\"Control\", \"r\"]." } }, "required": [ "keys" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "scroll", "description": "Scroll by signed pixel deltas.", "parameters": { "type": "object", "properties": { "scroll_dy": { "type": "number", "description": "Signed pixel delta, not a normalized coordinate." }, "scroll_dx": { "type": "number", "description": "Signed pixel delta, not a normalized coordinate." } }, "required": [ "scroll_dy" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "wait", "description": "Wait for the specified duration.", "parameters": { "type": "object", "properties": { "seconds": { "type": "number", "minimum": 0 } }, "required": [ "seconds" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "finished", "description": "Finish the task, optionally returning an answer.", "parameters": { "type": "object", "properties": { "answer": { "type": "string" } }, "required": [], "additionalProperties": false } } }, { "type": "function", "function": { "name": "fail", "description": "Terminate because the task cannot be completed.", "parameters": { "type": "object", "properties": {}, "required": [], "additionalProperties": false } } }, { "type": "function", "function": { "name": "unknown", "description": "Signal that a reliable action cannot be determined.", "parameters": { "type": "object", "properties": {}, "required": [], "additionalProperties": false } } }, { "type": "function", "function": { "name": "go_back", "description": "Go back in browser history.", "parameters": { "type": "object", "properties": {}, "required": [], "additionalProperties": false } } }, { "type": "function", "function": { "name": "go_forward", "description": "Go forward in browser history.", "parameters": { "type": "object", "properties": {}, "required": [], "additionalProperties": false } } }, { "type": "function", "function": { "name": "goto", "description": "Navigate to a URL.", "parameters": { "type": "object", "properties": { "url": { "type": "string" } }, "required": [ "url" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "hover", "description": "Move the pointer without clicking.", "parameters": { "type": "object", "properties": { "x": { "type": "number", "minimum": 0, "maximum": 1000, "description": "Normalized 0-1000 screenshot coordinate." }, "y": { "type": "number", "minimum": 0, "maximum": 1000, "description": "Normalized 0-1000 screenshot coordinate." } }, "required": [ "x", "y" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "drag", "description": "Drag from (x,y) to (x2,y2).", "parameters": { "type": "object", "properties": { "x": { "type": "number", "minimum": 0, "maximum": 1000, "description": "Normalized 0-1000 screenshot coordinate." }, "y": { "type": "number", "minimum": 0, "maximum": 1000, "description": "Normalized 0-1000 screenshot coordinate." }, "x2": { "type": "number", "minimum": 0, "maximum": 1000, "description": "Normalized 0-1000 screenshot coordinate." }, "y2": { "type": "number", "minimum": 0, "maximum": 1000, "description": "Normalized 0-1000 screenshot coordinate." } }, "required": [ "x", "y", "x2", "y2" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "upload", "description": "Upload a local file to the web page. Use it right after the page has opened a file picker (e.g. after clicking a button such as 'Upload', 'Choose file', or '컴퓨터에서 선택'); the file is attached to that picker. Use only a file name or path that the user gave in the request — never invent one. If no file picker is open yet, click the page's upload button first.", "parameters": { "type": "object", "properties": { "path": { "type": "string", "description": "File name or path exactly as given by the user, e.g. \"puppy.jpg\"." } }, "required": [ "path" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "focus", "description": "Focus the element at the coordinates.", "parameters": { "type": "object", "properties": { "x": { "type": "number", "minimum": 0, "maximum": 1000, "description": "Normalized 0-1000 screenshot coordinate." }, "y": { "type": "number", "minimum": 0, "maximum": 1000, "description": "Normalized 0-1000 screenshot coordinate." } }, "required": [ "x", "y" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "clear", "description": "Clear all text in the currently focused input. Give the input focus first (click or focus on it), then clear, then type.", "parameters": { "type": "object", "properties": {}, "required": [], "additionalProperties": false } } }, { "type": "function", "function": { "name": "EXIT", "description": "Explicit final termination.", "parameters": { "type": "object", "properties": {}, "required": [], "additionalProperties": false } } }, { "type": "function", "function": { "name": "new_tab", "description": "Open a new blank browser tab.", "parameters": { "type": "object", "properties": {}, "required": [], "additionalProperties": false } } }, { "type": "function", "function": { "name": "switch_tab", "description": "Switch to the browser tab at the given 0-based index (see Available tabs in the observation).", "parameters": { "type": "object", "properties": { "index": { "type": "integer", "minimum": 0, "description": "0-based tab index." } }, "required": [ "index" ], "additionalProperties": false } } }, { "type": "function", "function": { "name": "close_tab", "description": "Close the current browser tab.", "parameters": { "type": "object", "properties": {}, "required": [], "additionalProperties": false } } } ]