01Safety
0.0 / 30
What changed in the harness
Selection accuracy 91→98, token cost up 17%, unconfirmed writes 0%→0%.
Category breakdown
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
0.0 / 30
20.2 / 30
19.8 / 20
11.2 / 20
Highest-impact fix
Estimated gain +30 pointsExpose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.
Description evidence
18 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.
| Tool | Defect types | Suggested rewrite |
|---|---|---|
zen_list_pages |
name_restates_behavior no_return_description |
List all open pages/tabs in Zen Browser and return an array of objects, each containing the tab's title and URL, so you can identify which tab to target via zen_select_page. |
zen_select_page |
no_return_description |
Select the page/tab at the given index, using the ordering from zen_list_pages, to make it the active target for subsequent navigation and interaction; resolves once the tab is selected. |
zen_new_tab |
no_return_description |
Open a new tab in Zen Browser, optionally navigating it to the given URL, or opening a blank page if no URL is provided; returns once the tab is created. |
zen_navigate |
no_return_description |
Navigate the active page to the given URL and wait for navigation to complete; returns when the page has finished loading. |
zen_snapshot |
no_return_description |
Return a structured snapshot of the visible page elements with their CSS selectors, optionally scoped to a CSS selector and filtered to all, interactive, or form elements, so you can identify targets for clicks and fills; resolves with the snapshot. |
zen_screenshot |
no_return_description |
Take a screenshot of the current page and return the captured image so you can inspect the page visually. |
zen_click |
params_unexplained no_return_description |
Click the element matched by the given CSS selector (for example, a selector from zen_snapshot) and return once the click is applied. |
zen_fill |
no_return_description |
Fill the text input or textarea matching the given CSS selector with the specified value, clearing existing content first and dispatching input/change events for framework compatibility; returns when the value has been set. |
zen_select_option |
no_return_description |
Select an option in the select dropdown matching the given CSS selector by its value or visible text, and return once the selection is applied. |
zen_check |
params_unexplained no_return_description |
Check or uncheck the checkbox, or select the radio button, matched by the given CSS selector, using the checked flag (true=check, false=uncheck, default true); returns when the change is applied. |
zen_get_form_fields |
no_return_description |
Return a list of all form fields on the page, each with its name, type, label, current value, and CSS selector, so you can plan subsequent fill actions. |
zen_fill_form |
params_unexplained no_return_description |
Fill multiple form fields in a single call; each entry in the fields array gives the CSS selector, the value to set, and the action to perform (fill, select, check, uncheck, or click); returns once every field has been processed. |
zen_scroll |
params_unexplained no_return_description |
Scroll the page in the given direction (up, down, top, or bottom) or by a pixel amount, or scroll the element matched by the optional CSS selector into view; returns when the scrolling completes. |
zen_wait |
no_return_description |
Pause execution for the given number of milliseconds (default 1000), to let the page settle before the next action; resolves after the wait elapses. |
zen_get_page_text |
name_restates_behavior no_return_description |
Return the current page's title, URL, and visible text content, truncated to the given maxLength characters (default 8000), to quickly understand what is on the page before choosing further actions. |
zen_close_tab |
no_return_description |
Close the tab at the given index, using the ordering from zen_list_pages; this cannot close the last remaining tab. Returns when the tab is closed. |
zen_press_key |
no_return_description |
Send a single key press to the active page using BiDi input.performActions, supporting special keys such as 'Enter', 'Tab', 'Escape', 'Backspace', and 'ArrowDown', optionally with modifier keys (ctrl, shift, alt, meta); returns after the key is sent. For typing text, use zen_fill instead. |
zen_reconnect |
name_restates_behavior no_return_description |
Force disconnect and reconnect to Zen Browser, to be used when the connection is in a bad state or after restarting Zen; returns once the new connection has been established. |
Selection evidence
6 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
zen_wait |
zen_wait_for |
high | Both are waiting tools with near-identical names; a task like 'wait for the page to load' or 'wait for the button to appear' could select the timed zen_wait instead of the conditional zen_wait_for since neither description says the other exists. |
zen_fill |
zen_fill_form |
medium | A task like 'fill in the form on the page' is ambiguous between filling one field via zen_fill and filling multiple fields via zen_fill_form; the plural/singular distinction is easy to miss. |
zen_snapshot |
zen_screenshot |
high | Names differ by one character and both 'capture' the current page; a task like 'get a snapshot of the page' could pick screenshot, while 'capture the page contents' could pick snapshot since snapshot returns structured elements rather than an image. |
zen_list_pages |
zen_get_page_text |
medium | Both describe returning page titles/URLs; a task like 'get the title of the page' is ambiguous between listing all tabs' titles and reading the active page's title/text. |
zen_get_form_fields |
zen_get_page_text |
medium | Both are 'get page information' tools returning visible/specific content; a task like 'read what's on the page' or 'get the form details' could map to the wrong one since both return page-level info. |
zen_select_page |
zen_select_option |
medium | Both share the 'select by index/value' action pattern; a task like 'select the second item on the page' is ambiguous between picking a tab (zen_select_page) and choosing a dropdown option (zen_select_option). |
Compare the field