Browz
Isolated, fingerprint-protected browser profiles for AI agents: one per task, with its own proxy
Hosted MCP Server
npx add-mcp 'https://mcp.gobrowz.com/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
Before you start
Install Browz and open it. Every setup below drives the profiles of that app, with each profile’s own fingerprint, cookies and proxy.
- On the computer with Browz, the client starts the MCP server that ships inside the app. It reads the app’s own credentials, so there is nothing to paste. The snippets use the macOS path; elsewhere use
%LOCALAPPDATA%\Programs\Browz\browz-mcp.exe(Windows) or/usr/lib/browz/browz-mcp(Linux). In the app, Automate › Connect an AI agent shows the same snippets with the exact path on your computer. - Remote clients, including hosted ones, reach your Browz through
https://mcp.gobrowz.com/mcp. Most sign in with your Browz account in the browser. Those that cannot use an agent token: see Agent tokens. Beta In free public beta; it needs the Browz app open with Remote control on, on a computer with a hardware security chip. See Hosted agents.
Use agents only where each site’s terms and the law allow it; our acceptable use policy applies to agents the same as to people.
One-line install
On macOS or Linux, with Browz installed, one command puts the MCP server that ships in Browz on your PATH (in ~/.local/bin). Name a client and it adds Browz to that client too: claude-code, claude-desktop, cursor, gemini-cli. Other settings in the client’s config file are kept, the old file is saved next to it, and running it again changes nothing.
curl -fsSL https://gobrowz.com/agents/install.sh | sh
curl -fsSL https://gobrowz.com/agents/install.sh | sh -s -- claude-desktop
It downloads nothing else and needs no token: the server reads the Browz app’s own credentials. Read the script before you run it. On Windows, use Automate › Connect an AI agent in the app.
From npm or PyPI
@browz/mcp on npm
npx -y @browz/mcp setup claude-desktop --write # or cursor, gemini-cli (Claude Code: claude mcp add)
npx -y @browz/mcp # run the server (stdio)
browz-mcp on PyPI (uvx, pipx)
uvx browz-mcp # run the server (stdio) with uv
pipx run browz-mcp # the same with pipx
{ "mcpServers": { "browz": { "command": "uvx", "args": ["browz-mcp"] } } }
Check it works
Ask your agent this. It should answer “Example Domain” and leave no profile behind.
Using Browz: create a new profile called agent-check, start it, open https://example.com, tell me the page title, take a screenshot, then stop the session and delete the profile.
Hosted agents (remote MCP, beta)
Beta The hosted remote MCP server at mcp.gobrowz.com is in free public beta. Agents that run in the cloud reach the Browz app on your own computer through it: the AI app signs you in with your Browz account, shows what it is asking for, and gets only the access you allow.
What it needs
It needs the Browz app open on your computer with Remote control turned on (Settings › Account), on a computer with a hardware security chip: a Mac with a Secure Enclave (every Apple silicon Mac, and Intel Macs with a T2 chip), or TPM 2.0 on Windows or Linux. Run it on the computer itself, not inside a Docker container or a virtual machine, which usually has no security chip of its own.
Connect an agent
- In the Browz app, turn on Settings › Account › Remote control. The app keeps one outbound connection to our server; nothing on your computer is opened to the internet. If you turned Remote control on before the hosted server opened, turn it off and on again once.
- Add
https://mcp.gobrowz.com/mcpto the AI app as a remote MCP server or custom connector. Each client’s section on this page has the exact steps. - The AI app opens a Browz sign-in page. Sign in, check what the app is asking for, choose the workspace and allow it. A client that cannot sign in with a browser uses an agent token instead.
What we have tested
- The sign-in flow as a new client meets it: discovery from the server’s metadata, client registration, sign-in and consent, the token exchange, refresh and revoke. We also listed and called the tools with the MCP Inspector.
- Claude Code, end to end, as its section says. Every other client’s remote setup follows that client’s documentation. Tell us how it works for you from the app, under Settings › Help and support.
Tools
It offers 17 tools: your computers, profiles, tabs, pages (navigate, snapshot, act, wait and screenshot), hand-off to a person, and ending a session. Cookies, running script, downloads and stored sign-ins stay with the local MCP server on your computer, by design.
The beta allowance
While the hosted MCP is in beta, every account, Free included, gets the free beta allowance for hosted agents: 2 hosted sessions at once, 2,000 actions and 300 relay minutes a month, and 30 tool calls a minute and 2,000 in any 24 hours for each connected agent. The monthly counts reset at 00:00 UTC on the 1st. A paid plan keeps its own hosted allowance, and Pro 50 and above include more. Agents on your own computer, through the local MCP server, are never counted. When an agent reaches a limit, the tool result says which limit it reached and when it can try again.
What passes through our server
For hosted use, page snapshots, screenshots and the text an agent types pass through our server encrypted. They become unreadable after 7 days and are then deleted. The action log (the tool, the profile, the page’s origin and path, the outcome and the time, without page content) is kept for 90 days. See our Privacy Policy.
Stop or revoke an agent
On your account page, under AI agents, you see every connected AI app and agent token with what it did. Limit one to some profiles or to read-only, limit the sites it may open, stop it now, or revoke it. Turning off Remote control in the app cuts every hosted agent off at once.
It is a beta, so the allowance and the tools may change as it grows. Send us feedback from the app, under Settings › Help and support. Use it only where each site’s terms allow it. Our acceptable use policy applies to agents the same as to people.
Claude Code
On the computer with Browz
Add Browz to Claude Code
claude mcp add --transport stdio browz -- /Applications/Browz.app/Contents/Resources/browz-mcp
Remote, through https://mcp.gobrowz.com/mcp Beta
In free public beta. What it needs, its limits and what passes through our server: Hosted agents.
We ran Claude Code end to end against the hosted server, with a token from our sign-in flow in its config (2 November 2026). Signing in from Claude Code’s own /mcp screen should work; tell us if it doesn’t.
Add the remote server; Claude Code signs you in with your Browz account (run /mcp)
claude mcp add --transport http browz https://mcp.gobrowz.com/mcp
Or, without a browser sign-in, use an agent token
claude mcp add --transport http browz https://mcp.gobrowz.com/mcp --header "Authorization: Bearer $BROWZ_AGENT_TOKEN"
Claude Desktop
On the computer with Browz
Or add this to claude_desktop_config.json (Settings › Developer › Edit Config), then restart Claude (macos: ~/Library/Application Support/Claude/claude_desktop_config.json, windows: %APPDATA%\Claude\claude_desktop_config.json, linux: ~/.config/Claude/claude_desktop_config.json)
{
"mcpServers": {
"browz": {
"command": "/Applications/Browz.app/Contents/Resources/browz-mcp",
"args": []
}
}
}
Remote, through https://mcp.gobrowz.com/mcp Beta
In free public beta. What it needs, its limits and what passes through our server: Hosted agents.
These steps follow Claude Desktop’s own documentation. Tell us how they work for you from the app (Settings › Help and support) or the help page.
Customize › Connectors › Add › Add custom connector, name it Browz, paste this URL and sign in with your Browz account
https://mcp.gobrowz.com/mcp
Claude.ai
Remote, through https://mcp.gobrowz.com/mcp Beta
In free public beta. What it needs, its limits and what passes through our server: Hosted agents.
These steps follow Claude.ai’s own documentation. Tell us how they work for you from the app (Settings › Help and support) or the help page.
Customize › Connectors › Add › Add custom connector, name it Browz, paste this URL, choose "Sign in now" and sign in with your Browz account
https://mcp.gobrowz.com/mcp
In a chat, turn Browz on under + › Connectors, then ask
Using Browz: create a new profile called agent-check, start it, open https://example.com, tell me the page title, take a screenshot, then stop the session and delete the profile.
OpenAI (Responses API and Agents SDK)
On the computer with Browz
Agents SDK (Python), running on the computer with Browz
import asyncio
from agents import Agent, Runner
from agents.mcp import MCPServerStdio
async def main():
async with MCPServerStdio(name="browz", params={"command": "/Applications/Browz.app/Contents/Resources/browz-mcp", "args": []}) as browz:
agent = Agent(name="Browz agent", mcp_servers=[browz])
result = await Runner.run(agent, "Using Browz: create a new profile called agent-check, start it, open https://example.com, tell me the page title, take a screenshot, then stop the session and delete the profile.")
print(result.final_output)
asyncio.run(main())
Remote, through https://mcp.gobrowz.com/mcp Beta
In free public beta. What it needs, its limits and what passes through our server: Hosted agents.
These steps follow OpenAI (Responses API and Agents SDK)’s own documentation. Tell us how they work for you from the app (Settings › Help and support) or the help page.
Put your Browz agent token in an environment variable (create one on this page)
export BROWZ_AGENT_TOKEN=… # paste the token you created; never commit it
Responses API (JavaScript): OpenAI calls the Browz remote server for you
import OpenAI from 'openai';
const openai = new OpenAI();
const response = await openai.responses.create({
model: 'gpt-5',
tools: [{
type: 'mcp',
server_label: 'browz',
server_url: 'https://mcp.gobrowz.com/mcp',
authorization: process.env.BROWZ_AGENT_TOKEN,
require_approval: 'never',
}],
input: 'Using Browz: create a new profile called agent-check, start it, open https://example.com, tell me the page title, take a screenshot, then stop the session and delete the profile.',
});
console.log(response.output_text);
Agents SDK (Python) with the hosted MCP tool
import os
from agents import Agent, HostedMCPTool, Runner
browz = HostedMCPTool(tool_config={
"type": "mcp", "server_label": "browz", "server_url": "https://mcp.gobrowz.com/mcp",
"authorization": os.environ["BROWZ_AGENT_TOKEN"], "require_approval": "never",
})
agent = Agent(name="Browz agent", tools=[browz])
print(Runner.run_sync(agent, "Using Browz: create a new profile called agent-check, start it, open https://example.com, tell me the page title, take a screenshot, then stop the session and delete the profile.").final_output)
xAI Grok
Remote, through https://mcp.gobrowz.com/mcp Beta
In free public beta. What it needs, its limits and what passes through our server: Hosted agents.
These steps follow xAI Grok’s own documentation. Tell us how they work for you from the app (Settings › Help and support) or the help page.
Put your Browz agent token in an environment variable (create one on this page)
export BROWZ_AGENT_TOKEN=… # paste the token you created; never commit it
xAI SDK (Python): Grok calls the Browz remote server as a tool
import os
from xai_sdk import Client
from xai_sdk.chat import user
from xai_sdk.tools import mcp
client = Client(api_key=os.environ["XAI_API_KEY"])
chat = client.chat.create(model="grok-4.7", tools=[
mcp(server_url="https://mcp.gobrowz.com/mcp", server_label="browz", authorization=os.environ["BROWZ_AGENT_TOKEN"]),
])
chat.append(user("Using Browz: create a new profile called agent-check, start it, open https://example.com, tell me the page title, take a screenshot, then stop the session and delete the profile."))
print(chat.sample().content)
Or the Responses API over HTTP
curl https://api.x.ai/v1/responses \
-H "Authorization: Bearer $XAI_API_KEY" -H "Content-Type: application/json" \
-d "$(jq -n --arg t "$BROWZ_AGENT_TOKEN" '{model: "grok-4.7", input: "Using Browz: create a new profile called agent-check, start it, open https://example.com, tell me the page title, take a screenshot, then stop the session and delete the profile.",
tools: [{type: "mcp", server_label: "browz", server_url: "https://mcp.gobrowz.com/mcp", authorization: $t}]}')"
Gemini CLI
On the computer with Browz
Add Browz for your user
gemini mcp add --scope user browz /Applications/Browz.app/Contents/Resources/browz-mcp
Or add it to ~/.gemini/settings.json (all: ~/.gemini/settings.json)
{
"mcpServers": {
"browz": {
"command": "/Applications/Browz.app/Contents/Resources/browz-mcp",
"args": []
}
}
}
Remote, through https://mcp.gobrowz.com/mcp Beta
In free public beta. What it needs, its limits and what passes through our server: Hosted agents.
These steps follow Gemini CLI’s own documentation. Tell us how they work for you from the app (Settings › Help and support) or the help page.
Add the remote server; run /mcp auth browz in Gemini CLI to sign in
gemini mcp add --scope user --transport http browz https://mcp.gobrowz.com/mcp
Or with an agent token
gemini mcp add --scope user --transport http --header "Authorization: Bearer $BROWZ_AGENT_TOKEN" browz https://mcp.gobrowz.com/mcp
Cursor
On the computer with Browz
Or add it to ~/.cursor/mcp.json (all projects) or.cursor/mcp.json (one project) (all: ~/.cursor/mcp.json)
{
"mcpServers": {
"browz": {
"command": "/Applications/Browz.app/Contents/Resources/browz-mcp",
"args": []
}
}
}
Remote, through https://mcp.gobrowz.com/mcp Beta
In free public beta. What it needs, its limits and what passes through our server: Hosted agents.
These steps follow Cursor’s own documentation. Tell us how they work for you from the app (Settings › Help and support) or the help page.
Or add it to ~/.cursor/mcp.json; Cursor signs you in with your Browz account (all: ~/.cursor/mcp.json)
{
"mcpServers": {
"browz": {
"url": "https://mcp.gobrowz.com/mcp"
}
}
}
Or with an agent token from the environment
{
"mcpServers": {
"browz": {
"url": "https://mcp.gobrowz.com/mcp",
"headers": {
"Authorization": "Bearer ${env:BROWZ_AGENT_TOKEN}"
}
}
}
}
VS Code
On the computer with Browz
Or from a terminal
code --add-mcp '{"name":"browz","type":"stdio","command":"/Applications/Browz.app/Contents/Resources/browz-mcp","args":[]}'
Or in.vscode/mcp.json (one workspace) (all: .vscode/mcp.json)
{
"servers": {
"browz": {
"type": "stdio",
"command": "/Applications/Browz.app/Contents/Resources/browz-mcp",
"args": []
}
}
}
Remote, through https://mcp.gobrowz.com/mcp Beta
In free public beta. What it needs, its limits and what passes through our server: Hosted agents.
These steps follow VS Code’s own documentation. Tell us how they work for you from the app (Settings › Help and support) or the help page.
Or in.vscode/mcp.json; VS Code signs you in with your Browz account (all: .vscode/mcp.json)
{
"servers": {
"browz": {
"type": "http",
"url": "https://mcp.gobrowz.com/mcp"
}
}
}
Or with an agent token that VS Code asks for once and keeps in its secret storage
{
"inputs": [
{
"type": "promptString",
"id": "browz-token",
"description": "Browz agent token",
"password": true
}
],
"servers": {
"browz": {
"type": "http",
"url": "https://mcp.gobrowz.com/mcp",
"headers": {
"Authorization": "Bearer ${input:browz-token}"
}
}
}
}
browser-use
On the computer with Browz
Install
pip install browser-use # plus the Browz Python SDK: pip install browz-mcp
Run an agent in a fresh Browz profile (it is deleted afterwards)
import asyncio
from browser_use import Agent, ChatOpenAI
from browz.agents import browz_session, browser_use_browser
async def main():
with browz_session() as session:
agent = Agent(task="Open https://example.com and tell me the page title",
llm=ChatOpenAI(model="gpt-5"), browser=browser_use_browser(session))
print((await agent.run()).final_result())
asyncio.run(main())
Stagehand
On the computer with Browz
Install
npm install @browserbasehq/stagehand@3 zod # plus the Browz TypeScript SDK in sdk/typescript
Drive a fresh Browz profile (it is deleted afterwards)
import { Stagehand } from '@browserbasehq/stagehand';
import { withBrowzSession, stagehandOptions } from '@browz/sdk';
await withBrowzSession(async (session) => {
const stagehand = new Stagehand(stagehandOptions(session, { model: 'anthropic/claude-haiku-5-5' }));
await stagehand.init();
const page = stagehand.context.pages()[0];
await page.goto('https://example.com');
console.log(await page.title());
await stagehand.close();
});
LangChain
On the computer with Browz
Install
pip install langchain-mcp-adapters langgraph "langchain[openai]"
Load the Browz tools into a LangChain agent
import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
async def main():
client = MultiServerMCPClient({"browz": {"transport": "stdio", "command": "/Applications/Browz.app/Contents/Resources/browz-mcp", "args": []}})
agent = create_react_agent("openai:gpt-5", await client.get_tools())
out = await agent.ainvoke({"messages": [("user", "Using Browz: create a new profile called agent-check, start it, open https://example.com, tell me the page title, take a screenshot, then stop the session and delete the profile.")]})
print(out["messages"][-1].content)
asyncio.run(main())
Remote, through https://mcp.gobrowz.com/mcp Beta
In free public beta. What it needs, its limits and what passes through our server: Hosted agents.
These steps follow LangChain’s own documentation. Tell us how they work for you from the app (Settings › Help and support) or the help page.
Put your Browz agent token in an environment variable (create one on this page)
export BROWZ_AGENT_TOKEN=… # paste the token you created; never commit it
Use the remote server from a hosted agent
import os
from langchain_mcp_adapters.client import MultiServerMCPClient
client = MultiServerMCPClient({"browz": {"transport": "http", "url": "https://mcp.gobrowz.com/mcp",
"headers": {"Authorization": "Bearer " + os.environ["BROWZ_AGENT_TOKEN"]}}})
tools = await client.get_tools() # inside an async function
LangGraph
On the computer with Browz
Install
pip install langgraph langchain-mcp-adapters langchain-anthropic # plus the Browz Python SDK: pip install browz-mcp
A LangGraph agent with the Browz tools (one MCP session for the whole run)
import asyncio
from langchain_anthropic import ChatAnthropic
from browz.agents import langchain_tool_session, langgraph_agent
async def main():
async with langchain_tool_session() as tools:
agent = langgraph_agent(ChatAnthropic(model="claude-haiku-5-5"), tools)
out = await agent.ainvoke({"messages": [("user", "Using Browz: create a new profile called agent-check, start it, open https://example.com, tell me the page title, take a screenshot, then stop the session and delete the profile.")]})
print(out["messages"][-1].content)
asyncio.run(main())
Remote, through https://mcp.gobrowz.com/mcp Beta
In free public beta. What it needs, its limits and what passes through our server: Hosted agents.
These steps follow LangGraph’s own documentation. Tell us how they work for you from the app (Settings › Help and support) or the help page.
Put your Browz agent token in an environment variable (create one on this page)
export BROWZ_AGENT_TOKEN=… # paste the token you created; never commit it
The same agent through the remote server
from browz.agents import langchain_tool_session, langgraph_agent
async with langchain_tool_session(remote=True) as tools: # inside an async function
agent = langgraph_agent(model, tools)
OpenAI Agents SDK
On the computer with Browz
Install
pip install openai-agents # plus the Browz Python SDK: pip install browz-mcp
An agent with the Browz MCP server
import asyncio
from agents import Agent, Runner
from browz.agents import AGENT_PROMPT, openai_agents_mcp_server
async def main():
async with openai_agents_mcp_server() as browz:
agent = Agent(name="Browz agent", instructions=AGENT_PROMPT, mcp_servers=[browz])
result = await Runner.run(agent, "Using Browz: create a new profile called agent-check, start it, open https://example.com, tell me the page title, take a screenshot, then stop the session and delete the profile.", max_turns=30)
print(result.final_output)
asyncio.run(main())
JavaScript (@openai/agents)
import { Agent, run } from '@openai/agents';
import { openaiAgentsMcpServer, AGENT_PROMPT } from '@browz/sdk';
const browz = await openaiAgentsMcpServer();
await browz.connect();
try {
const agent = new Agent({ name: 'Browz agent', instructions: AGENT_PROMPT, mcpServers: [browz] });
console.log((await run(agent, 'Using Browz: create a new profile called agent-check, start it, open https://example.com, tell me the page title, take a screenshot, then stop the session and delete the profile.')).finalOutput);
} finally {
await browz.close();
}
Remote, through https://mcp.gobrowz.com/mcp Beta
In free public beta. What it needs, its limits and what passes through our server: Hosted agents.
These steps follow OpenAI Agents SDK’s own documentation. Tell us how they work for you from the app (Settings › Help and support) or the help page.
Put your Browz agent token in an environment variable (create one on this page)
export BROWZ_AGENT_TOKEN=… # paste the token you created; never commit it
Your code connects to the remote server
from browz.agents import openai_agents_mcp_server
async with openai_agents_mcp_server(remote=True) as browz: # inside an async function
... # Agent(..., mcp_servers=[browz]) as above
Or OpenAI calls it for you (hosted MCP tool)
from agents import Agent
from browz.agents import openai_hosted_mcp_tool
agent = Agent(name="Browz agent", tools=[openai_hosted_mcp_tool()])
CrewAI
On the computer with Browz
Install
pip install 'crewai[anthropic]' 'crewai-tools[mcp]' # plus the Browz Python SDK: pip install browz-mcp
A crew whose agent uses the Browz tools
from crewai import Agent, Crew, Task
from browz.agents import AGENT_PROMPT, crewai_mcp_adapter
with crewai_mcp_adapter() as tools:
agent = Agent(role="Browser operator", goal="Do web tasks in Browz browsers",
backstory=AGENT_PROMPT, tools=tools, llm="anthropic/claude-haiku-5-5")
task = Task(description="Using Browz: create a new profile called agent-check, start it, open https://example.com, tell me the page title, take a screenshot, then stop the session and delete the profile.",
expected_output="The page title", agent=agent)
print(Crew(agents=[agent], tasks=[task]).kickoff())
Remote, through https://mcp.gobrowz.com/mcp Beta
In free public beta. What it needs, its limits and what passes through our server: Hosted agents.
These steps follow CrewAI’s own documentation. Tell us how they work for you from the app (Settings › Help and support) or the help page.
Put your Browz agent token in an environment variable (create one on this page)
export BROWZ_AGENT_TOKEN=… # paste the token you created; never commit it
The same crew through the remote server
from browz.agents import crewai_mcp_adapter
with crewai_mcp_adapter(remote=True) as tools:
... # Agent(..., tools=tools) as above
Give each agent its own key
Give every AI agent its own Browz key: limit it to the scopes, profiles and sites it needs, cap how many calls it can make a minute and a day, and revoke it, or stop every agent at once, whenever you want. Every call is logged on your own computer for 90 days, with the page address but not its query, and never the page content. These controls are free on every plan and run entirely on your computer.
A local agent key (blcl_…) is for the MCP server and the Local API on your own computer or server. It is not the same as the agent tokens for the remote server. You manage keys and stored sign-ins in the Browz app, under Automate (Agent keys and Saved sign-ins), or from the command line (browz agent-token and browz credential).
alias browz="/Applications/Browz.app/Contents/Resources/browz-agent" # macOS; the CLI is built into the agent
# Create a key. It is printed once, on stdout, so capture it; only its hash is kept.
browz agent-token create --name "shop checker" --profiles own --sites shop.example.com > ~/.browz-shop-checker.key
chmod 600 ~/.browz-shop-checker.key
browz agent-token list # every key: id, name, scopes, status, last used
browz agent-token log --agent <key id> # what it did, newest first (90 days)
browz agent-token revoke <key id> --stop-browsers
browz agent-token stop-all # suspend every key and stop the browsers they started
browz agent-token resume <key id> # undo stop-all for one key
By default a key may read and change profiles and drive their browser. --read-only narrows it to reading; --scopes picks exactly what it may do. Running script, cookies and downloads need browz:browser:advanced, and stored sign-ins need browz:credentials:use; neither is in the default set. --profiles own limits it to the profiles it creates, and --sites to pages on those sites and their subdomains. A key lasts 30 days unless you pass --days (up to 90) or --no-expiry, and makes at most 60 calls a minute and 10,000 a day unless you change --per-minute and --per-day. A key can never create or manage keys, or read the log.
Give the key to the agent, never your Local API token:
- MCP over stdio: set
BROWZ_LOCAL_AGENT_TOKENto the key, orBROWZ_LOCAL_AGENT_TOKEN_FILEto a file that holds it, in the server’s environment. Never pass it as a command-line argument. The server then refuses any tool the key’s scopes do not cover. - MCP over HTTP, and
browz-mcp serve: the client sends the key as its bearer token. - The Local API and the SDKs: send
Authorization: Bearer blcl_…, or setBROWZ_TOKENto the key.
{
"mcpServers": {
"browz": {
"command": "/Applications/Browz.app/Contents/Resources/browz-mcp",
"env": { "BROWZ_LOCAL_AGENT_TOKEN_FILE": "/Users/you/.browz-shop-checker.key" }
}
}
}
On a server without the desktop app, run the same commands as browz-mcp agent-token …. A key governs what an agent does through Browz. Programs that run as the same computer user as Browz can read its data folder, so run an agent you do not trust under another user or in a container.
Sign in without seeing the password
Browz can sign an AI agent in with a password and an authenticator (2FA) code you stored, and the agent never sees either. The agent points at a field, and Browz types the value itself, only on the sites you allowed for that sign-in and only into a real password field (a code may also go into a one-time-code field). Until the page changes, Browz pauses script, screenshots and waiting for page text for the agent in that profile, and every fill is recorded in your local action log without the value. Stored sign-ins are for accounts you are entitled to use.
browz credential add --label "Shop (Jane)" --username [email protected] \
--site shop.example.com --profile <profile id> --totp
# Password: (hidden prompt)
# TOTP seed (base32 or otpauth:// URI): (hidden prompt)
browz credential list # id, label, masked username, scope, 2FA, sites
browz credential update <credential id> --password # prompts for the new password
browz credential remove <credential id>
# A key reaches stored sign-ins only with this scope, which is never in the default set:
browz agent-token create --name "sign-in bot" --profiles <profile id> --sites shop.example.com \
--scopes browz:profiles:read,browz:browser,browz:credentials:use
- Sites.
--sitesays where the sign-in may be typed: a bare domain such asexample.comallows it and its subdomains over https; an origin such ashttps://accounts.example.comallows exactly that. Name the narrowest site that works. - Who may use it. One of
--profile,--groupor--any. - Secrets never go on the command line. The password, the TOTP seed and extra secret fields come from a hidden prompt, or from standard input with
--password-stdin. - What the agent does. It calls
browz_credential_list(labels, masked usernames, sites; never a secret), takes a snapshot, then callsbrowz_credential_fillonce per field with the field’s ref. The result says only that the field was filled. A code is worked out by Browz at that moment from the seed. - Pace and fields. Each sign-in can be filled 12 times in any 10 minutes. A sign-in page whose code box is a plain text field without
autocomplete="one-time-code"is refused; the agent should hand that step to you withbrowz_request_human.
Store sign-ins only for sites you trust with them: a page that copies or transforms a password it was given can expose it. A key governs what an agent does through Browz. Programs that run as the same computer user as Browz can read its data folder, so run an agent you do not trust under another user or in a container. The protection after a fill lasts while the Browz agent that made it keeps running. Stored sign-ins stay with agents on your computer: hosted agents hand sign-ins to you instead. The Saved sign-ins screen in the Browz app (under Automate) does the same as the commands above.
Agent tokens
Beta For the hosted remote server, in free public beta (see Hosted agents). An agent token lets a client that cannot sign in with a browser reach the remote server. Create one in the app under Automate › Connect an AI agent, or on your account page. Choose what it may do (see profiles; create, change and delete them; start them and drive their browser) and how long it lasts, up to 90 days. It is shown once.
- Keep it in the
BROWZ_AGENT_TOKENenvironment variable on the machine that runs the agent. Every snippet on this page reads it from there. - Never paste it into a chat, a shared script or a repository. A token reaches only the remote MCP server, never the rest of your account.
- Revoke it from the same screen; any agent using it stops at once.
Claude Desktop extension
browz.mcpb is a Claude Desktop extension: double-click it, or drag it onto Claude Desktop’s Settings › Extensions. It starts the server bundled in Browz, so Browz has to be installed and open.
Copy-paste examples: agent recipes. For agents and tools: llms.txt, the MCP tool list and the Local API OpenAPI spec.