{"ok":true,"site":{"host":"ui.duz52.com","url":"https://ui.duz52.com/","type":"live","desc":"Duz UI","tools":[{"name":"ui_list","kind":"answer","impl":"imperative","description":"List the agent-operable UI elements on the page. Call it first: it gives each element's id, state, and the tools that act on it — pass that id as target, except an action_<id> tool, which names its element. Pass target to list an element's children — the recovery when one reports childrenOmitted. A cut listing, or any you window with offset or limit, reports window — walk by advancing offset by window.returned. A listed state is current; ui_read gives detail the digest omits.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"An element id: given, the tool lists that element's children instead of the whole page. Use it on an element that reports childrenOmitted."},"offset":{"type":"integer","minimum":0,"description":"Index of the first element to return. Defaults to 0."},"limit":{"type":"integer","minimum":1,"description":"How many elements to return. Defaults to as many as fit."}},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/components","/docs","/playground","/demo"]},{"name":"ui_read","kind":"answer","impl":"imperative","description":"Read the current semantic state of one UI element by id; use ui_list first for valid ids. Actions already return the element's post-change state, so this is for detail an action result windowed away and for elements you did not just act on. Pass offset or limit and the reply always reports window — field, offset, returned, true total — so returned equal to total means that is every entry the element holds. The budget windows a long list unasked. Walk by advancing offset by window.returned.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."},"offset":{"type":"integer","minimum":0,"description":"Index of the first entry to return from this element's largest list. Defaults to 0."},"limit":{"type":"integer","minimum":1,"description":"How many entries of that list to return. Defaults to as many as fit; the output budget may clamp it, and window.returned reports what actually returned."}},"required":["target"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/components","/docs","/playground","/demo"]},{"name":"button_press","kind":"act","impl":"imperative","description":"Press a button, exactly as a person clicking it would. The button's own name — the text a person reads on it, like \"Send Invitation\" — is its label in ui_list. Pressing may submit a form, open a dialog, navigate, or trigger whatever the button is wired to. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."}},"required":["target"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/components","/docs","/playground","/demo"]},{"name":"dialog_open","kind":"act","impl":"imperative","description":"Open a dialog element. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."}},"required":["target"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/components","/docs","/playground","/demo"]},{"name":"dialog_close","kind":"act","impl":"imperative","description":"Close a dialog element. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."}},"required":["target"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/components","/docs","/playground","/demo"]},{"name":"ui_fill","kind":"act","impl":"imperative","description":"Fill several elements in one call — a form's fields, say. values maps an element id to its new value: a string for an input, select or tabs, a boolean for a checkbox, an array for a multi-select. Fillable kinds: tabs, select, multi-select, checkbox, input, slider, date. Each value travels through that element's own action, so the page reacts as it does to that tool. Every id is checked first, so one bad id changes nothing. Submitting is a separate press.","inputSchema":{"type":"object","properties":{"values":{"type":"object","description":"An object mapping element ids to their new values. Call ui_list for valid ids and kinds.","additionalProperties":true}},"required":["values"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground","/demo"]},{"name":"tabs_select","kind":"act","impl":"imperative","description":"Switch the active tab of a tabs element to the given value. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."},"value":{"type":"string","description":"The tab value to activate. Call ui_read on the target to see available values."}},"required":["target","value"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground"]},{"name":"select_choose","kind":"act","impl":"imperative","description":"Choose a value on a select or combobox element. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."},"value":{"type":"string","description":"The value to choose. Call ui_read on the target to see available values."}},"required":["target","value"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground","/demo"]},{"name":"select_clear","kind":"act","impl":"imperative","description":"Clear the selection on a select or combobox element. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."}},"required":["target"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground","/demo"]},{"name":"multi_select_set","kind":"act","impl":"imperative","description":"Set the selected values of a multi-select element, replacing the previous selection. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."},"values":{"type":"array","items":{"type":"string"},"description":"The values to select, replacing any previous selection. Pass an empty array to clear the selection. Call ui_read on the target to see available options."}},"required":["target","values"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground"]},{"name":"checkbox_set","kind":"act","impl":"imperative","description":"Set the checked state of a checkbox or switch. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."},"checked":{"type":"boolean","description":"Whether the checkbox should be checked."}},"required":["target","checked"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground"]},{"name":"disclosure_open","kind":"act","impl":"imperative","description":"Open a collapsible or popover element. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."}},"required":["target"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground"]},{"name":"disclosure_close","kind":"act","impl":"imperative","description":"Close a collapsible or popover element. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."}},"required":["target"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground"]},{"name":"disclosure_toggle","kind":"act","impl":"imperative","description":"Toggle the open state of a collapsible or popover element. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."}},"required":["target"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground"]},{"name":"input_set_value","kind":"act","impl":"imperative","description":"Set the value of a text input or textarea. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."},"value":{"type":"string","description":"The new value for the input."}},"required":["target","value"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground","/demo"]},{"name":"input_clear","kind":"act","impl":"imperative","description":"Clear the value of a text input or textarea. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."}},"required":["target"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground","/demo"]},{"name":"table_filter","kind":"act","impl":"imperative","description":"Apply a column filter to a data table. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."},"column":{"type":"string","description":"The column id to filter. Call ui_read on the target to see column ids."},"value":{"type":"string","description":"The filter value to apply. Pass an empty string to clear the filter."}},"required":["target","column","value"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground","/demo"]},{"name":"table_sort","kind":"act","impl":"imperative","description":"Sort a data table by a column in the given direction. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."},"column":{"type":"string","description":"The column id to sort by. Call ui_read on the target to see column ids."},"direction":{"type":"string","enum":["asc","desc"],"description":"Sort direction: \"asc\" or \"desc\"."}},"required":["target","column","direction"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground","/demo"]},{"name":"table_select_rows","kind":"act","impl":"imperative","description":"Select rows in a data table by id. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."},"rowIds":{"type":"array","items":{"type":"string"},"description":"The row ids to select. Call ui_read on the target to see row ids."}},"required":["target","rowIds"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground","/demo"]},{"name":"table_select_all_rows","kind":"act","impl":"imperative","description":"Select or deselect every row the table's current filter matches — the same gesture as pressing the table's select-all checkbox, and it leaves rows the filter excludes untouched. Use it instead of listing every id: filter first, then select all of what is left. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."},"selected":{"type":"boolean","description":"true selects every matching row, false deselects them."}},"required":["target","selected"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground","/demo"]},{"name":"table_set_page","kind":"act","impl":"imperative","description":"Navigate a paginated data table to a page number. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."},"page":{"type":"integer","minimum":1,"description":"The 1-based page index to navigate to."}},"required":["target","page"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground","/demo"]},{"name":"table_set_column_visibility","kind":"act","impl":"imperative","description":"Show or hide a column in a data table. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."},"column":{"type":"string","description":"The column id to show or hide. Call ui_read on the target to see column ids."},"visible":{"type":"boolean","description":"True to show the column, false to hide it."}},"required":["target","column","visible"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground","/demo"]},{"name":"accordion_expand","kind":"act","impl":"imperative","description":"Expand a section of an accordion by its value. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."},"value":{"type":"string","description":"The section value to expand. Call ui_read on the target to see available sections."}},"required":["target","value"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground"]},{"name":"accordion_collapse","kind":"act","impl":"imperative","description":"Collapse a section of an accordion by its value. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."},"value":{"type":"string","description":"The section value to collapse. Call ui_read on the target to see available sections."}},"required":["target","value"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground"]},{"name":"slider_set","kind":"act","impl":"imperative","description":"Set the value of a slider. There is one number per thumb; most sliders have exactly one. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."},"value":{"type":"array","items":{"type":"number"},"description":"The new values for each thumb. There is one number per thumb; most sliders have exactly one. Call ui_read on the target to see the current value, min, max and step."}},"required":["target","value"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground"]},{"name":"date_set","kind":"act","impl":"imperative","description":"Set the selected date or dates of a calendar element, replacing the previous selection. Call ui_read on the target to see its mode, bounds and whether a selection is required. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{"target":{"type":"string","description":"The id of the UI element to act on, as returned by ui_list."},"value":{"type":"array","items":{"type":"string"},"description":"Dates as YYYY-MM-DD strings, replacing the selection. Length must match the mode: single 0-1, multiple any, range exactly 2 (start, end). A calendar whose read state has required=true refuses an empty array."}},"required":["target","value"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground"]},{"name":"action_pg-action","kind":"act","impl":"imperative","description":"Clear the playground contact form. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/playground","pages":["/playground"]},{"name":"action_refresh-orders","kind":"act","impl":"imperative","description":"Refresh the orders list and clear all filters. The result carries the element's full state after the change, so a follow-up ui_read on the same element is unnecessary; when the result reports window, walk the rest with ui_read by advancing offset by window.returned.","inputSchema":{"type":"object","properties":{},"required":[],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/demo","pages":["/demo"]}],"category":"Developer Tools","apiSurface":"spec","toolCount":28}}