Overview
What Deputy is, how it differs from an agent driving the browser itself, and what it needs.
Deputy is an agent that lives in your browser. Your MCP client (Claude Code, Codex, Cursor or your own agent) stops driving the browser itself and asks Deputy instead. Deputy hands back a typed API for the page you're on, then makes the call in your real, logged-in session.
The page never enters the calling agent's context: no screenshot, no DOM, no accessibility tree.
$claude mcp add deputy -- npx -y deputy-mcpHow it works
You install two things: the Deputy extension in Chrome, and deputy-mcp, the small program your MCP client starts with npx -y deputy-mcp. They talk to each other over 127.0.0.1:7331, which never leaves your computer.
Everything happens in your browser, as you. Deputy works in the page's own security context and copies no cookies.
Driving the browser, or asking Deputy
An agent that drives the browser itself has to look at the page: a screenshot or an accessibility snapshot, then one click or keystroke at a time, looking again between steps. Every look costs thousands of tokens, and the agent re-reads all of them on every turn.
A form already knows everything about itself. It knows a field is a required date, that a dropdown has exactly three options, that a number must fall between 1 and 12. Deputy hands that to your agent as a typed tool instead of a picture:
| Driving the browser | Asking Deputy | |
|---|---|---|
| What the agent reads | Screenshots or accessibility snapshots | Each form's JSON Schema, what its fields hold, and the page's buttons and links |
| Filling a seven-field form | One action per field | One browser_invoke call |
| Finding one fact on a page | The page itself | An answer from browser_ask |
On one observation of a page, a trimmed accessibility snapshot (what Playwright MCP sends) came to 14,170 tokens and a screenshot to 57,134. Deputy's whole view of a form page was 611. See Measurements for the method.
Where the tools come from
Deputy uses the cheapest source that works on the page:
- Tools the app already declared. Apps built with CopilotKit publish their frontend tools to the browser's WebMCP registry. Deputy hands them to your agent, fully executable.
- Real forms. Deputy writes attributes from the W3C WebMCP standard onto the page's own
<form>, and Chromium generates the JSON Schema and runs the submission. If Chromium's WebMCP flag is off, Deputy builds the same schema from the form itself. - Everything else. Where there's no
<form>, Deputy builds the tool from the inputs and ARIA widgets: radio groups and listboxes become enums, checkboxes booleans, editable text strings.
Either way, your agent makes one typed call. See Forms as typed tools.
What it needs
- Chrome, or another Chromium browser, on a desktop computer. The extension needs Chrome 116 or later. Your agent runs on the same computer.
- A Deputy Pro license key. The extension from the Chrome Web Store needs one for everything. The free version is the open-source one on GitHub: see Open source and Pro.
- Node.js 20 or later, for
npx -y deputy-mcp. - An MCP client: Claude Code, Codex, Copilot CLI, Cursor, Gemini CLI, VS Code, OpenCode, Claude Desktop or any other that runs a stdio server.
Where to start
Install Deputy
The extension, your Pro key, and your agent.
Connect your agent
The setup for each MCP client.
Forms as typed tools
What your agent sees on a page, and the one call that fills it.
Tools
All 27 tools Deputy gives your agent.
What it can't do
Deputy doesn't use chrome.debugger, so there's no "started debugging this browser" banner and no relaunching Chrome with flags. What that costs: clicks and keys are synthetic events, so heavy editors such as Google Docs may ignore them, and there's no CSS :hover, no device or dark-mode emulation, and no PDF export. PDFs are read from their text layer, so a scanned PDF has nothing to read.