Skip to content
Agentmart
Submit a tool

DOMShell

Drive Chrome with filesystem commands (ls, cd, grep, click, type).

Connector by apireno · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)Remote (HTTP)★ 59
Write a review

Chalk Labs

Need help deploying DOMShell?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/apireno-domshell

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Drive Chrome with filesystem commands (ls, cd, grep, click, type). One MCP tool, multi-agent.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
19 read · 4 write · 16 delete
Secrets
None asked for
Install scripts
None found
Runs as
Node.js package

Tools by what they do 39

Read from the source code; the running server may list different tools.

Read 19 · Look things up without changing anything.

  • domshell_about
  • domshell_cat
  • domshell_cd
  • domshell_diff
  • domshell_extract_links
  • domshell_extract_table
  • domshell_find
  • domshell_functions
  • domshell_grep
  • domshell_here
  • domshell_ls
  • domshell_pwd
Show 7 more tools
  • domshell_read
  • domshell_refresh
  • domshell_screenshot
  • domshell_tabs
  • domshell_text
  • domshell_tree
  • domshell_wait

Write 4 · Create, change, send or run things.

  • domshell_back
  • domshell_forward
  • domshell_navigate
  • domshell_open

Delete 16 · Delete, drop, revoke or wipe things.

  • domshell_call
  • domshell_click
  • domshell_close
  • domshell_each
  • domshell_eval
  • domshell_execute
  • domshell_focus
  • domshell_for
  • domshell_js
  • domshell_script
  • domshell_scroll
  • domshell_select
Show 4 more tools
  • domshell_submit
  • domshell_type
  • domshell_watch
  • domshell_whoami

Network hosts it talks to 2

  • github.com · found in code
  • pireno.com · found in code

Files it touches

  • /dev/tty
  • /tmp/domshell-toolhive-autostart.log
  • Your home directory (~)
  • ~/tabs
  • Any path the agent passes to its tools

Tools (39)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • domshell_aboutread-only

    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're actually talking to, and again on any surprising failure (silent shared-fallback, unexpected DOM, missing lane marker) to disambiguate stale-log/wrong-extension issues from real bugs. Returns JSON — always safe to call, no side effects.

  • domshell_back

    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's faster (uses browser cache) and doesn't require remembering the URL.

  • domshell_callcan change or delete data

    Call a global JavaScript function by name. Arguments are auto-parsed as JSON if valid, otherwise passed as strings. Write-tier — requires --allow-write. Examples: call getCount call getMessage Agent call resetCount call setConfig {"key": "value"}

  • domshell_catread-only

    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.

  • domshell_cdread-only

    Change directory — sets your scope for all subsequent commands (ls, find, grep, text all operate relative to current directory). Paths: 'main/form', '..', '~' (browser root), '~/tabs/<id>', '~/tabs/<pattern>', '%here%' (focused tab). When to cd: - cd into a SECTION (article, main, sidebar) to scope find/grep/ls to that area - cd into ~/tabs/<id> to switch between tabs - cd .. to go up when done with a section When NOT to cd: - To read a child's text: use 'domshell_text' with the name parameter instead (saves a cd + cd .. round trip) - To inspect a child: use 'domshell_cat' with th…

  • domshell_clickcan change or delete data

    Click a DOM element. May trigger navigation, form submission, or page changes. The DOM tree auto-refreshes on the next command. After clicking: use domshell_ls or domshell_pwd to verify the page actually changed. Some clicks (like search buttons) may need a domshell_refresh to see updated content. If clicking a search/submit button doesn't navigate, try using domshell_navigate as a fallback.

  • domshell_closecan change or delete data

    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.

  • domshell_diffread-only

    Compare the current AX tree against the snapshot taken before the last write/navigate action (click, type, submit, select, navigate, open, back, forward, scroll). Shows added, removed, and changed elements. Use after a click or form submission to see exactly what changed on the page instead of re-exploring with ls/find.

  • domshell_eachcan change or delete data

    Run a command across multiple open tabs. Iterates over all non-chrome tabs (optionally filtered by title/URL pattern), switches into each, runs the command, and collects results. Restores the original tab when done. Options: --pattern FILTER Only tabs whose title or URL contains FILTER --limit N Process at most N matching tabs Examples: each eval document.title Title from every tab each --pattern wiki eval document.title Only Wikipedia tabs each --pattern wiki --limit 3 eval document.title First 3 Wikipedia tabs

  • domshell_evalcan change or delete data

    Evaluate a JavaScript expression in the tab context. Returns the result. WRITE TIER as of 2.0.8 — the expression runs via CDP Runtime.evaluate with no side-effect gate, so any JavaScript can mutate DOM/window/global state. Requires --allow-write, same as domshell_js. Use for one-off expressions (property reads, single-value extractions); prefer domshell_js for multi-statement scripts. Examples: eval document.title eval window.location.href eval document.querySelectorAll('a').length eval [...document.querySelectorAll('h2')].map(h => h.textContent) For read-only DOM inspection without …

  • domshell_executecan change or delete data

    Run DOMShell commands to browse and read web pages — the primary DOMShell interface. DOMShell maps a page's accessibility tree to a filesystem: containers are directories, interactive elements are files; browser windows and tabs are part of the same hierarchy. Send ONE command, or MULTIPLE commands separated by newlines to run a whole workflow in a single call: open https://example.com cd main text Multi-line runs each command in order in the same session/lane (cwd, env, history all persist between lines). An error on one line does NOT halt execution — its error is included in the combi…

  • domshell_extract_linksread-only

    Extract all links under the current directory or a named child as a clean numbered list in [text](url) format. Purpose-built for link extraction — returns display text and URLs in one call. Examples: extract_links All links under current directory extract_links main -n 20 First 20 links in 'main' section

  • domshell_extract_tableread-only

    Extract a table element as structured markdown or CSV. Reads all rows and cells, returns formatted output. First row is treated as the header. Examples: extract_table table_1234 Markdown table extract_table table_1234 --format csv CSV format extract_table table_1234 -n 10 First 10 rows only

  • domshell_findread-only

    Deep recursive search from the CURRENT DIRECTORY downward. Scope matters: cd into a section first, then find, to get only that section's elements (fewer, more relevant results). Returns full paths to matching elements. Key flags: --type ROLE Filter by AX role. Accepts exact roles (link, button, heading, textbox, table, list) AND natural aliases: input→textbox/searchbox/combobox, dropdown→combobox/listbox, nav→navigation, sidebar→complementary, toggle→switch/checkbox, modal→dialog, image→img, searchbar→searchbox/search, btn→button, anchor→lin…

  • domshell_focuscan change or delete data

    Focus an input element. Use before 'domshell_type' to direct keyboard input to the right field.

