Public leaderboard

Public assessment

sh6drack/zen-mcp (zen-mcp)

zen-mcp · v1.2.2 · scanned

What changed in the harness

Selection accuracy 91→98, token cost up 17%, 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

0.0 / 30

0.0 out of 30
02Legibility

20.2 / 30

20.2 out of 30
03Economics

19.8 / 20

19.8 out of 20
04Discoverability

11.2 / 20

11.2 out of 20

Highest-impact fix

Estimated gain +30 points

Add 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.

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

Confusable tool pairs.

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

One score is useful.
The evidence makes it actionable.

Back to the leaderboard