Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

BrowserDo

MCPB · BROWSERDO-MCP-CLDD-0.9.4.MCPB · 2 COMPONENTS

Lets your AI agent read pages and act in Embiody, a Windows browser, while you keep using your PC.

39 Trust /100

Last scanned (21 hours ago)

Scores higher than 72% of MCPB servers

Category Browser Automation

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security0
  • No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
  • Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
  • Install-script risk not yet assessed.Unverified
  • Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
Provenance & Transparency45
Schema Quality & AI Usability63
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 6179 tokens (~199/item across 31 items; 31 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management7
  • Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 99% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 31 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 32 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Nov 26 +1
    • Stability: unverified → 0.03 ▲ functional
    • Package version: 0.9.3 → 0.9.4 functional
  • 2 Nov 26 38

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 4 Nov 2026 · Analysed mcpb/https://github.com/zhaijunlong/browserdo/releases/download/v0.9.4/browserdo-mcp-cldd-0.9.4.mcpb@0.9.4

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem mcpb
Reason No attestation published

Background: How many MCP packages publish verified provenance →

MCP tools · 31 exposed · ~5,694 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
browser_batch ~224

Run several page actions on one tab in a row, all aimed with the numbers of one snapshot, then get a fresh snapshot back — one call instead of one per step. Use it for steps that do not depend on each other's result: tick two filters, fill three fields that are already on screen. Do not put a step in that aims at something an earlier step makes appear (a suggestion list, a menu): its number does not exist yet. Stops at the first failure; after a step the browser says changed the page, the later steps that aim by number are skipped. Worth using for a single action too: the snapshot comes back in the same call.

NameTypeReqDescription
actionsarrayyes–
snapshotIdstring–From the snapshot the numbers were read from; required when any step names an emsn (a step may carry its own in args instead).
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
windowIdstring–Window to act on. Defaults to the frontmost window.

No output schema declared.

No examples provided.

browser_click ~261

Click an element by its number (emsn) from the latest snapshot. The kernel asks the page where that element is right now and refuses if it has gone, moved out of reach, or is covered by something else — it does not pretend to succeed. Passing x/y instead skips all of that checking, so prefer emsn.

NameTypeReqDescription
buttonstring–Default left.
clickCountnumber–2 for a double click.
emsnnumber–Element number from the snapshot.
snapshotIdstringyesThe snapshotId from the browser_take_snapshot you picked the emsn out of. An element keeps its emsn while the page stays (no navigation or reload), so with an emsn any snapshot of the current page is…
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
windowIdstring–Window to act on. Defaults to the frontmost window.
xnumber–Fallback pixel X; only when no emsn fits.
ynumber–Fallback pixel Y; only when no emsn fits.

No output schema declared.

No examples provided.

browser_close_popup_bubble ~116

Answer the popup blocking a tab (permission bubbles, dialogs). browser_take_snapshot reports which popups are open and what each one accepts. When unsure use dismiss: it refuses without writing a decision into the browser profile, where it would outlive the task.

NameTypeReqDescription
actionstring–Default dismiss, the most conservative one.
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
windowIdstring–Window to act on. Defaults to the frontmost window.

No output schema declared.

No examples provided.

browser_close_tab ~53

Close a tab.

NameTypeReqDescription
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
windowIdstring–Window to act on. Defaults to the frontmost window.

No output schema declared.

No examples provided.

browser_close_window ~46

Close a browser window and every tab in it. Other windows are unaffected. To close a single tab use browser_close_tab.

NameTypeReqDescription
windowIdstringyesThe window to close.

No output schema declared.

No examples provided.

browser_drag ~382

Press on something, carry it somewhere, let go. The one gesture a click cannot make, so this is for sliders, panning a canvas, split bars and lists that reorder. Give the destination exactly one way: toEmsn (with toX and toY for a spot inside it), or toX and toY, or dx and dy. **Both ends must already be on screen** — the far end is not scrolled into view, so scroll first.

NameTypeReqDescription
buttonstring–Default left.
dxnumber–Release this far from the press, horizontally.
dynumber–See dx.
emsnnumber–Element to press on.
holdMsnumber–How long to hold before moving. Raise it for a list that needs a long press.
settleMsnumber–How long to rest at the far end before releasing.
snapshotIdstringyesThe snapshotId from the browser_take_snapshot you picked the emsn out of. An element keeps its emsn while the page stays (no navigation or reload), so with an emsn any snapshot of the current page is…
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
toEmsnnumber–Element to release over.
toXnumber–Point to release at; needs toY.
toYnumber–See toX.
windowIdstring–Window to act on. Defaults to the frontmost window.
xnumber–With an emsn, a spot inside it; on its own, the point to press.
ynumber–See x.

No output schema declared.

No examples provided.

browser_get_window_info ~60

List every browser window and its tabs, with the windowId and tabId of each. Use it to find out what is open; the other tools default to the frontmost window and tab, so you usually do not need to call this first.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_go_back ~79

Go back one step in this tab's history. browser_get_window_info reports whether a tab can go back; calling this when it cannot will fail.

NameTypeReqDescription
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
windowIdstring–Window to act on. Defaults to the frontmost window.

No output schema declared.

No examples provided.

browser_go_forward ~59

Go forward one step in this tab's history.

NameTypeReqDescription
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
windowIdstring–Window to act on. Defaults to the frontmost window.

No output schema declared.

No examples provided.

browser_input_text ~580

Type text into an element by its number (emsn), or into whatever has focus when no emsn is given. Fails, typing nothing, when the field does not take focus. Also sets a dropdown (SELECT, or its label): text is the option exactly as listed in its options; and a date (YYYY-MM-DD), time (HH:MM), date and time (YYYY-MM-DDTHH:MM), month (YYYY-MM), week (YYYY-Www) or colour (#rrggbb) field, without opening a picker. Use this rather than clicking a SELECT: its list is not in snapshots. To edit a text field or editable area (a mail body, a rich-text editor) in the middle, give one of before / after / replace / at with its emsn. Copy the words from its snapshot value as they are written there: \n for a line break, ¤ escapes kept; ‸ (the caret) and ⟦⟧ (the selection) are ignored. Not found, or found in several places without occurrence: nothing is typed and the places are listed. The text is read back afterwards and the reply quotes the changed lines; if they differ (the editor reformatted it), it fails saying the text was typed. Without these, text goes in at the caret; the element is clicked first unless focus is already in it.

NameTypeReqDescription
afterstring–Type just after these words.
atstring–Type at the start or end of the element's text.
beforestring–Type just before these words.
clearTextboolean–Clear the field first instead of appending. Not with a place: it clears a whole mail body, quote and signature too.
emsnnumber–Element number to type into.
occurrencenumber–Which place, from 1, when the words are in several; overlaps count.
pressEnterboolean–Press Enter after typing, as a person does: it submits a form, and adds a line in a multi-line box.
replacestring–Replace these words with text.
snapshotIdstringyesThe snapshotId from the browser_take_snapshot you picked the emsn out of. An element keeps its emsn while the page stays (no navigation or reload), so with an emsn any snapshot of the current page is…
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
textstringyesThe text to type, as it is; empty with replace deletes.
windowIdstring–Window to act on. Defaults to the frontmost window.

No output schema declared.

No examples provided.

browser_minimize ~67

Minimize one of your windows (every tab in it yours), to keep it out of a person's way while you work in it. Pages in it keep running at full speed and snapshots keep working. browser_show brings it back.

NameTypeReqDescription
windowIdstringyesThe window to minimize.

No output schema declared.

No examples provided.

browser_move ~221

Hover the pointer over an element, for a menu or a tooltip that only appears under it. Whatever appears is not numbered until you take a fresh snapshot, so hover first, then snapshot, then act. The reply says where the pointer ended up.

NameTypeReqDescription
emsnnumber–Element to hover, from the snapshot.
snapshotIdstringyesThe snapshotId from the browser_take_snapshot you picked the emsn out of. An element keeps its emsn while the page stays (no navigation or reload), so with an emsn any snapshot of the current page is…
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
windowIdstring–Window to act on. Defaults to the frontmost window.
xnumber–With an emsn, a spot inside that element; on its own, a viewport point.
ynumber–See x.

No output schema declared.

No examples provided.

browser_navigate ~115

Open a URL in a tab. Element numbers from before the navigation are void afterwards.

NameTypeReqDescription
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
timeoutMsnumber–How long to wait for the load.
urlstringyesThe URL to open.
waitUntilstring–How far to wait for loading: commit, title, firstPaint or load.
windowIdstring–Window to act on. Defaults to the frontmost window.

No output schema declared.

No examples provided.

browser_new_tab ~98

Open a new tab. Returns the new tabId.

NameTypeReqDescription
foregroundboolean–Bring the new tab to the front.
timeoutMsnumber–How long to wait for the load.
urlstring–URL to open; defaults to a blank tab.
waitUntilstring–How far to wait for loading.
windowIdstring–Window to open it in; defaults to the frontmost.

No output schema declared.

No examples provided.

browser_new_window ~61

Open a new browser window. Returns the new windowId.

NameTypeReqDescription
hideWindowboolean–Keep the window off screen.
incognitoboolean–Open an incognito window.
urlstring–URL to open in the first tab.

No output schema declared.

No examples provided.

browser_press_key ~341

Press keys, in order, where focus is: Escape closes a dialog on the page, Tab moves to the next field, ArrowDown/Enter pick from a suggestion list, End or arrows move the caret before browser_input_text without emsn types there, Control+Z undoes. Not for typing text. Refused, nothing pressed: copy/cut/paste, and the browser's own shortcuts (use browser_close_tab, browser_reload and so on). Replies once the page has handled the last key; it does not say what the keys did, so snapshot to see. A list highlighted under the pointer counts arrows from that item, which a snapshot does not show: to pick a given item, click it.

NameTypeReqDescription
emsnnumber–Focus this element first: clicked unless focus is already in it, so a button or link acts and a field's caret moves to the click. Leave out to press where focus is.
keysarrayyesAt most 100 presses in all.
repeatDelayMsnumber–Pause between presses, default 80.
snapshotIdstringyesThe snapshotId from the browser_take_snapshot you picked the emsn out of. An element keeps its emsn while the page stays (no navigation or reload), so with an emsn any snapshot of the current page is…
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
windowIdstring–Window to act on. Defaults to the frontmost window.

No output schema declared.

No examples provided.

browser_read_pages ~288

Read web pages; use it instead of a built-in fetch tool (WebFetch): it returns the page's own text, not a summary, including pages built by scripts and sites the person is signed in to. Each URL opens in a background tab of an existing window, the whole page is read and the tab closed again, so nothing is left open. Returns each page's text with no element numbers — to act on a page, open it with browser_new_tab instead. Links are marked [^3], with the addresses after the text. Each page gives up to 15000 characters and says how to read on. One page failing does not fail the others. Not for search results URLs: engines often answer those with a captcha, so search by typing into the engine's own search box.

NameTypeReqDescription
frominteger–Start each page's text at this character, to read on where a page said it stopped.
maxCharsinteger–Characters per page, default 15000.
timeoutMsnumber–How long each page may take to load, default 15000. A page still loading then is read as it stands, and says so.
urlsarrayyesThe pages to read, up to 10; they load in parallel.
windowIdstring–Window to open the tabs in; defaults to the frontmost.

No output schema declared.

No examples provided.

browser_reload ~62

Reload the tab. Element numbers from before the reload are void afterwards.

NameTypeReqDescription
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
windowIdstring–Window to act on. Defaults to the frontmost window.

No output schema declared.

No examples provided.

browser_run_task ~343

Carry out a whole web task in a real browser and report what happened. This takes minutes, not seconds, and reports progress as it goes. Describe the task in plain language; it works out the steps itself. If it hits a login, a captcha or a payment screen it stops and hands the browser to the person, then picks up where it left off once they are done. Needs a vision model configured (EMBIODY_VLLM_*); for a small job you can drive the browser yourself with browser_take_snapshot / browser_click / browser_input_text instead, which needs no model.

NameTypeReqDescription
closeBrowserWindowWhenDoneboolean–Close the browser window this task runs in once it finishes. Other windows are unaffected.
closeTabWhenDoneboolean–Close the tab once the task finishes.
currentDescriptionExstring–Steps already executed locally in the previous round.
historyarray–Results of the steps executed so far.
humanReplystring–The human's answer to the question the previous run paused on. Pass it together with windowId/tabId to carry the answer into the resumed run.
maxRoundsinteger––
tabIdstring–Existing tab ID. Pass it to resume the task in that tab.
taskstringyesThe web task the user wants done.
taskTreeOverviewstring–Task tree as of the previous round.
totalTimeoutMsinteger–Overall timeout for one task, in milliseconds. Defaults to 5 minutes.
windowIdstring–Existing window ID. Pass it to resume the task in that window.

No output schema declared.

No examples provided.

browser_scroll ~434

Scroll. Give deltaY (how far; positive is down, as scrollTop counts) or toY (where to end up; 0 is the top, 999999 the bottom), not both; deltaX / toX are the horizontal ones. What scrolls is whatever is under the pointer: to scroll a pane that scrolls on its own (a mail list, a results panel), give its emsn; emsn -1 scrolls the whole page, only when the snapshot's page position line offers it. Replies once the scroll is at rest, saying when it moved less than asked (at the end, or the page took the wheel); coordinates are void after a scroll, so take a fresh snapshot to see where you are.

NameTypeReqDescription
deltaXnumber–Horizontal pixels; positive scrolls right.
deltaYnumber–Vertical pixels; positive scrolls down.
emsnnumber–The scrollable element to scroll, from the snapshot; -1 for the page.
repeatCountnumber–Repeat a deltaY/deltaX scroll this many times.
repeatDelayMsnumber–Pause between repeats, default 300.
snapshotIdstring–Required with emsn or x,y; see browser_click.
speednumber–Percent of human hand speed, default 100. Changes duration, not distance.
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
timeoutMsnumber–How long it may take to come to rest or arrive; default 7000, more with repeatCount.
toXnumber–Horizontal offset to end up at.
toYnumber–Vertical offset to end up at; past the end is the end.
windowIdstring–Window to act on. Defaults to the frontmost window.
xnumber–With y, a viewport point to scroll at instead of an emsn; with an emsn, a spot inside it.
ynumber–See x.

No output schema declared.

No examples provided.

browser_select_editable_text ~462

Select words in a text field or editable area (a mail body, a rich-text editor), as a person drags over them, so a toolbar button (bold, colour, link) acts on them next: a click on it can follow in the same batch. Nothing else changes, except that a click giving it focus stays. Give one of select, from with to, or all. Copy the words from the element's snapshot value as for browser_input_text's before/after. The reply quotes the lines the selection is on, marked ⟦…⟧. Refused, nothing selected: not found, or in several places without occurrence (the places are listed); an end inside a picture, a list number or an @mention; across table cells where the editor keeps a selection in one cell (select cell by cell); over a picture with its own editable caption (click the picture instead); a password, read-only or disabled field.

NameTypeReqDescription
allboolean–All of the element's text (not the page). To select only your own part of a rich editor, use from/to.
emsnnumberyesThe field or editable area, from the snapshot.
fromstring–Select from these words through those of to, both included.
occurrencenumber–Which place, from 1, of select's or from's words when they are in several; overlaps count.
selectstring–Select these words.
snapshotIdstringyesThe snapshotId from the browser_take_snapshot you picked the emsn out of. An element keeps its emsn while the page stays (no navigation or reload), so with an emsn any snapshot of the current page is…
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
tostring–Where a from selection ends: the first place after from.
toOccurrencenumber–Which place of to's words after from, from 1.
windowIdstring–Window to act on. Defaults to the frontmost window.

No output schema declared.

No examples provided.

browser_select_tab ~44

Bring a tab to the front of its window.

NameTypeReqDescription
tabIdstringyesThe tab to bring forward.
windowIdstringyesThe tab's window.

No output schema declared.

No examples provided.

browser_set_audio_muted ~69

Mute or unmute a tab.

NameTypeReqDescription
mutedbooleanyestrue to mute.
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
windowIdstring–Window to act on. Defaults to the frontmost window.

No output schema declared.

No examples provided.

browser_show ~60

Bring a window on screen. Windows driven by an agent are often hidden or off screen, so show one before asking a person to look at it.

NameTypeReqDescription
toStatestring–Default Restore.
windowIdstringyesThe window to show.

No output schema declared.

No examples provided.

browser_start_human_control ~176

Hand the tab to a person so they can use the real keyboard and mouse on it. Required for anything only a person can do — a password, a code sent to them, a captcha, proving who they are — because while the agent drives the tab their physical input does not reach the page at all. The window is brought on screen. While the person has it, every command on that tab fails except browser_take_snapshot, which is how you tell when they are done. Call browser_stop_human_control to resume.

NameTypeReqDescription
showWindowboolean–Bring the window on screen. Default true; leave it on.
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
windowIdstring–Window to act on. Defaults to the frontmost window.

No output schema declared.

No examples provided.

browser_status ~60

Say whether the browser is ready, without doing anything in it. On first use BrowserDo downloads and installs the Embiody browser, which takes a few minutes; until then every other tool replies with the progress instead of acting, and this one reports it.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_stop_human_control ~89

Take the tab back and resume automating it. A handover the agent started can be ended freely; if the person took the tab over themselves, they are asked first and may refuse.

NameTypeReqDescription
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
windowIdstring–Window to act on. Defaults to the frontmost window.

No output schema declared.

No examples provided.

browser_stop_loading ~84

Stop the page loading in this tab, like the browser's stop button. This is about page loading only. To stop a running browser_run_task, use browser_stop_task.

NameTypeReqDescription
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
windowIdstring–Window to act on. Defaults to the frontmost window.

No output schema declared.

No examples provided.

browser_stop_task ~156

Stop a running browser_run_task, by the ID that browser_run_task returned. The task stops at the end of its current step and does not resume. Optionally closes the tab or the whole browser window it was using; other windows are left alone. This is not the same as cancelling the task at the protocol level: that is advisory and may be ignored, and it cannot tidy up the browser. To stop a page loading rather than a task, use browser_stop_loading.

NameTypeReqDescription
closeBrowserWindowboolean–Close the browser window the task was using after stopping.
closeTabboolean–Close the tab the task was using after stopping.
taskIdstringyesTask ID returned by browser_run_task.

No output schema declared.

No examples provided.

browser_take_snapshot ~557

Look at a tab: returns one line per element, the page position, the tab's URL and title, any popups blocking it, and a snapshotId. Every actionable element carries a number (emsn) at the start of its line — act on the number, never on pixel coordinates. Take a fresh snapshot after anything that changes the page, to see what it became: elements that appear have no number until then. Says so when the page is a PDF, a browser error page or a crashed tab, each of which makes the obvious next move useless. Give tabIds to look at several tabs in one call; each comes back with its own snapshotId. Marks on a line: collapsed (in a closed section: open it first), modal (the page outside it takes no clicks), hover-only (may do nothing on a click), also dblclick / drag / ... (other listeners, perhaps only tracking; the list misses some: a list item without drag may still drag, a spreadsheet cell without right_click may still take one: try it and snapshot), options (a dropdown's choices), readonly (takes no typing; clicking it often opens the page's picker), aria-readonly (the page says not to type, typing still goes in).

NameTypeReqDescription
formatstring–text (default): one line per element, several times smaller. json: the browser's raw annotatedContent tree, for tools that parse it themselves.
includeImageboolean–Also return the annotated screenshot. Off by default because images are large; turn it on when the page needs looking at (dates, layout, visual confirmation).
readWholePageboolean–Read the page around the screen too (about 8000px each way), not just the screen. The image stays one screen; lines off it are marked offscreen and are still acted on by emsn. Several times larger, s…
showLinksboolean–Mark each link with a footnote, [^3], and list the addresses after the elements. Turn it on when you need addresses: to hand search results to browser_read_pages, or to see where a link goes. A page…
tabIdstring–Tab to act on. Defaults to the foreground tab of that window.
tabIdsarray–Several tabs at once, in any windows, instead of tabId.
timeoutMsnumber–How long to wait for the page to settle.
windowIdstring–Window to act on. Defaults to the frontmost window.

No output schema declared.

No examples provided.

browser_wait ~47

Wait before looking again, for pages that are still settling. Clamped to 100–10000 ms.

NameTypeReqDescription
durationMsnumber–Milliseconds to wait; default 2000.

No output schema declared.

No examples provided.

Install

How do I install the BrowserDo MCP server?

BrowserDo ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, cdaa5c0f1fbac206c1e5b0917bc34cf7b53af5171be1eaf10dc967727fe169a9; the commands to do that are on this page. If it does not match, do not open it.

mcpb · browserdo-mcp-cldd-0.9.4.mcpb

Download bundle

Check the download matches the SHA-256 the MCP registry declares before you open it. If it does not match, do not open the file.

SHA-256

cdaa5c0f1fbac206c1e5b0917bc34cf7b53af5171be1eaf10dc967727fe169a9

macOS / Linux

echo "cdaa5c0f1fbac206c1e5b0917bc34cf7b53af5171be1eaf10dc967727fe169a9  browserdo-mcp-cldd-0.9.4.mcpb" | shasum -a 256 -c

Windows (PowerShell)

(Get-FileHash -Algorithm SHA256 .\browserdo-mcp-cldd-0.9.4.mcpb).Hash -eq "cdaa5c0f1fbac206c1e5b0917bc34cf7b53af5171be1eaf10dc967727fe169a9"

Run it in the folder you saved the bundle to, then open the file with an MCPB-capable host such as Claude Desktop.

Common questions

What is the BrowserDo MCP server?

BrowserDo is an MCP server listed in the public MCP registry as io.github.zhaijunlong/browserdo. Lets your AI agent read pages and act in Embiody, a Windows browser, while you keep using your PC. This page covers its MCPB bundle (https://github.com/zhaijunlong/browserdo/releases/download/v0.9.4/browserdo-mcp-cldd-0.9.4.mcpb).

Is the BrowserDo MCP server safe to use?

BrowserDo scores 39 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the BrowserDo MCP server expose?

BrowserDo exposes 31 tools: browser_status, browser_run_task, browser_stop_task, browser_take_snapshot, browser_read_pages, and 26 more. Their descriptions and schemas cost roughly 5,694 tokens of context every time the server is loaded.

What licence is the BrowserDo MCP server under?

BrowserDo declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.