Public leaderboard

Public assessment

Chrome DevTools MCP (chrome-devtools-mcp, Glama popular)

chrome-devtools-mcp · v1.6.0 · scanned

What changed in the harness

Selection accuracy 100→98, token cost up 13%, 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.9 / 30

20.9 out of 30
03Economics

17.0 / 20

17.0 out of 20
04Discoverability

12.0 / 20

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

23 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
close_page
name_restates_behavior no_return_description
Closes the page identified by pageId, obtained from list_pages. Use this tool when you no longer need a browser tab. The last open page cannot be closed. Returns a confirmation of the closed page and the remaining open pages.
drag
name_restates_behavior no_return_description
Performs a drag-and-drop gesture by dragging the element with from_uid and dropping it on the element with to_uid. Returns an updated page snapshot if includeSnapshot is true, otherwise a confirmation of the drag operation.
emulate
name_restates_behavior no_return_description
Applies browser emulation settings to the selected page, including network throttling, CPU slowdown, geolocation, user agent, color scheme, viewport, and extra HTTP headers, for testing responsive, offline, and mobile behavior. Omitting a parameter leaves or clears that override. Returns a confirmation of the applied emulation settings.
fill
no_return_description
Type text into an input or text area, or select an option from a <select> element identified by uid. Use value 'true' or 'false' for checkboxes, toggles, and radio buttons. Returns an updated page snapshot if includeSnapshot is true.
fill_form
no_return_description
Fills multiple form elements (inputs, selects, checkboxes, radios) in a single call using uids from the snapshot, where each value is set on its matching element. Use 'true' or 'false' for checkboxes, toggles, and radio buttons. Prefer this tool over repeated fill or click calls when interacting with forms. Returns an updated page snapshot if includeSnapshot is true.
get_console_message
no_return_description
Retrieves a single console message by its msgid from the currently selected page. Use list_console_messages to obtain the available message ids. Returns the details of the requested console message, including its type and text.
handle_dialog
name_restates_behavior no_return_description
Responds to a browser dialog (such as alert, confirm, or prompt) that was opened on the page, either accepting or dismissing it. If the dialog is a prompt, promptText can supply the text to enter. Returns a confirmation of how the dialog was handled.
lighthouse_audit
no_return_description
Runs a Lighthouse audit on the currently selected page and returns score and reports for accessibility, SEO, best practices, and agentic browsing, excluding performance. Use mode 'navigation' to reload and audit, or 'snapshot' to analyze the current state, optionally emulating desktop or mobile. Reports are saved to outputDirPath, or to temporary files when omitted. For performance audits, use performance_start_trace instead.
list_console_messages
name_restates_behavior no_return_description
Returns the console messages logged by the currently selected page since the last navigation, optionally filtered by type or service worker, with results paginated via pageSize and pageIdx. Set includePreservedMessages to also include messages preserved over the last 3 navigations. Returns the matching console messages.
list_network_requests
no_return_description
Returns the network requests made by the currently selected page since the last navigation, optionally filtered by resource type, with results paginated via pageSize and pageIdx. Set includePreservedRequests to also include requests preserved over the last 3 navigations. Returns the matching network requests with their details.
list_pages
no_return_description
Returns all pages currently open in the browser along with their pageId identifiers, for use with select_page, close_page, and other page-scoped tools. Omit parameters as none are required.
navigate_page
no_return_description
Navigates the selected page to a URL, or moves back, forward, or reloads in history. Optionally bypasses cache, auto-handles beforeunload dialogs, injects a script before page scripts, and applies a timeout. Returns the result of the navigation, including the page's current URL and status.
new_page
no_return_description
Opens a new tab and loads the given url, optionally in the background without bringing it to the front. If isolatedContext is given, the page runs in its own browser context with separate cookies and storage. Returns the pageId and details of the newly opened page.
performance_start_trace
no_return_description
Starts a performance trace on the selected page to diagnose frontend performance issues and Core Web Vitals such as LCP, INP, and CLS. Optionally reloads the page when tracing begins, auto-stops the recording, and saves raw trace data to filePath. Returns a confirmation that the trace has started together with its identifier.
performance_stop_trace
name_restates_behavior no_return_description
Ends the active performance trace recording on the selected page and returns the collected trace data for analysis. Optionally saves the raw trace data, for example as trace.json.gz or trace.json, to the given filePath.
press_key
no_return_description
Presses a key or key combination on the selected page, such as 'Enter', 'Control+A', 'Control++', or 'Control+Shift+R', using modifiers Control, Shift, Alt, or Meta. Use this tool when other input methods like fill cannot be used, for example keyboard shortcuts, navigation keys, or special combinations. Returns an updated page snapshot if includeSnapshot is true.
resize_page
name_restates_behavior no_return_description
Sets the selected page's window size to the specified width and height so the viewport matches the requested dimensions. Returns a confirmation of the new page dimensions.
select_page
name_restates_behavior no_return_description
Sets the page identified by pageId as the context for subsequent tool calls, so actions apply to that page. Optionally brings the page to the front and focuses it. Use list_pages to get available page ids. Returns a confirmation of the selected page.
take_heapsnapshot
no_return_description
Captures a heap snapshot of the currently selected page and saves it to filePath as a .heapsnapshot file, for analyzing the memory distribution of JavaScript objects and debugging memory leaks. Returns a confirmation of where the snapshot was saved.
take_screenshot
name_restates_behavior no_return_description
Captures a screenshot of the currently selected page, or of a single element when uid is given, in png, jpeg, or webp format. Set fullPage to capture the entire page instead of the visible viewport, and quality (0-100) to control JPEG/WebP compression. If filePath is provided the screenshot is saved there instead of being attached. Returns the screenshot in the response.
type_text
name_restates_behavior no_return_description
Type the given text into the input element that is currently focused on the page, then optionally press a key such as "Enter" or "Tab" via submitKey after typing. Use this after focusing an input, for example to fill a form field and submit. Returns the result of the typing/keypress action so the caller can confirm the input was accepted.
upload_file
no_return_description
Upload the local file at filePath through the page element identified by uid — either a file input element or any element that opens the file chooser when interacted with in the page snapshot. Returns the upload result, and additionally attaches a page snapshot when includeSnapshot is true.
wait_for
name_restates_behavior no_return_description
Block until any of the given texts appears anywhere on the selected page, resolving as soon as one is found; an optional timeout in milliseconds caps the wait (0 uses the default). Use it to synchronize after navigation or asynchronous page updates. Returns once the matching text is present, or fails if the timeout is exceeded.

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
fill fill_form medium Both names start with 'fill' and act on the same form elements (uid+value); a task like 'fill in the email and password fields' matches either, with only the single-element vs batch-form distinction in the descriptions separating them.
get_console_message list_console_messages medium Common phrasing like 'get the console messages' mirrors the get_* name even though list_* is the correct tool for multiple messages; the get tool's description points to list for all messages, but a hasty name match can mislead.
get_network_request list_network_requests medium A task like 'get the network requests for the page' matches the singular get_* name, while the correct choice is the plural list_*; only the descriptions clarify that get_* fetches one request by reqid/selection.
take_heapsnapshot take_snapshot medium Both names read as 'take a snapshot of the selected page'; the difference (memory distribution vs a11y text tree) lives only in the descriptions, so a vague request like 'take a snapshot to inspect the page' can select the wrong one.
take_screenshot take_snapshot medium Users often say 'take a screenshot' and 'take a snapshot' interchangeably for capturing a page, and take_snapshot's explicit 'prefer a snapshot over a screenshot' guidance can push an agent toward take_snapshot even when the user wants an image.
navigate_page new_page medium A terse request like 'open example.com' is natural phrasing for both navigating the current tab and opening a new tab with a URL; the definitions split on current-page navigation vs new tab, which such phrasing does not resolve.

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard