For people who cannot upload the file
Give your agent the taste, not the recipe.
Let an agent analyse a confidential document without ever giving it the document.
Your document opens in this tab and never leaves it. An agent reads it through tools that pass on the meaning and hold back the names, accounts and figures you mark.
No account. No upload.
No server to trust.
- 1
Open the file. It is read here, in the tab. Nothing is sent anywhere.
- 2
Mark what stays behind. Names, accounts, figures. Detection proposes, you decide.
- 3
Let the agent read. Through tools, one section at a time, on a record you keep.
![Two panes side by side. On the left the contract as written, with names, an address, a phone number and dates highlighted. On the right the same text as the agent receives it, every one of those values replaced by a token such as [PERSON_01] or [ORG_02], and the bank account shown as [BLOCKED_IBAN] in brown.](/shots/split-view.webp)
The tool surface
Five tools go to document.modelContext.registerTool(), and every one of them answers through a single wrapper.
- get_document_outline read
- Section ids, titles and sizes. No body text.
- search_document read
- Which sections mention a term, with a short excerpt.
- get_section read
- The text of one section, by id.
- get_metrics read
- How much of the file has been served so far.
- add_finding write
- Files one observation. Suspends on your approval.
The wrapper is the only door. It substitutes every string in a result after the handler has returned, so a handler cannot leak by forgetting to redact: forgetting is not a code path that exists. It also counts every byte of document text that leaves, holds write calls on your approval, and appends the audit line. Tools are registered against an AbortSignal per generation, because the API has no unregisterTool() and a remount would otherwise re-offer names the browser already holds.
How to try it
On any browser, right now
The Agent tab has a console that calls the same registered tools through the same wrapper. There is no privileged path and no demo mode: if the console cannot see a value, neither can a real agent. Press Sample investigation to watch four calls, or Read every section to hand the agent the whole file and watch it stay pseudonymous.
With a real agent driving the page
Chrome 149+ with chrome://flags/#enable-webmcp-testing, or ChatGPT's in-app browser.
The header reads webmcp absent · 0 tools on a browser without the API. That is the truth, not a failure: the count shown is the one the browser confirms holding, never the one this page offered, so it can never claim tools an agent has no way to call.
Why the tools run in the page
A server-side tool would have to receive the document before it could answer anything about it. That is the exact leak this exists to prevent, so the premise fails at step one.
The file never moves
Extraction, entity detection and substitution all happen in the tab. No model call, no request, no copy on anyone's disk.
Consent has somewhere to happen
A write tool suspends the agent's call on a prompt, in front of the person who owns the document. No timeout, no default answer.
The key stays with you
Tokens are minted here and reversed here. The mapping from [PERSON_01] back to a name is never transmitted, and never exported.
Checkable, not promised
Every call is written to a record in the tab, with its decision and the bytes it served. Open DevTools while you use it: the Network tab is empty, and it stays empty. Production builds tell the browser connect-src 'none', so this origin cannot open a connection even if the code asked it to.
- 38
- entities detected
- 2
- withheld outright
- 10
- addressable sections
- 44
- substitutions in the text
Measured at build time by the real detector on the bundled fictional contract, with the default level for each kind of value.

What it does not do
It does not stop an agent that can see the screen
The tool surface is sealed; a screenshot of the source pane is not. This governs tool-mediated disclosure, which is the part WebMCP controls.
Detection is patterns, not a model
Regular expressions and a capitalization heuristic. It over-detects on purpose, and the review step exists because it will still miss things.
Enough narrow questions rebuild the redacted document
Nothing caps how much an agent may read, because rationing a text whose names are already gone protects nobody. What it rebuilds is the pseudonymized version, and every byte of it is on the strip and in the record.