Show 24 more tools
  • domshell_forcan change or delete data

    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. Separator is ' : ' (space-colon-space) to avoid conflicts with URL colons. Examples: for "find --type heading -n 3" : text {} for "eval [...urls].join('\\n')" : open {}

  • domshell_forward

    Navigate forward in browser history. Only works after a 'back' command. Automatically refreshes the AX tree after navigation.

  • domshell_functionsread-only

    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's mw.config.get on Wikipedia). Examples: functions All non-standard window functions functions mw Functions matching 'mw' functions --json Machine-parseable output

  • domshell_grepread-only

    Search for elements matching a pattern. Matches against name, role, and value. Case-insensitive. By default, searches only IMMEDIATE children. Use recursive: true to search all descendants — this is almost always what you want for finding sections or elements by name. grep is the primary section-discovery tool. Its output gives you element names and paths that you then use with cd, text, find, and other commands. This is how you chain commands together efficiently. Common patterns: grep 'see_also' (recursive: true) Find a section by name anywhere below grep 'heading' (recursive: tr…

  • domshell_hereread-only

    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.

  • domshell_jscan change or delete data

    Execute arbitrary JavaScript in the current tab and return the result. Use this for complex DOM queries, CSS selector extraction, or any operation that would take multiple DOMShell commands. The code runs in the page context with full DOM access. Promises are automatically awaited. Results are JSON-serialized (truncated at 10000 chars). Common patterns: js document.title js document.querySelectorAll('a').length js [...document.querySelectorAll('.comment')].map(c => ({user: c.querySelector('.user').textContent, text: c.querySelector('.comment-text').textContent})) js document.querySel…

  • domshell_lsread-only

    List children of the current directory. In the DOM tree: shows elements as files and directories. At the browser level (~): shows tabs/windows. Flags: -l Long format (more detail per element) --meta Show DOM properties (href, src, id) inline — great for extracting links --text Show visible text preview per element -r Recursive listing -n N Limit to N results --offset N Skip first N children (pagination) --type ROLE Filter by AX role (link, heading, button, etc.) --count Just count children --textlen N …

  • domshell_navigate

    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.

  • domshell_open

    Open a URL in a new tab and enter it (path becomes ~/tabs/<id>). Automatically builds the accessibility tree after page loads. Works from any location. After opening a page, a typical extraction workflow is: 1. open URL 2. find the section you need (find --type heading, or grep section_name with recursive: true) 3. cd into the container 4. text (for content) or find --type link --meta (for links)

  • domshell_pwdread-only

    Print the current working directory path in the DOM tree.

  • domshell_readread-only

    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 'tree' + 'cat' combined: you get the structure AND the content. Excellent for tables, lists, and nested sections. A single read on a table returns all rows and cells with their roles and values, replacing N separate text calls. Flags: --meta Include DOM properties (href, src, id) per element --text Include visible text preview per element -d N Max depth to traverse (default 5) -n N Max total eleme…

  • domshell_refreshread-only

    Force re-fetch the Accessibility Tree. Use after page navigation or significant DOM changes. Note: the tree also auto-refreshes when changes are detected.

  • domshell_screenshotread-only

    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.

  • domshell_scriptcan change or delete data

    Save and run multi-command scripts. Scripts persist across service worker restarts. Subcommands: script list List saved scripts script save <name> cmd1 ; cmd2 Save commands (separated by ' ; ') script show <name> Show commands in a script script run <name> [args...] Execute with $1, $2 variable substitution script delete <name> Delete a script IMPORTANT: Multi-word arguments for 'script run' MUST be quoted with double quotes: script run search "Artificial intelligence" (correct: $1 = Artificial intelligence) script run search Arti…

  • domshell_scrollcan change or delete data

    Scroll the page or scroll a specific element into view. Use this when content is below the fold or when you need to reach elements not currently visible. Modes: scroll down [N] Scroll page down by N viewport heights (default: 1) scroll up [N] Scroll page up by N viewport heights (default: 1) scroll element_name Scroll a specific element into the center of the viewport Returns current scroll position as percentage. Use after scrolling to verify position. Common patterns: scroll down → ls --text (see what's now visible) scroll heading_name (jump to a section) find --t…

  • domshell_selectcan change or delete data

    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. Examples: select language_dropdown en select country_select United States

  • domshell_submitcan change or delete data

    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. Examples: submit search_input 'machine learning' Type and press Enter submit search_input 'machine learning' --submit search_btn Type and click button

  • domshell_tabsread-only

    List all open browser tabs with their IDs, titles, URLs, and window info. Use this to find the right tab before switching. Equivalent to 'ls ~/tabs/'.

  • domshell_textread-only

    Extract ALL text content from the current directory or a named child, including every descendant. Returns full textContent in a single call. The name parameter lets you read any child without cd'ing into it first: text paragraph_2994 Read a paragraph's text without cd'ing into it text table_1234 Read an ENTIRE table (all rows, all cells) in one call text list_5678 Read all list items at once text Read everything under current directory Efficiency tip: call text on the HIGHEST container that has the content you need. - Need a table? text o…

  • domshell_treeread-only

    Show a tree view of the current directory in the DOM, displaying the hierarchy of elements with type prefixes [d]=directory, [x]=interactive, [-]=static.

  • domshell_typecan change or delete data

    Type text into the currently focused element. Use domshell_focus first to target an input field. For search forms: after typing, you may need to either: 1. click the submit/search button, OR 2. type '\n' to simulate pressing Enter If the page doesn't navigate after form submission, use domshell_navigate as a fallback to go to the expected URL directly.

  • domshell_waitread-only

    Wait for an element to appear in the AX tree. Polls the tree every 500ms until the element is found or timeout is reached. Use after clicks or navigation that trigger async content loading (SPAs, AJAX). Examples: wait results_list Wait for search results wait submit_btn --type button Wait for a button to appear wait loading_spinner --timeout 10 Wait up to 10 seconds

  • domshell_watchcan change or delete data

    Re-run a command periodically and collect results. Useful for monitoring dynamic content changes within a single tool call instead of making N separate calls. Options: --interval N Seconds between runs (default: 2, min: 0.5) --times N Number of iterations (default: 5, max: 100) --until-change Stop early when output differs from previous iteration Total runtime capped at 120 seconds. Examples: watch ls --times 3 --interval 1 watch "eval document.title" --until-change --interval 1

  • domshell_whoamican change or delete data

    Check authentication status by examining cookies for the current page. Shows session cookies and expiry.

Signals

Stars
59
Forks
8
Open issues
39
Weekly downloads
69
Last commit (this folder)
Aug 14, 2026 (2 months ago)
Last release
Aug 14, 2026 (2 months ago)
Last package publish
Aug 14, 2026 (2 months ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.apireno/domshell
Version
2.0.10
Auth
No auth
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 25, 2026

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get DOMShell running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying DOMShell?

CallGet help
Cite this page

DOMShell MCP server. Agent Mart. https://agentmart.dev/connectors/apireno-domshell (last updated 2026-10-25)