MCP servers / chrome-devtools-mcp

MCP tool changes

chrome-devtools-mcp

4 of its last 4 updates changed what the agent reads: 6 tool descriptions rewritten, up to 1.12.0.

npm package · npm page · recorded on 24 October 2026 on a clean machine with placeholder settings; only tools/list was sent. A changed description is not a vulnerability. Method and limits.

Release by release

1.11.0 → 1.12.0

minor release, 22 October 2026

list_console_messages: input schema changed

list_network_requests: input schema changed

wait_for: description and input schema changed; new arguments: visible
Before (1.11.0)
Wait for the specified text to appear on the selected page.
After (1.12.0)
Wait for the specified text to appear on the selected page. By default, hidden text is also matched. Set visible to true to wait until the matched text is visible.

1.10.1 → 1.11.0

minor release, 15 October 2026

Added: screencast_start, screencast_stop

click: input schema changed

close_page: input schema changed

drag: input schema changed

emulate: description and input schema changed; new arguments: forcedColors, prefersContrast, prefersReducedMotion
Before (1.10.1)
Emulates various features on the target page.
After (1.11.0)
Emulates various features on the target page. Each call replaces all emulation settings (except extraHttpHeaders), so pass all desired settings in a single call.
evaluate_script: description and input schema changed; new arguments: format, sourcePath
Before (1.10.1)
Evaluate a JavaScript function inside the target page. Returns the response as JSON, so returned values have to be JSON-serializable.
After (1.11.0)
Evaluate JavaScript inside the target page. The source can be provided inline or loaded from a local file. Returns the response as JSON, so returned values have to be JSON-serializable.

fill: input schema changed

fill_form: input schema changed

get_console_message: input schema changed

get_css_styles: description and input schema changed
Before (1.10.1)
Retrieve matched CSS rules, inline styles, inherited styles, and cascade information for an element identified by its UID. Use this tool to debug why specific CSS properties are applied, overridden, or conflicting. Results are paginated and return 10 rules per page by default; use pageIdx to page through the remaining rules. Requires a UID from take_snapshot.
After (1.11.0)
Retrieve matched CSS rules, inline styles (element.style), inherited styles, custom properties, and cascade wrappers (@layer, @media, @container, @scope) for an element identified by its UID. Rules are ordered from highest to lowest cascade precedence and include source line numbers (e.g. index:196). Active (winning) declarations have no prefix tag, while (losing) overridden declarations are prefixed with [overloaded]. Treat the output as authoritative and complete. Results are paginated (10 rules per page by default); use pageIdx to page through the remaining rules. Requires a UID from take_snapshot.

get_network_request: input schema changed

handle_dialog: input schema changed

hover: input schema changed

lighthouse_audit: description and input schema changed
Before (1.10.1)
Get Lighthouse score and reports for accessibility, SEO, best practices, and agentic browsing. This excludes performance. For performance audits, run performance_start_trace
After (1.11.0)
Get Lighthouse scores, failing audits, and the DOM nodes they flag for accessibility, SEO, best practices, and agentic browsing. Full reports are saved to disk. This excludes performance. For performance audits, run performance_start_trace

list_console_messages: input schema changed

list_network_requests: input schema changed

list_pages: input schema changed

navigate_page: input schema changed

new_page: input schema changed

performance_analyze_insight: input schema changed

performance_start_trace: input schema changed; new arguments: ignoreCache

performance_stop_trace: input schema changed

press_key: input schema changed

resize_page: input schema changed

select_page: input schema changed

take_heapsnapshot: input schema changed

take_screenshot: input schema changed

take_snapshot: input schema changed

type_text: input schema changed

upload_file: input schema changed

wait_for: input schema changed

1.9.0 → 1.10.1

minor release, 23 September 2026

Added: get_css_styles

click: input schema changed

close_page: input schema changed

drag: input schema changed

emulate: input schema changed

evaluate_script: input schema changed

fill: input schema changed

fill_form: input schema changed

get_console_message: input schema changed

get_network_request: input schema changed

handle_dialog: input schema changed

hover: input schema changed

lighthouse_audit: input schema changed

list_console_messages: input schema changed

list_network_requests: input schema changed

list_pages: input schema changed

navigate_page: input schema changed

new_page: input schema changed

performance_analyze_insight: input schema changed

performance_start_trace: input schema changed

performance_stop_trace: input schema changed

press_key: input schema changed

resize_page: input schema changed

select_page: input schema changed

take_heapsnapshot: input schema changed

take_screenshot: input schema changed

take_snapshot: input schema changed

type_text: input schema changed

upload_file: input schema changed

wait_for: input schema changed

1.8.0 → 1.9.0

minor release, 8 September 2026
get_network_request: description changed
Before (1.8.0)
Gets a network request by an optional reqid, if omitted returns the currently selected request in the DevTools Network panel.
After (1.9.0)
Gets a network request by an optional reqid, if omitted returns the currently selected request in the DevTools Network panel. Useful for inspecting request headers (including 'Cookie') and response headers (including 'Set-Cookie' and directives).

new_page: input schema changed

