TabRunner

app.tabrunnerPublished by tabrunner.appv0.17.3Updated Nov 4, 2026

Give browser tasks to TabRunner, an agent in your own Chrome that uses your logins.

Overview

AI-generated overview

TabRunner drives the user's own Chrome through a local bridge, letting an assistant hand off browser tasks or click through pages step by step.

What you can do
  • Check connection health and follow a delegated task's plan, status, questions and steering
  • Start and end a direct-control session on a tab, with screenshots and page snapshots
  • Navigate, click, type, fill fields, press keys and scroll the driven tab
  • Inspect network requests and console messages, and run JavaScript in the page
  • List and switch between the user's open tabs
  • Reset or compact the per-client chat history
When to use it
Useful when a task needs the user's real browser session, existing logins and open tabs, such as reading a signed-in page, filling a form or checking a flow. Choose it when you want either a plain-language task handed to TabRunner's own agent or step-by-step control from the assistant.
Requirements
Runs locally over stdio via bunx, so bun is required. The TabRunner Chrome extension must be installed with the bridge enabled in Settings → MCP, and TABRUNNER_BRIDGE_PORT must match that setting. Desktop only.
Before you install
It acts inside the user's logged-in Chrome, so pages and data it reads may be private. Tasks can click, type, fill forms and submit, and stopping a task undoes nothing. TabRunner pauses before consequential actions such as paying, sending or deleting, and the assistant is told to relay those questions to the user rather than decide itself. browser_evaluate runs arbitrary JavaScript in the page.

Installation

In SourceWeft

  1. Open TabRunner in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

tabrunner-mcp

The MCP server for TabRunner, the browser agent that works in your own Chrome, with your tabs and the accounts you're already signed in to. Claude Code, Claude Desktop, Codex or any other MCP client can give TabRunner a task and follow it to the answer, or click through a page itself.

It needs bun and the TabRunner extension, with the bridge turned on in Settings → MCP.

bash
claude mcp add --scope user tabrunner -- bunx tabrunner-mcp@latest

Or install the plugin, which adds this server plus a skill that teaches the model how to use it:

bash
claude plugin marketplace add tabrunner/tabrunnerclaude plugin install tabrunner@tabrunner

Call health first: it says whether the extension is connected, and what to do if it isn't. The tools and settings are in docs/mcp.md.

Source: packages/mcp/README.md at commit 949a120

Tools

23

health

TabRunner health

Check 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.

Takes no parameters.

run

Run a browser task

Give 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.

Parametersurltaskrequiredimagesbackground

get_status

Follow the task

Where 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.

ParameterswaitwaitSeconds

answer

Answer TabRunner's question

Reply 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.

Parameterstextrequired

steer

Steer the running task

Send 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.

Parameterstextrequired

stop

Stop the task

Stop 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.

ParametersrunId

screenshot

See the browser

A 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.

Takes no parameters.

new_conversation

Start a fresh chat

Forget 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.

Takes no parameters.

compact

Compact the chat

Summarize 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.

Takes no parameters.

browser_start

Start driving the browser yourself

Open 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 chat the user will see in TabRunner's history, and every action you take is recorded under it. IMPORTANT: driving directly bypasses TabRunner's own model and its rule of stopping to ask before consequential actions, so paying, sending on the user's behalf, deleting, or submitting is yours to put to the user first.

Parametersurlgoalrequiredbackground

browser_snapshot

Read the page

The 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.

Takes no parameters.

browser_network_requests

List network requests

The 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.

Parameterslimiturl_filter

browser_console_messages

Read console output

The 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.

Parameterslimitonly_errors

browser_navigate

Go to a URL

Navigate the driven tab and return the new page's snapshot.

Parametersurlrequiredsnapshot

browser_click

Click an element

Click 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.

Parametersrefrequiredsnapshot

browser_type

Type text

Type into whatever is focused. Click the field first. Real keystrokes, so a site's own handlers fire. Returns the resulting page.

Parameterstextrequiredsnapshot

browser_fill

Set a field's value

Set 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.

Parametersrefrequiredtextrequiredsnapshot

browser_evaluate

Run JavaScript in the page

Run 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 user first. Returns the resulting page.

Parameterssnapshotexpressionrequired

browser_press_key

Press a key

A single key press: "Enter" to submit, "Escape" to dismiss, "Tab" to move on. Returns the resulting page.

Parameterskeyrequiredsnapshot

browser_scroll

Scroll the page

Scroll the driven tab and return what is now in view. Content below the fold is not in a snapshot until you scroll to it.

Parametersamountsnapshotdirectionrequired

browser_tabs

List open tabs

Open 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.

Parametersquery

browser_switch_tab

Switch tabs

Point 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.

Parameterstab_idrequired

browser_end

Stop driving

Close 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.

Takes no parameters.

Version history

8
  1. v0.17.3LatestNov 4, 2026
  2. v0.17.1Nov 4, 2026
  3. v0.17.0Nov 3, 2026
  4. v0.16.1Oct 30, 2026
  5. v0.15.0Oct 23, 2026
  6. v0.14.2Oct 22, 2026
  7. v0.14.0Oct 21, 2026
  8. v0.13.0Oct 17, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts