
TabRunner
Give browser tasks to TabRunner, an agent in your own Chrome that uses your logins.
Connector by tabrunner.appOfficial · Domain verified by the MCP Registry
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/tabrunner-app-tabrunner
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.
About
Reviews
Write a reviewNo 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 and install config. Checked Oct 25, 2026.
- Tools
- 5 read · 11 write · 1 delete · 6 not yet classified
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 23
Read from the source code; the running server may list different tools.
Read 5 · Look things up without changing anything.
browser_snapshotcompactget_statushealthscreenshot
Write 11 · Create, change, send or run things.
browser_clickbrowser_console_messagesbrowser_fillbrowser_navigatebrowser_press_keybrowser_scrollbrowser_startbrowser_typerunsteerstop
Delete 1 · Delete, drop, revoke or wipe things.
browser_end
Not yet classified 6 · We could not tell from the name and description.
answerbrowser_evaluatebrowser_network_requestsbrowser_switch_tabbrowser_tabsnew_conversation
Secrets and settings it asks for
Other settings (environment variables or headers).
TABRUNNER_BRIDGE_PORT
Tools (23)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
answerReply to the question a task stopped on (state: question) and let it continue. TabRunner stops to ask before consequential actions (paying, sending on the user's behalf, deleting or submitting), so relay the question to the user and send THEIR decision, never your own.
browser_clickClick by ref with a real trusted event, not a synthetic dispatch a site can ignore. Returns the resulting page. Take the ref from the most recent snapshot.
browser_console_messagesThe driven tab's console messages and uncaught exceptions since the session attached. When a page misbehaves for no visible reason, the JavaScript error usually names the broken piece.
browser_endClose this client's direct-control session and remove its on-page badge. Call it when you're done. Other clients and the panel keep their own tasks. A session left open expires after a few idle minutes.
browser_evaluateRun JavaScript in the driven tab's page context and get the result back. Promises are awaited; return only JSON-serializable values, not DOM nodes. For what the other tools cannot do: reading an attribute the tree omits, piercing shadow DOM, calling the page's own functions, fetching an endpoint the page itself uses. Results are bounded and credential-shaped values are stripped. A direct session has no plan gate. The code runs exactly as written, so the consequential-action rule (paying, sending on the user's behalf, deleting, submitting, by fetch or any other means) is yours to put to the use…
browser_fillSet the value of a field by ref. Supports text inputs, textareas, selects (by option label or value) and contenteditable. The value is set the way the page's own code notices, so it lands where typed keystrokes don't (pages that swallow key events, focus that won't stick). Pass an empty string to clear a field. Returns the resulting page.
browser_navigateNavigate the driven tab and return the new page's snapshot.
browser_network_requestsThe requests the driven tab has made since the session attached, with method, URL, status and failures. Tells 'the server answered with an error' apart from 'the page never sent it'. Response bodies are not captured; re-fetch a GET with browser_evaluate when the payload matters.
browser_press_keyA single key press: "Enter" to submit, "Escape" to dismiss, "Tab" to move on. Returns the resulting page.
browser_scrollScroll the driven tab and return what is now in view. Content below the fold is not in a snapshot until you scroll to it.
browser_snapshotThe current page as an accessibility tree with a ref on every interactive element. This is how you see, and where every ref you click comes from. Refs belong to the snapshot that produced them: after anything changes the page, re-read before acting.
browser_startOpen a direct-control session and get the first page snapshot. Use this instead of run when you want to drive step by step rather than hand TabRunner the whole task. run is still the better choice for anything long or open-ended, because TabRunner's own model plans it. Like run, it works in a background tab of its own (reusing the tab the previous session drove while it lives, or opening url / the start page) and leaves the page the user is reading alone; pass url to open a specific page. Pass background: false only when the task is about the page the user is on. State the goal: it names the c…
browser_switch_tabPoint every later action at another tab. The tab does not need to be on screen: actions work on background tabs too. It comes to the front only while the user is watching the tab you leave; otherwise the work goes on without moving their screen.
browser_tabsOpen tabs with their id, title and URL. These are all the tabs the user has open, so pass query to get only the ones you need. Find the one you need, then switch.
browser_typeType into whatever is focused. Click the field first. Real keystrokes, so a site's own handlers fire. Returns the resulting page.
Show 8 more tools
compactSummarize this chat's history so far, so every task replays a summary instead of the whole transcript. The raw messages stay in the user's panel; only what the model re-reads changes, and nothing is deleted. Reach for it when a long chat's tasks get slow or one dies on a context-length error. Cannot run while a task is in flight.
get_statusWhere the current task stands: the plan and the steps taken; when it ends, the answer, the question it stopped on or the error. By default this WAITS for the next change instead of returning immediately, so following a ten-minute task costs one call per real event. Keep calling it until state is done, error, or question.
healthCheck that the browser agent is reachable before driving it. Reports whether the TabRunner extension is connected to this bridge, which extension it is, whether it has a provider ready to think with, and what to do when any of that is missing. Call this first, and again after any connection error.
new_conversationForget the current chat and start clean. TabRunner keeps a separate chat for each connected client. Each task continues the previous ones, so it remembers the pages it visited and what it found. Reset only when the new task has nothing to do with the old one.
runGive TabRunner a task to do in the user's real Chrome, with their existing logins and sessions to navigate, read pages, click, type, fill forms and extract data. Describe the goal in plain language, as you would to a person; TabRunner plans and executes the steps itself. Returns immediately: follow the task with get_status. By default the task works in its own background tab (reusing this chat's tab while it lives, or opening url / the start page) and leaves the user's current page alone; pass background: false only when the task is explicitly about what the user is looking at.
screenshotA picture of the tab this client's task or direct-control session is driving. Start one with run or browser_start first. It never captures another client's tab or the user's current page as a fallback.
steerSend a note into a task that is already running, such as a correction, an extra constraint or a change of approach. It lands between tool calls, so the task absorbs it without restarting. Use this instead of stop+run when the goal is still the same.
stopStop this client's current task, or pass runId to cancel one of its queued tasks. It cannot stop another client's task. Stopping leaves the browser as it is. Nothing is undone.
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 23, 2026 (6 days ago)
- Last release
- Oct 23, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
app.tabrunner/tabrunner- Version
- 0.15.0
- Auth
- No auth
- Packages
- npm tabrunner-mcp
- License
- MIT
- Repository
- github.com/tabrunner/tabrunner
- Website
- tabrunner.app
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
TabRunner MCP server. Agent Mart. https://agentmart.dev/connectors/tabrunner-app-tabrunner (last updated 2026-10-24)