Route 1: the MCP client, through a local bridge
Browser Use agents can import tools from external MCP servers: create an MCPClient, register its tools, and the agent uses them like its built-in actions. The current client launches local stdio servers, and the Browser Use docs are plain about its limits: a connection budget of roughly ten seconds, one tools/list response read, and no direct connection to HTTP or SSE endpoints yet. Zambo is a hosted endpoint, so it reaches the agent through a local stdio bridge, mcp-proxy:
from browser_use import Agent, Tools
from browser_use.mcp.client import MCPClient
tools = Tools()
zambo = MCPClient(
server_name="zambo",
command="uvx",
args=["mcp-proxy", "https://zambo.dev/mcp"],
)
await zambo.register_to_tools(tools)
agent = Agent(task="your real task here", llm=llm, tools=tools)
await agent.run()
await zambo.disconnect()Two details from the docs decide whether this works on the first try. Keep the connection open until the agent finishes, then disconnect it, and create a fresh client for a new run. And the one-page tools/list read is why the default surface matters: the endpoint's default surface is 36 tools, the working set an agent needs, out of 153 in total. Calls the agent makes through the registered tools return a receipt inside the response itself, with a public URL at https://zambo.dev/run/ that anyone can open.
Route 2: the endpoint in the host that drives the browser
If your browser work runs from an MCP-capable host, the setup Browser Use documents for its own cloud MCP server, add https://zambo.dev/mcp to the same host as a second server. The agent's session then holds both: Browser Use's tools for the browsing, and Zambo's tools for the record: save what the run extracted, check a claim against its source, and wrap the finished job into a handover with its receipts attached, so the next agent, or the client, picks it up with the proof included. No bridge is needed on this route; the host speaks to the hosted endpoint directly.
What gets receipted, and what does not
The honest edge, stated the same way on every page in this series: the browser steps themselves, the navigation, clicks, and typing, are the agent's own actions and are not receipted by this route. A replay remains the right tool for debugging them. What the receipts cover is the layer a third party actually adjudicates: the calls the agent made to record, check, and hand over its work, each fixed at execution time and checkable afterward. A run whose evidence steps are receipted can be reviewed by someone who was never in the session. A run with only a replay can only be re-watched.
Verify one yourself before you rely on it
Take any receipt from your first run and check it at zambo.dev/verify. The verifier recomputes the commitment from the saved bytes and compares it with the commitment fixed when the call ran. A match means the saved record is the record made at execution. Then do the negative test every evidence system should survive: change one character in a copy of the record and check again. It fails, plainly, in public. A record system that cannot fail in public cannot pass in a way that means anything.
And keep the claim honest when you present it: a receipt proves the saved call record was not changed after it was saved. It does not prove the agent browsed well. Review still matters; the receipt just makes the review about the real calls instead of about a summary of them.
Questions, answered
How do I add receipts to a Browser Use agent?
Connect Zambo as an external MCP server through Browser Use's MCPClient. The current client launches local stdio servers, so the hosted endpoint at https://zambo.dev/mcp reaches the agent through a local stdio bridge: MCPClient(server_name="zambo", command="uvx", args=["mcp-proxy", "https://zambo.dev/mcp"]), then register its tools with register_to_tools and keep the connection open until the agent finishes. Every call the agent makes through those tools returns a verifiable AER-1 receipt with a public URL. If your browser work runs from an MCP-capable host instead, add https://zambo.dev/mcp to that host directly, with no bridge. Either way, checking a receipt is free at zambo.dev/verify with no account.
What part of a Browser Use run do the receipts cover?
The calls your agent makes through Zambo's tools: the checking, recording, and hand-off steps it runs as part of the job, including saving what a run extracted and wrapping the finished job up with its record attached. The browser steps themselves, the navigation, clicks, and typing the agent performs, are Browser Use's own actions and are not receipted by this route, and this page does not pretend otherwise. The pattern that works is to receipt the steps someone will ask about afterward: what the run found, what it recorded, and the state it left the job in.
What does a Browser Use receipt prove?
It proves the saved call record was not changed after it was saved. The receipt fixes a hash of the call's record at execution time; recompute it later and a match means the record is the one that was made. It does not prove the agent browsed the right pages or extracted the right values. What it settles is the factual layer underneath every review: which calls ran, in what order, and what came back, in a form someone who was not present can verify.
Why a receipt instead of a session replay?
A replay is the run describing itself, and Browser Use's own tracker carries an open request for one because debugging needs it. Keep the replay for debugging. The receipt answers a different question, the one a client or a reviewer asks: is this record the record that was made at the time, or was it edited afterward? A replay cannot answer that about itself. A receipt can, because the commitment was fixed when the call ran and anyone can recompute it without your environment, your keys, or your say-so.
What does it cost to receipt a Browser Use run?
Starting costs nothing: the free tier is 20 calls + 1 wrap-up free every day, and picking up a job in another AI is always free, so you can wire the tools and see real receipts before paying anything. A Day Pass is $0.99 one time and covers 24 hours of calls. Ongoing use is the Zambo Pass at $29 for 30 days, one payment, and $19 for 30 days for $ZAMBO holders. A Lifetime Pass is $250, one payment for good. Full pricing: https://zambo.dev/pricing. Checking a receipt is always free at https://zambo.dev/verify/ with no signup, so clients and reviewers never need a plan to check your agent's work.
Proof works best when it travels with the work itself. The AER-1 badge kit turns verifiable receipts into an embeddable badge for project pages, docs, and profiles, so anyone who sees the claim can reach the check in one click.