mait.sh1.132.1

Private beta: features and content may change. No warranty; use at your own risk.

Tools

Everything your agent can do in a browser, grouped by purpose, with the rules that apply to each group.

Beta
Overview

Browser, group and page tools, side by side.

MCP Playwright gives your agent two kinds of tools: browser and group tools written for this service, and the page tools of the Playwright MCP server (read, click, type and so on), which each take one added browserId parameter so a call names the browser it acts on. Two page tools, browser_run_code_unsafe and browser_get_config, are not exposed. Your client's tool list is the authority for what is available, because the page tools come from the installed integration and can differ between versions.

mcp-playwrightmait2.2.10the service
@playwright/mcpupstream0.0.80the upstream page tools
Playwrightupstream1.63.0the upstream engine library
Browser buildsChromium 1243 · Firefox 1543installed with the integration
Browsers

Start, list and stop browsers.

ToolUse it toParameters
browser_startStart one browser, Chromium or Firefox, and get back its browser id. This is how a browser gets its id, so one session can hold several browsers at once.browser (required: chromium or firefox), env (optional object of string overrides)
browser_listSee which browsers are running in this session, each with its id.none
browser_stopEnd one browser, finish its video recording and publish its last resources.browserId (required)
browser_closeClose only the current page; the browser keeps runningbrowserId (required)

Why: start one browser per account, engine or viewport you need to keep apart; each has its own page and website state. List before you reuse an id, and stop what you started: stopping is also what finalizes a video recording.

Only browser and env are advertised on browser_start. The service also accepts the structured options below when your client can send them; each one becomes one PLAYWRIGHT_MCP_* variable for that browser, and an explicit env entry wins on conflict.

OptionVariableUse it to
initialUrlnoneLoad a first page at launch; the default is a blank page.
gpuPLAYWRIGHT_MCP_GPUChoose how the browser renders: automatic, off, or a hardware path for Apple, Linux GPU devices (dri), WSL2 GPU (dxg), NVIDIA or ROCm. The start fails if a known software renderer shows up on a hardware path.
viewport_sizePLAYWRIGHT_MCP_VIEWPORT_SIZEFix the viewport at start, such as 390x844
devicePLAYWRIGHT_MCP_DEVICEEmulate a phone or tablet, such as iPhone 15
user_agentPLAYWRIGHT_MCP_USER_AGENTPresent a specific browser identity
save_videoPLAYWRIGHT_MCP_SAVE_VIDEORecord the whole session as a WebM video at the size you give. The recording is finished and published as a resource when you stop the browser.
storage_state, save_sessionPLAYWRIGHT_MCP_STORAGE_STATE, PLAYWRIGHT_MCP_SAVE_SESSIONStart signed in from a saved state; save session state on stop
isolatedPLAYWRIGHT_MCP_ISOLATEDRun in an isolated context
proxy_server, proxy_bypassPLAYWRIGHT_MCP_PROXY_SERVER, PLAYWRIGHT_MCP_PROXY_BYPASSRoute traffic through a proxy; skip it for listed domains
grant_permissionsPLAYWRIGHT_MCP_GRANT_PERMISSIONSPre-approve browser permissions, such as geolocation
timeout_action, timeout_navigationPLAYWRIGHT_MCP_TIMEOUT_ACTION, PLAYWRIGHT_MCP_TIMEOUT_NAVIGATIONTune how long actions and navigations may take (ms)
console_levelPLAYWRIGHT_MCP_CONSOLE_LEVELCapture only messages at or above a level
init_scriptPLAYWRIGHT_MCP_INIT_SCRIPTRun a script before every page
snapshot_mode, output_mode, caps, test_id_attributePLAYWRIGHT_MCP_*Adjust snapshots, output, capabilities and the test-id attribute

HEADLESS is set through env: "false" opens a visible window and needs a display your environment already provides.

Read

Read what is on the page.

ToolUse it toKey parameters
browser_snapshotRead the page as accessible text with element references. With filename the snapshot is saved inside the session and published as a resource. Upstream tool.depth, boxes (bounding boxes), target, filename, browserId
browser_findLocate text or a pattern in the snapshot without reading all of ittext or regex (one of them)
browser_take_screenshotCapture the page or one element. The image is published as a resource and left out of the reply unless you pass inlineImage; images over 512 KiB stay resource-only. Upstream tool.type (png, jpeg, webp), fullPage, target, scale (css or device), filename, inlineImage (default false), browserId
browser_evaluateRun JavaScript in the page and return the resultfunction (required), target, filename
browser_console_messagesRead console outputlevel (required: error, warning, info, debug), all, filename
browser_network_requestsList requests since the page loadedstatic (required), filter (URL pattern), filename
browser_network_requestRead the full detail of one listed requestindex (required, from the list), part, filename
browser_generate_locatorGet a stable locator for an element, for test codetarget
browser_pdf_saveSave the page as a PDF. Saved inside the session and published as a resource you fetch by address. Upstream tool.filename, browserId

Why: prefer browser_snapshot and browser_find for understanding a page, since they return text, and use browser_take_screenshot when the appearance is the question or you need evidence for a person. Read browser_console_messages and browser_network_requests when something looks wrong. Screenshots, PDFs, traces and videos are published as resources: read the exact address the result returns instead of expecting image data in the reply. Pass inlineImage: true to get the image in the reply too; images over 512 KiB (the default MCP_INLINE_IMAGE_MAX_BYTES) are still returned as a resource only. For the tools that write files (browser_snapshot, browser_take_screenshot, browser_pdf_save, tracing and video), filename must be relative, without .., and inside a group call it gains the browser id as a suffix.

