MCP server that scans web pages for WCAG accessibility issues with axe-core, so AI agents can audit and fix accessibility. By
Domshell is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
Open InstallationWhat it does
MCP server that gives AI agents Unix-style filesystem commands (ls, cd, grep, click, type) to drive Chrome. Single-tool interface, concurrent multi-agent isolation, per-lane tab groups.
Quickstart
# 1 — run it from where its publisher ships it
npx -y @apireno/domshell
# 2 — the plan is chosen at checkout, in the browser
# 3 — ask your agent something
> MCP server that gives AI agents Unix-style filesystem commands (ls, cd, grep, click, type) to drive Chrome. Single-tool interface
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one runs on your machine: your client starts Domshell as a process under your own user, with your files and your network, so the tool surface below is what it can do to your computer rather than to a server somewhere else. It is scanned, signed and pinned to the version you choose — read the surface before you approve it.
This is a public server: you run it yourself and this marketplace is not in the path. Claude Code registers it in one command.
claude mcp add domshell-mcp -- npx -y @apireno/domshellReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
39 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
List all open browser tabs with their IDs, titles, URLs, and window info. Use this to find the right tab before switching. Equivalent to
Takes no parameters.
Jump to the active tab in the last focused Chrome window. Use this to quickly enter whichever tab the user is currently looking at, without needing to know the tab ID.
Takes no parameters.
Takes no parameters.
Change directory — sets your scope for all subsequent commands (ls, find, grep, text all operate relative to current directory).\n\nPaths:
Takes no parameters.
Print the current working directory path in the DOM tree.
Takes no parameters.
Read detailed metadata about a DOM element: role, type, AX ID, DOM backend ID, value, child count, text content (textContent), visible text (innerText — only rendered text, respects CSS visibility), and outerHTML snippet.
Takes no parameters.
Deep recursive search from the CURRENT DIRECTORY downward. Scope matters: cd into a section first, then find, to get only that section
Takes no parameters.
Takes no parameters.
Show a tree view of the current directory in the DOM, displaying the hierarchy of elements with type prefixes [d]=directory, [x]=interactive, [-]=static.
Takes no parameters.
Extract ALL text content from the current directory or a named child, including every descendant. Returns full textContent in a single call.\n\nThe name parameter lets you read any child without cd
Takes no parameters.
Structured subtree extraction — returns the hierarchy of elements under the current directory or a named child, with roles, names, and values in one call. Think of it as
Takes no parameters.
Force re-fetch the Accessibility Tree. Use after page navigation or significant DOM changes. Note: the tree also auto-refreshes when changes are detected.
Takes no parameters.
Takes no parameters.
Takes no parameters.
List callable global JavaScript functions on the current page. Shows function name, arity (parameter count), and parameter names. Useful for discovering page APIs (e.g. MediaWiki
Takes no parameters.
Takes no parameters.
Iterate over command output lines. Runs a source command, splits output into lines, and for each line replaces {} in the action template and executes it. Capped at 50 items and 120 seconds.\n\nSeparator is
Takes no parameters.
Save and run multi-command scripts. Scripts persist across service worker restarts.\n\nSubcommands:\n script list List saved scripts\n script save <name> cmd1 ; cmd2 Save commands (separated by
Takes no parameters.
Takes no parameters.
Takes no parameters.
Takes no parameters.
Takes no parameters.
Focus an input element. Use before
Takes no parameters.
Takes no parameters.
Takes no parameters.
Type text into the currently focused element. Use domshell_focus first to target an input field.\n\nFor search forms: after typing, you may need to either:\n 1. click the submit/search button, OR\n 2. type
Takes no parameters.
Navigate the current tab to a URL. Automatically rebuilds the accessibility tree after navigation completes. Requires a tab context (cd into a tab first). Use this to go to a specific website without opening a new tab.
Takes no parameters.
Takes no parameters.
Atomic form submission — focuses input, clears existing value, types new value, then submits (clicks button or presses Enter). Replaces the 3-step focus → type → click pattern in one reliable call.\n\nExamples:\n submit search_input
Takes no parameters.
Navigate back in browser history. Equivalent to the browser back button. Automatically refreshes the AX tree after navigation. Use this instead of domshell_navigate when returning to a previously visited page — it
Takes no parameters.
Navigate forward in browser history. Only works after a
Takes no parameters.
Close a tab. With no arguments, closes the current tab and returns to browser root. With a tab ID, closes that specific tab. Use after extracting data from a page to keep the tab count manageable.
Takes no parameters.
Select an option from a <select> dropdown element. Matches by option value first, then by visible text (case-insensitive). Dispatches change and input events to trigger form updates.\n\nExamples:\n select language_dropdown en\n select country_select United States
Takes no parameters.
Capture a PNG screenshot of the current tab. Returns the image for visual inspection. Useful for understanding page layout on unfamiliar sites — one screenshot can replace multiple exploration calls (tree, ls, find) by showing you exactly what the page looks like.
Takes no parameters.
Takes no parameters.
Call a global JavaScript function by name. Arguments are auto-parsed as JSON if valid, otherwise passed as strings. Write-tier — requires --allow-write.\n\nExamples:\n call getCount\n call getMessage Agent\n call resetCount\n call setConfig {\
Takes no parameters.
Check authentication status by examining cookies for the current page. Shows session cookies and expiry.
Takes no parameters.
Report DOMShell runtime identity: MCP server version, bridged extension version (from HELLO handshake), whether an extension is currently connected, and connection timestamp. Use this at drive startup to pin-verify what you
Takes no parameters.
Run DOMShell commands to browse and read web pages — the primary DOMShell interface. DOMShell maps a page
Takes no parameters.
- 15,000 calls a month, included
- 180 calls a minute at peak
- Every tool the listing has
- Cancel any time — the unused days are credited
- Runs behind the gateway, so cancelling stops it
- 75,000 calls a month, included
- 900 calls a minute at peak
- Every tool the listing has
- Cancel any time — the unused days are credited
- Runs behind the gateway, so cancelling stops it
- 300,000 calls a month, included
- 3,600 calls a minute at peak
- Every tool the listing has
- Cancel any time — the unused days are credited
- Runs behind the gateway, so cancelling stops it
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
No call is billed on its own, and this plan carries no monthly call limit. $19 a month covers every tool at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | high | capability blast radius (high) — client exposure if the model is manipulated | −6 |
| verification-discount | repo | publisher verification (public source) — no provenance, but the source is public and inspectable | −1 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
Tools were statically extracted from the published source (39 recovered), not enumerated from a running server. Tool-poisoning, Unicode-smuggling, capability and toxic-flow analysis ran on this inferred surface, but a mis-parsed registration could be missed or mis-attributed, so tool-derived findings are capped below “confirmed”. To grade the real runtime surface, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. high is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| domshell_tabs | no tags | |
| domshell_here | no tags | |
| domshell_ls | no tags | |
| domshell_cd | no tags | |
| domshell_pwd | no tags | |
| domshell_cat | no tags | |
| domshell_find | no tags | |
| domshell_grep | no tags | |
| domshell_tree | no tags | |
| domshell_text | no tags | |
| domshell_read | no tags | |
| domshell_refresh | untrusted-input | |
| domshell_diff | no tags | |
| domshell_eval | code-exec | |
| domshell_functions | no tags | |
| domshell_watch | no tags | |
| domshell_for | no tags | |
| domshell_script | no tags | |
| domshell_each | no tags | |
| domshell_extract_links | no tags | |
| domshell_extract_table | no tags | |
| domshell_click | no tags | |
| domshell_focus | no tags | |
| domshell_scroll | no tags | |
| domshell_js | no tags | |
| domshell_type | no tags | |
| domshell_navigate | no tags | |
| domshell_open | no tags | |
| domshell_submit | no tags | |
| domshell_back | no tags | |
| domshell_forward | no tags | |
| domshell_close | no tags | |
| domshell_select | no tags | |
| domshell_screenshot | no tags | |
| domshell_wait | no tags | |
| domshell_call | no tags | |
| domshell_whoami | no tags | |
| domshell_about | no tags | |
| domshell_execute | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Pinned to 2.0.10 — the install command below asks for that release. A pin is part of an install, so it is kept for this visit and written down when you install.
No release note was published with this version.
Only accounts with at least 50 real tool calls against this server in the last 90 days can post. Ratings are weighted by how much the reviewer actually uses it, and publishers can reply once per review.
Writing one takes an account with at least 50 real tool calls against Domshell in the last 90 days. That is the whole gate — there is no other way to post, which is why the counts beside each review are worth reading.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes an account with 50 real tool calls against it.