Public leaderboard

Public assessment

ofershap/real-browser-mcp (real-browser-mcp)

real-browser-mcp · v1.2.0 · scanned

What changed in the harness

Selection accuracy 96→93, token cost up 9%, 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

23.0 / 30

23.0 out of 30
03Economics

19.2 / 20

19.2 out of 20
04Discoverability

13.4 / 20

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

15 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_navigate
name_restates_behavior no_return_description
Navigates the active browser tab to the given URL, waiting for either the load or domcontentloaded event as specified by waitUntil; returns once navigation completes or throws on failure.
browser_click
params_unexplained no_return_description
Clicks an element identified by a snapshot ref or CSS selector, optionally with a specific mouse button (left, right, or middle) or as a double-click; returns confirmation of the click or an error if the element cannot be found.
browser_type
no_return_description
Types the given text into an input element identified by a snapshot ref or CSS selector, optionally clearing existing content first; returns confirmation once the text has been entered.
browser_scroll
params_unexplained no_return_description
Scrolls the page or a specified container in a given direction (up, down, left, or right) by a pixel amount, to a named position (top/bottom), or into view of a target ref/selector, including virtual scroll containers; returns confirmation of the resulting scroll position.
browser_press_key
no_return_description
Presses a keyboard key or combination (e.g. Enter, Ctrl+A, Cmd+C), optionally focusing an element via ref or selector first; returns confirmation once the key event has been dispatched.
browser_wait
no_return_description
Waits until an element matching the selector reaches the given state (visible, hidden, or attached), or for a fixed delay, up to a timeout; returns once the condition is met or throws on timeout.
browser_screenshot
params_unexplained no_return_description
Captures a screenshot of the currently visible page area, encoded as PNG or JPEG (with adjustable JPEG quality); returns the image as base64-encoded data.
browser_console
no_return_description
Reads buffered console messages (log, warn, error) from the browser, optionally clearing the buffer after reading; returns an array of message entries with type and text.
browser_network
no_return_description
Reads buffered network requests made by the page, optionally filtered by a URL regex and cleared after reading; returns an array of request records including URL, method, and status.
browser_tabs
no_return_description
Lists, creates, closes, or focuses browser tabs based on the action parameter; returns the tab list for 'list' or the affected tab's id and URL for create/close/focus.
browser_text
no_return_description
Extracts raw visible text from the page or an element matched by selector, truncated to maxLength characters; returns the extracted text as a string.
browser_hover
no_return_description
Hovers over an element identified by a snapshot ref or CSS selector to trigger tooltips, dropdowns, or hover states; returns confirmation once the hover has been performed.
browser_select
no_return_description
Selects an option in a dropdown/select element identified by ref or selector, matched by value, label, or index; returns confirmation of the option that was selected.
browser_click_text
no_return_description
Clicks the element whose visible text matches the given string (first line), by substring or exact match, choosing among multiple matches via index; works on React dropdowns, portals, and overlays absent from snapshots; returns confirmation of the click or an error if no match is found.
browser_handle_dialog
no_return_description
Accepts or dismisses a pending JavaScript dialog (alert, confirm, or prompt), optionally supplying text for prompt() dialogs, to unblock page interaction; returns confirmation that the dialog was handled.

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
browser_click browser_click_text high Both perform a click action on a page element; the only difference is targeting method (ref/CSS selector vs visible text match). A task like 'click the Submit button' doesn't specify which targeting mechanism to use, so an agent could pick either tool, especially before or instead of taking a snapshot.
browser_text browser_click_text medium Names overlap heavily ('text' vs 'click_text') despite very different purposes (extracting page text vs clicking by visible text). A task phrased around 'text' content, e.g. 'find and interact with the text that says X', could lead an agent to pick the wrong one based on name similarity alone.
browser_hover browser_select medium Both are used to interact with dropdown-like UI elements. A task like 'choose an option from the dropdown menu' could be ambiguous between browser_hover (to reveal a hover-triggered menu) and browser_select (for native select elements), especially if the agent doesn't know the dropdown's implementation in advance.
browser_press_key browser_handle_dialog medium A task like 'press Enter to confirm the alert' or 'dismiss the popup' could plausibly be attempted with browser_press_key when browser_handle_dialog is actually required, since JS dialogs block normal keyboard/page interaction and only handle_dialog can resolve them.
browser_screenshot browser_text low Both can be used to inspect page content ('show me what's on the page'), one visually and one textually. A vague task about viewing page content without specifying format could lead to either being chosen.
browser_console browser_evaluate low Both relate to browser-side JavaScript/state inspection. A task like 'check if there are any errors on the page' could ambiguously call browser_console (reading logged errors) or browser_evaluate (running a JS check), though their described purposes are fairly distinct.

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard