page_press

MCP tool from Agent Browser MCP by 0xlinn

press a key or a comma-separated modifier chord in the tab, e.g. enter or ctrl,shift,k.

How to use it

Project documentation lists page_press for the Agent Browser MCP MCP server. Add the server to your MCP client (Claude Desktop, Cursor, Windsurf and others), then check which tools your installed version makes available. Tool availability can depend on configuration and credentials. A server handshake does not verify this tool’s behavior. See the full listing for setup details.

Install Agent Browser MCP

$browsertap
FULL AGENT BROWSER MCP LISTING

Other tools in Agent Browser MCP (39)

activate_tab

bring a tab to the foreground and focus its window. This is the explicit way to raise a tab, and the only one that does not involve approving physical input. Check onscreen in the reply: BTAP first asks Windows to restore a minimised browser, but onscreen=false means visibility still could not be co

cdp_batch

send a batch; batchjson must be a JSON object with cmd: "batch" and a commands array of cdp, tabs, or cookies objects. The whole batch passes the raw CDP policy before its first member runs; nested/unknown commands are rejected.

cdp_command

send one CDP command to the selected tab or explicit debuggee. Listed high-risk methods return rawcdpblocked before dispatch; params must be a JSON object. Other allowed methods can still change page or profile state. See the raw CDP policy above.

close_tabs

(no tab needed) accept native numeric tab ids or full client:tabId session ids, including chrome-extension:// tabs. The default onlyifagentowned=true requires the ownerid returned by opennewtab and verifies the current lifecycle generation before closing, so pre-existing user tabs and another agent'

debugger_targets

(no tab needed) list every CDP-attachable target, including service workers and extension background pages that listtabs never shows.

delete_cookies

delete a cookie by name. Uses CDP Network.deleteCookies, falling back to expiring it via document.cookie. Scope with domain/path, or url to target one site.

download_file

download an HTTP(S) URL through Chrome's native download manager, using that browser profile's cookies and authenticated session. It waits by default and returns status="completed" plus a verified absolute path; interrupted downloads return failed, while a timeout or wait=false returns inprogress wi

execute_js

run JavaScript in the page and return the result. timeout is one end-to-end deadline covering dialog-policy setup, monitor snapshots, delivery/retry, navigation inspection, and cleanup; an explicit sessionid is forwarded through every one of those roundtrips instead of relying on the process default

extension_path

absolute path of the unpacked extension, for manual install. No parameters.

get_automation_profile

inspect whether the current MCP process uses lab or safe.

get_bookmarks

(no tab needed) read the bookmark tree.

get_cookies

read cookies for a page.

get_execute_js_result

read or briefly wait for an operationid, from the same MCP session that submitted it. Accepts handles from executejs and other timed-out bridge commands. Querying never replays the operation. A completed result can be read repeatedly, including after a lost query response; pending, unknown/expired,

get_setup_status

report packageversion, bridgeversion, extensionversion, protocolversion, connection state, ports, tabs, and the required recovery action. A missing bridge listener is started automatically when spawning is enabled; restartbridgerequired=true means a bridge that is still running must be replaced with

handle_dialog

inspect or answer a dialog left open on a tab. action="manual" reports it without choosing (blockedbydialog, or nodialog if nothing is open); accept/dismiss answer it and release any paused executejs or openurl. prompttext supplies the text for an accepted prompt.

list_all_tabs

(no tab needed) list every open tab, including chrome-extension:// pages that listtabs hides. Those never become sessions, so they have no session id; drive them with cdpcommand(tabid=...).

list_extensions

(no tab needed) installed extensions with id, name, enabled state, type, and version.

list_tabs

list connected tabs under data.tabs, including their full session handles and browser fields. Answers while another tool is still running; defaultsessionid is this request's snapshot of the MCP process default and defaultsessionsettled=true. Parallel agents should still pass an explicit target. No p

open_new_tab

open a background tab in this MCP process's selected browser/profile, unless sessionid or clientid selects another. Creates a unique operationid and waits a bounded time for exact session/generation registration; pass active=true for foreground work. Returns {operationid,tabid,sessionid,generation,r

open_url

navigate the current tab. Global behavior remains dismiss; lab automatically accepts beforeunload on configured shell/IDE hosts. If the extension's navigate route is unavailable on a heavy SPA, BTAP falls back to Page.navigate. A CDP result with isDownload=true returns {type:"download",status:"trigg

page_click

click a CSS/structured selector or viewport coordinates. Exactly one targeting mode: either selector, or both x and y. With a selector, each omitted offset axis uses the element centre; a supplied offsetx or offsety is measured from the element's top-left corner on that axis. A structured selector o

page_drag

drag between two viewport points as one uninterrupted event sequence.

page_type

insert text into a CSS/structured-locator field, or into whatever already has focus when selector is omitted. Xterm.js containers/descendants retarget to .xterm-helper-textarea. Missing, ambiguous, read-only, or otherwise unusable targets return a structured status without dispatching text or keys;

reset_site_permissions

attempt to restore matching leases now, including manualrecovery records. Omit both origin and permission to reset every lease on that browser. Unsupported restoration preserves the prior setting and recovery guidance and stops automatic retries; resolve the cause before another explicit reset.

resolve_leave_dialog

for an already-open shell/ttyd/IDE leave prompt: two protocol accepts, then physical Enter only when lab permits it.

save_pdf

bounded Page.printToPDF; validates PDF bytes and atomically writes savepath. savepath is relative and resolves under ~/Downloads/browsertap; an absolute path or a .. escape is rejected with ValueError. A timeout forcibly releases its debugger lease.

scan_page

read the page as simplified HTML or text. Returns links mapping each #rN ref in the content to its absolute URL, and offscreen + hint when content was left outside the viewport. A background tab may report viewport height zero; ordinary DOM/text/API work still continues there, and only visual/layout

scroll_page

scroll and report the new position, so a long page can be read in passes.

set_automation_profile

switch the current MCP process between labsafe; the override is not persisted and does not reload the extension.

set_cookies

write cookies into the real browser profile. Takes one cookie object or a list (JSON text is accepted): name is required, plus optional value/url/domain/path/expires (Unix seconds)/httpOnly/secure/sameSite. Uses CDP Network.setCookie, so HttpOnly and cross-path cookies work; falls back to document.c

set_extension_enabled

(no tab needed) enable or disable an installed extension. Chrome exposes no API to install one, so this only toggles what is already there.

set_site_permission

set one permission for one origin, for 60–600 seconds. Supported: notifications, geolocation (or location), camera, microphone. setting is allow, block, or ask. In safe, every allow requires approval; default lab applies it without elicitation (BROWSERTAPLABNOELICIT=1 semantics). Declining returns r

storage_get

read localStorage or sessionStorage. Omit key to page with offset/maxitems/maxbytes; returns nextoffset and truncated. The default timeout is 30s and a failed call does not close the MCP session.

storage_set

write one localStorage/sessionStorage value (non-string values are JSON-encoded first). Verifies by read-back, so a quota-full or privacy-mode failure is reported instead of silently lost.

switch_tab

set this MCP process's target tab for later calls. A urlpattern must match exactly one tab; if several match, select one with its full sessionid. A browser filter matching multiple profiles also requires an explicit sessionid. It does not raise the tab or focus the browser: activate defaults to fals

uninstall_extension

(no tab needed) request removal of another extension. Confirmation defaults on; set it off only for an explicitly selected disposable/test extension. Chrome can refuse either setting because a user gesture is required; changing the flag does not supply that gesture. BTAP cannot uninstall itself thro

upload_files

set files on a file input, which JavaScript cannot do (input.files is read-only). Runs as one CDP batch so the DOM node ids stay valid across the sequence.

wait_for

wait until a condition holds, then return. Use this instead of polling scanpage, which re-serializes the whole DOM each time. The server schedules short synchronous page checks under one deadline, avoiding background-page timer throttling. Exactly one condition is required. selector accepts legacy C

wait_for_url

wait for navigation to settle: blocks until the tab URL matches urlpattern (regex, or plain substring — both are tried) and, unless waitready=false, document.readyState is complete; then returns final url, title and readystate. Use after a click or openurl that navigates; waitfor(urlpattern=...) onl