Releases tried: 1.8.0 (2026-08-25); 1.9.0 (2026-09-08); 1.10.0 (2026-09-23), did not start; 1.10.1 (2026-09-23); 1.11.0 (2026-10-15); 1.12.0 (2026-10-22).

Tools in 1.12.0

The pin is the SHA-256 of the tool's name, description and input schema, as verfy.lock records it. The same pin in your lock means your agent reads this exact definition.

Tools in 1.12.0
ToolDescriptionPin
clickClicks on the provided element729d1f456ee6
close_pageCloses the page by its index. The last open page cannot be closed.c5c4647014b6
dragDrag an element onto another element4050bba1619b
emulateEmulates various features on the target page. Each call replaces all emulation settings (except extraHttpHeaders), so pass all desired settings in a single call.576236372f5b
evaluate_scriptEvaluate JavaScript inside the target page. The source can be provided inline or loaded from a local file. Returns the response as JSON, so returned values have to be JSON-serializable.92b0196d08c6
fillType text into an input, text area or select an option from a <select> element.b0dca23d875e
fill_formFill out multiple form elements (inputs, selects, checkboxes, radios) at once. ALWAYS prefer this tool over multiple individual 'fill' or 'click' calls when interacting with forms. It is significantly faster, more reliable, and reduces turn count. Example: Fill username, password, and check "Remember Me" in one call.d9affaa309e6
get_console_messageGets a console message by its ID. You can get all messages by calling list_console_messages.aa61384dc66c
get_css_stylesRetrieve matched CSS rules, inline styles (element.style), inherited styles, custom properties, and cascade wrappers (@layer, @media, @container, @scope) for an element identified by its UID. Rules are ordered from highest to lowest cascade precedence and include source line numbers (e.g. index:196). Active (winning) declarations have no prefix tag, while (losing) overridden declarations are prefixed with [overloaded]. Treat the output as authoritative and complete. Results are paginated (10 rules per page by default); use pageIdx to page through the remaining rules. Requires a UID from take_snapshot.e9e2e97aa3d9
get_network_requestGets a network request by an optional reqid, if omitted returns the currently selected request in the DevTools Network panel. Useful for inspecting request headers (including 'Cookie') and response headers (including 'Set-Cookie' and directives).c71d298b5a81
handle_dialogIf a browser dialog was opened, use this command to handle it9bf71e257824
hoverHover over the provided elementc70027b88dd6
lighthouse_auditGet Lighthouse scores, failing audits, and the DOM nodes they flag for accessibility, SEO, best practices, and agentic browsing. Full reports are saved to disk. This excludes performance. For performance audits, run performance_start_trace7653cafc7d04
list_console_messagesList all console messages for the target page since the last navigation.d710a164b3ae
list_network_requestsLists the most recent requests for the target page since the last navigation.fa632627158e
list_pagesGet a list of pages open in the browser.429bcc64ef53
navigate_pageGo to a URL, or back, forward, or reload. Use project URL if not specified otherwise.28f96ce17955
new_pageOpen a new tab and load a URL. Use project URL if not specified otherwise.0b36f9f0b422
performance_analyze_insightProvides more detailed information on a specific Performance Insight of an insight set that was highlighted in the results of a trace recording.fd6f54b399c2
performance_start_traceStart a performance trace on the target webpage. Use to find frontend performance issues, Core Web Vitals (LCP, INP, CLS), and improve page load speed.d3f90933070d
performance_stop_traceStop the active performance trace recording on the target webpage.94a75221c20d
press_keyPress a key or key combination. Use this when other input methods like fill() cannot be used (e.g., keyboard shortcuts, navigation keys, or special key combinations).fca156520e74
resize_pageResizes the page's window so that the page has specified dimension45e9f1f14ab9
screencast_startStarts recording a screencast (video) of the target page.cbf045f14532
screencast_stopStops the active screencast recording on the target page.f46190e2e7c0
select_pageSelect a page as a context for future tool calls.0a2036edacbf
take_heapsnapshotCapture a heap snapshot of the target page. Use to analyze the memory distribution of JavaScript objects and debug memory leaks.fcb6a6e2c70d
take_screenshotTake a screenshot of the page or element.51377d85ae3d
take_snapshotTake a text snapshot of the target page based on the a11y tree. The snapshot lists page elements along with a unique identifier (uid). Always use the latest snapshot. Prefer taking a snapshot over taking a screenshot. The snapshot indicates the element selected in the DevTools Elements panel (if any).4eecfdaa1f37
type_textType text using keyboard into a previously focused inpute00ac46e524c
upload_fileUpload a file through a provided element.36fd5fc62f5c
wait_forWait for the specified text to appear on the selected page. By default, hidden text is also matched. Set visible to true to wait until the matched text is visible.edb8e8fc3868

Lock these tools

Pin what chrome-devtools-mcp serves you today, commit the lock, and a pull request fails when a tool changes, with the text before and after. Pin the package version in your MCP config as well.

$ pip install verfy
$ verfy lock check --update   # shows each tool, then writes verfy.lock
$ git add verfy.lock
# .github/workflows/verfy.yml, after actions/checkout
- uses: anvarbekovjavohir277-dot/verfy-action@v1

Maintain this server? Run the same check on your releases and add the Locked by Verfy badge to your README.