Act

Click, type and move through pages.

ToolUse it toKey parameters
browser_navigate, browser_navigate_backOpen a URL or go backurl
browser_clickClick, double-click or right-clicktarget (required), button, doubleClick, modifiers
browser_typeType into an editable elementtarget, text (required), submit (press Enter), slowly
browser_fill_formFill several fields at oncefields: list of name, type (textbox, checkbox, radio, combobox, slider), target, value
browser_select_optionChoose option values in a dropdowntarget, values
browser_press_keySend a key such as ArrowLeft or Enterkey
browser_hover, browser_drag, browser_dropHover, drag between elements or droptarget; startTarget and endTarget for drag
browser_mouse_click_xy, browser_mouse_move_xy, browser_mouse_drag_xy, browser_mouse_down, browser_mouse_up, browser_mouse_wheelAct by coordinates when an element has no usable referencecoordinates
browser_file_uploadUpload files through a file chooserpaths: absolute paths on the service host
browser_handle_dialogAccept or dismiss an alert, confirm or promptaccept (required), promptText
browser_wait_forWait for text to appear or vanish, or for time to passtext, textGone, time (seconds)
browser_tabsList, open, close or select a tabaction (required: list, new, close, select), index, url
browser_resizeChange the window sizewidth, height
browser_resumeResume a run that was paused, optionally one step at a timestep, location

Why: target is the element reference from the latest browser_snapshot, or a unique selector; the optional element is a human description that helps your client ask for permission. Actions can change real accounts and uploads read files from the service host, so keep to the task's authorized scope.

State

Keep sign-in state and shape the network.

ToolUse it toKey parameters
browser_storage_stateSave cookies and local storage to a filefilename
browser_set_storage_stateRestore a saved state into a browserthe state file
browser_cookie_list, _get, _set, _delete, _clearWork with cookiesname, value (required to set); domain, path, expires, httpOnly, secure, sameSite
browser_localstorage_*, browser_sessionstorage_*List, read, set, delete or clear storage entrieskey and value
browser_route, browser_route_list, browser_unrouteMock responses for matching requestspattern (required), status, body, contentType, headers, removeHeaders
browser_network_state_setGo offline or back onlinestate (online or offline)

Why: save a signed-in state once and restore it into later browsers instead of logging in again, and treat the file as a credential. Route and offline mode let you test failure paths, such as a slow or failing API, without touching the real service.

Verify

Check that the page shows what you expect.

ToolUse it toKey parameters
browser_verify_text_visibleAssert that text is visibletext
browser_verify_element_visible, browser_verify_list_visible, browser_verify_valueAssert an element, a list or a field valueelement references and expected values

Why: an assertion tool fails loudly where reading a snapshot relies on judgement. A successful call still only says the check passed on that page state.

Record

Record the run and mark up the page.

ToolUse it toKey parameters
browser_start_video, browser_stop_videoRecord a video and finish it. The finished files are published as resources, one per open page. Upstream tool.size (width, height), filename, browserId
browser_video_chapterAdd a chapter card to the recordingtitle (required), description, duration (ms)
browser_video_show_actions, browser_video_hide_actionsShow or hide action overlays in the recordingnone
browser_start_tracing, browser_stop_tracingCapture a trace for later inspection. The trace file is published as a resource. Upstream tool.browserId
browser_start_recording, browser_stop_recordingRecord the actions you perform as Playwright code. The code is also published as a resource you can fetch. Upstream tool.browserId
browser_annotateLet you draw annotations on the page and return them with a screenshotnone
browser_highlight, browser_hide_highlightShow a persistent outline around an elementtarget, style

Why: video and trace give reviewers the run; recording turns a flow you perform into code; annotation lets you point at the problem. Video can contain private page content.

Groups

Run one call across several browsers.

ToolUse it toParameters
browser_group_createName an ordered set of running browsers so you can drive them together. Groups exist only in MCP Playwright.groupId, browserIds (both required)
browser_group_callRun one page tool across every browser in a group. You get one result per browser, and the browser id is added to every saved file name so members do not overwrite each other.groupId, tool (required, any page tool), args, perBrowser
browser_group_listList your groups and their members.none
browser_group_deleteRemove a group; its browsers keep running.groupId
browser_group_closeStop every browser in a group, and by default delete the group as well.groupId, deleteGroup (default true)
json
{ "groupId": "comparison", "tool": "browser_take_screenshot",
  "args": { "type": "jpeg", "filename": "cross-engine.jpg" } }

The result is { groupId, summary: { total, ok, errors }, results: [ { browserId, ok, result | error } ], firstError? }: one full result per browser. args apply to every member and perBrowser merges extra arguments for one browser only. File-saving tools get the browser id appended to their filename so members do not collide, and calls run with bounded concurrency (MCP_GROUP_MAX_CONCURRENCY, default 8). A group id that names a single browser behaves like a direct call. There is no rollback across browsers, and grouped captures do not publish per-member resources, so capture each browser directly when you need resource addresses.