Install
openclaw skills install chrome-devtools-web-researchClawHub Security found sensitive or high-impact capabilities. Review the scan results before using.
Use chrome-devtools-mcp via a remote-debugging Chrome session to inspect, search, navigate, and extract information from real websites, including social plat...
openclaw skills install chrome-devtools-web-researchUse chrome-devtools-mcp@latest through mcporter to drive Chrome, inspect real pages, and extract structured findings from dynamic websites.
Use MCP first by default. Do not wait for the user to remind you to use it.
For concrete failure wording and remediation paths, read references/troubleshooting.md.
If the user needs to enable tab access in Chrome, give them this short setup flow:
chrome://inspect/#remote-debuggingExplain plainly that this uses Chrome DevTools MCP under the hood and does not require a browser extension.
chrome-devtools.new_page.mcporter list --output json
mcporter call chrome-devtools.new_page --args '{"url":"https://example.com"}' --output json
mcporter call chrome-devtools.take_snapshot --args '{}' --output json
mcporter call chrome-devtools.click --args '{"uid":"<tab_uid>"}' --output json
mcporter call chrome-devtools.navigate_page --args '{"url":"https://example.com/next"}' --output json
mcporter call chrome-devtools.fill --args '{"uid":"<input_uid>","value":"query text"}' --output json
mcporter call chrome-devtools.press_key --args '{"key":"Enter"}' --output json
mcporter call chrome-devtools.close_page --args '{}' --output json
mcporter + chrome-devtools.Do not give up after the first MCP/browser failure.
Use references/troubleshooting.md for concrete error classes, user-facing wording, and remediation steps.
Follow this retry order strictly:
mcporter list --output json again to verify chrome-devtools is still present.chrome-devtools.new_page, orchrome-devtools.take_snapshot, orPractical rule: prefer one immediate retry + one environment re-check + one resumed attempt. Do not loop endlessly.
If the user does not specify a website, platform, or search engine, follow this chain by default and in order:
Treat this as the standard search chain, not an optional suggestion.
Required behavior for the chain:
Minimum acceptable default sequence:
If Google is blocked by a bot challenge or consent wall, report that friction, mark the Google leg blocked, and continue with X -> Reddit without waiting for user confirmation.
This default is for open-ended web research. If the user explicitly names another site, search engine, or platform, follow that instead.
Run:
mcporter list --output json
Expect a chrome-devtools server using a transport similar to:
STDIO npx chrome-devtools-mcp@latest --autoConnect
If mcporter is missing, help the user install it first. If the chrome-devtools MCP server is missing, help the user configure or install it instead of stopping at a vague error.
Practical install/remediation flow:
npm i -g mcporter
mcporter list
If Chrome DevTools MCP is not available yet, guide the user to set up or reconnect the server used by mcporter, and then retry mcporter list until chrome-devtools appears.
Do not ask whether MCP should be used. If it is available, proceed immediately.
Prefer direct URLs whenever possible.
mcporter call chrome-devtools.new_page --args '{"url":"https://target-site.example/path"}' --output json
Use direct navigation for:
If the site supports URL query parameters, prefer those over repeatedly editing fragile on-page controls.
Do not leave research tabs open unnecessarily.
After extracting what you need from a page or after finishing a search leg, close that page promptly unless you still need it for comparison.
mcporter call chrome-devtools.close_page --args '{}' --output json
Practical rule:
For multi-source research, keep only the minimum number of live pages needed.
Always pull a fresh snapshot after navigation or interaction:
mcporter call chrome-devtools.take_snapshot --args '{}' --output json
Look for:
article, link, button, heading, textbox, combobox, tab, dialogUse screenshots only when layout itself matters.
Use the smallest reliable action:
navigate_page for direct URL changesclick for tabs, filters, menus, paginationfill + press_key for search boxes and formsselect_page if multiple tabs/pages are openAfter each meaningful state change, take another snapshot.
Group findings into buckets such as:
Repeated copies of the same claim count as one claim stream, not multiple confirmations.
If the user wants stronger confidence, combine browser MCP findings with other methods:
web_search for discovery, source expansion, and finding external reportingweb_fetch for automatically retrieving readable page content when a page URL appears and lightweight extraction is enoughagent-browser for parallel page inspection when helpfulcurl as a fallback when fetch-style extraction is unavailable or insufficientUse the browser for live state and interaction. When the task surfaces normal webpage links, prefer web_fetch first for readable extraction; fall back to curl when needed for raw retrieval or custom parsing.
Use this structure when the page contains conflicting claims:
Good phrasing:
web_fetch first for fast readable extraction; if that is unavailable or not enough, fall back to curl.web_search to find corroborating coverage, official announcements, or the original reporting chain.mcporter + chrome-devtools availability.mcporter call chrome-devtools.new_page --args '{"url":"https://example.com"}' --output json
mcporter call chrome-devtools.take_snapshot --args '{}' --output json
mcporter call chrome-devtools.click --args '{"uid":"<relevant_tab_uid>"}' --output json
mcporter call chrome-devtools.take_snapshot --args '{}' --output json
mcporter call chrome-devtools.new_page --args '{"url":"https://www.google.com/search?q=Finalissima%202026"}' --output json
mcporter call chrome-devtools.take_snapshot --args '{}' --output json
mcporter call chrome-devtools.close_page --args '{}' --output json
mcporter call chrome-devtools.new_page --args '{"url":"https://x.com/search?q=Finalissima%202026&src=typed_query&f=top"}' --output json
mcporter call chrome-devtools.take_snapshot --args '{}' --output json
mcporter call chrome-devtools.navigate_page --args '{"url":"https://x.com/search?q=Finalissima%202026&src=typed_query&f=live"}' --output json
mcporter call chrome-devtools.take_snapshot --args '{}' --output json
mcporter call chrome-devtools.close_page --args '{}' --output json
mcporter call chrome-devtools.new_page --args '{"url":"https://www.reddit.com/search/?q=Finalissima%202026"}' --output json
mcporter call chrome-devtools.take_snapshot --args '{}' --output json
mcporter call chrome-devtools.close_page --args '{}' --output json
When reporting back, distinguish clearly between:
If sources conflict, say so directly.