0.0 / 30
What changed in the harness
Selection accuracy 100→100, token cost up 5%, unconfirmed writes 0%→0%.
Category breakdown
Where the score comes from.
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
01Safety
02Legibility
23.4 / 30
03Economics
14.9 / 20
04Discoverability
13.2 / 20
Highest-impact fix
Estimated gain +30 pointsAdd explicit identity and permission preflight tools
Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.
Description evidence
Defects and rewrites.
20 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 |
|---|---|---|
browser_close |
name_restates_behavior no_return_description |
Closes the current browser page/tab, ending its session. Returns no content on success. |
browser_resize |
name_restates_behavior no_return_description |
Resizes the browser window's viewport to the given width and height in pixels, useful for testing responsive layouts. Returns no content on success. |
browser_handle_dialog |
name_restates_behavior no_return_description |
Accepts or dismisses a currently open browser dialog (alert, confirm, prompt, or beforeunload), optionally supplying text for a prompt dialog via promptText. Returns no content on success. |
browser_evaluate |
no_return_description |
Executes a JavaScript function in the page's context, or against a specific target element when element/target are provided, and returns the function's result as text (or saves it to a file if filename is set). |
browser_file_upload |
no_return_description |
Uploads one or more local files to a currently open file chooser dialog; omitting paths cancels the chooser instead. Returns no content on success. |
browser_drop |
no_return_description |
Simulates an external drag-and-drop onto a target element by dropping local files and/or MIME-typed data (e.g. text, URLs) on it. Returns no content on success. |
browser_fill_form |
no_return_description |
Fills several form fields (textbox, checkbox, radio, combobox, or slider) in one call, each identified by its target and given a value. Returns no content on success. |
browser_press_key |
no_return_description |
Simulates pressing a single named key or character (e.g. `ArrowLeft` or `a`) on the keyboard. Returns no content on success. |
browser_type |
no_return_description |
Types text into an editable target element, optionally pressing Enter afterward (submit) or entering characters one at a time to trigger key handlers (slowly). Returns no content on success. |
browser_navigate |
no_return_description |
Navigates the current page to the given URL. Returns no content on success. |
browser_navigate_back |
no_return_description |
Navigates the browser back to the previous page in its history, like clicking the browser's back button. Returns no content on success. |
browser_run_code_unsafe |
no_return_description |
Executes an arbitrary Playwright code snippet (a function invoked with the page object) or loads one from a file. Unsafe: runs with full RCE-equivalent access in the Playwright server process. Returns the snippet's return value as text. |
browser_take_screenshot |
no_return_description |
Takes a screenshot of the current page or a specific target element and returns it as a PNG or JPEG image, or saves it to a file if filename is given. Cannot be used to locate elements for actions — use browser_snapshot for that. |
browser_snapshot |
no_return_description |
Captures an accessibility snapshot of the current page, returning a text tree of elements (optionally limited by depth or annotated with bounding boxes) with reference ids for use in later actions, or saving it to a markdown file if filename is set. |
browser_click |
no_return_description |
Clicks a target element on the page, optionally as a double-click, with a specific mouse button, or while holding modifier keys. Returns no content on success. |
browser_drag |
no_return_description |
Performs a drag-and-drop gesture from a start element to an end element on the page. Returns no content on success. |
browser_hover |
no_return_description |
Moves the mouse pointer to hover over a target element on the page. Returns no content on success. |
browser_select_option |
no_return_description |
Selects one or more option values in a dropdown/select target element. Returns no content on success. |
browser_tabs |
no_return_description |
Lists open browser tabs, or creates, closes, or selects one, based on the action parameter. Returns the tab list as text for action "list"; otherwise returns no content. |
browser_wait_for |
no_return_description |
Waits until the given text appears or disappears on the page, or until a fixed number of seconds elapses. Returns no content on success. |
Selection evidence
Confusable tool pairs.
3 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
browser_network_requests |
browser_network_request |
high | Names differ only by plural/singular; a task like 'show me the details of that request' or 'list network requests' can lead the agent to call the wrong one, since one lists all requests by index and the other fetches full details for a single indexed request. |
browser_file_upload |
browser_fill_form |
medium | A task like 'fill out the form and attach my resume' spans both tools; the agent may try to pass a file value through browser_fill_form (which only supports textbox/checkbox/radio/combobox/slider, not file inputs) instead of routing the file field to browser_file_upload. |
browser_navigate |
browser_navigate_back |
low | A task phrased as 'go back to the previous page' is usually clear, but if the agent instead recalls or infers the previous URL, it might call browser_navigate with that URL rather than using the dedicated browser_navigate_back tool. |
Compare the field