browser_clickPerform click on a web pageInput schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"element": {
"description": "Human-readable element description used to obtain permission to interact with the element",
"type": "string"
},
"target": {
"type": "string",
"description": "Exact target element reference from the page snapshot, or a unique element selector"
},
"doubleClick": {
"description": "Whether to perform a double click instead of a single click",
"type": "boolean"
},
"button": {
"description": "Button to click, defaults to left",
"type": "string",
"enum": [
"left",
"right",
"middle"
]
},
"modifiers": {
"description": "Modifier keys to press",
"type": "array",
"items": {
"type": "string",
"enum": [
"Alt",
"Control",
"ControlOrMeta",
"Meta",
"Shift"
]
}
}
},
"required": [
"target"
],
"additionalProperties": false
}Annotations{
"title": "Click",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | WritesDestructiveOpen world | — |
browser_closeClose the pageInput schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Annotations{
"title": "Close browser",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | WritesDestructiveOpen world | — |
browser_console_messagesReturns all console messagesInput schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"level": {
"default": "info",
"description": "Level of the console messages to return. Each level includes the messages of more severe levels. Defaults to \"info\".",
"type": "string",
"enum": [
"error",
"warning",
"info",
"debug"
]
},
"all": {
"description": "Return all console messages since the beginning of the session, not just since the last navigation. Defaults to false.",
"type": "boolean"
},
"filename": {
"description": "Filename to save the console messages to. If not provided, messages are returned as text.",
"type": "string"
}
},
"required": [
"level"
],
"additionalProperties": false
}Annotations{
"title": "Get console messages",
"readOnlyHint": true,
"destructiveHint": false,
"openWorldHint": true
} | — | Read onlyNon-destructiveOpen world | — |
browser_dragPerform drag and drop between two elementsInput schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"startElement": {
"description": "Human-readable source element description used to obtain the permission to interact with the element",
"type": "string"
},
"startTarget": {
"type": "string",
"description": "Exact target element reference from the page snapshot, or a unique element selector"
},
"endElement": {
"description": "Human-readable target element description used to obtain the permission to interact with the element",
"type": "string"
},
"endTarget": {
"type": "string",
"description": "Exact target element reference from the page snapshot, or a unique element selector"
}
},
"required": [
"startTarget",
"endTarget"
],
"additionalProperties": false
}Annotations{
"title": "Drag mouse",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | WritesDestructiveOpen world | — |
browser_dropDrop files or MIME-typed data onto an element, as if dragged from outside the page. At least one of "paths" or "data" must be provided.Input schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"element": {
"description": "Human-readable element description used to obtain permission to interact with the element",
"type": "string"
},
"target": {
"type": "string",
"description": "Exact target element reference from the page snapshot, or a unique element selector"
},
"paths": {
"description": "Absolute paths to files to drop onto the element.",
"type": "array",
"items": {
"type": "string"
}
},
"data": {
"description": "Data to drop, as a map of MIME type to string value (e.g. {\"text/plain\": \"hello\", \"text/uri-list\": \"https://example.com\"}).",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"target"
],
"additionalProperties": false
}Annotations{
"title": "Drop files or data onto an element",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | WritesDestructiveOpen world | — |
browser_evaluateEvaluate JavaScript expression on page or elementInput schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"element": {
"description": "Human-readable element description used to obtain permission to interact with the element",
"type": "string"
},
"target": {
"description": "Exact target element reference from the page snapshot, or a unique element selector",
"type": "string"
},
"function": {
"type": "string",
"description": "() => { /* code */ } or (element) => { /* code */ } when element is provided"
},
"filename": {
"description": "Filename to save the result to. If not provided, result is returned as text.",
"type": "string"
}
},
"required": [
"function"
],
"additionalProperties": false
}Annotations{
"title": "Evaluate JavaScript",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | WritesDestructiveOpen world | — |
browser_file_uploadUpload one or multiple filesInput schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"paths": {
"description": "The absolute paths to the files to upload. Can be single file or multiple files. If omitted, file chooser is cancelled.",
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
}Annotations{
"title": "Upload files",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | WritesDestructiveOpen world | — |
browser_fill_formFill multiple form fieldsInput schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"element": {
"description": "Human-readable element description used to obtain permission to interact with the element",
"type": "string"
},
"target": {
"type": "string",
"description": "Exact target element reference from the page snapshot, or a unique element selector"
},
"name": {
"type": "string",
"description": "Human-readable field name"
},
"type": {
"type": "string",
"enum": [
"textbox",
"checkbox",
"radio",
"combobox",
"slider"
],
"description": "Type of the field"
},
"value": {
"type": "string",
"description": "Value to fill in the field. If the field is a checkbox, the value should be `true` or `false`. If the field is a combobox, the value should be the text of the option."
}
},
"required": [
"target",
"name",
"type",
"value"
],
"additionalProperties": false
},
"description": "Fields to fill in"
}
},
"required": [
"fields"
],
"additionalProperties": false
}Annotations{
"title": "Fill form",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | WritesDestructiveOpen world | — |
browser_findSearch the accessibility snapshot of the current page for text or a regular expression. Returns matching snapshot nodes with a few lines of surrounding context (like search snippets), each shown under its path from the root of the tree, which is cheaper than capturing the whole snapshot when you only need to locate an element and its ref.Input schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"text": {
"description": "Plain text to search for in the page snapshot (case-insensitive substring match). Provide either text or regex, not both.",
"type": "string"
},
"regex": {
"description": "Regular expression to search for in the page snapshot. Matching is case-sensitive by default; wrap the pattern in slashes to add flags, e.g. \"/error/i\" for case-insensitive. Provide either text or regex, not both.",
"type": "string"
}
},
"additionalProperties": false
}Annotations{
"title": "Find in page snapshot",
"readOnlyHint": true,
"destructiveHint": false,
"openWorldHint": true
} | — | Read onlyNon-destructiveOpen world | — |
browser_handle_dialogHandle a dialogInput schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"accept": {
"type": "boolean",
"description": "Whether to accept the dialog."
},
"promptText": {
"description": "The text of the prompt in case of a prompt dialog.",
"type": "string"
}
},
"required": [
"accept"
],
"additionalProperties": false
}Annotations{
"title": "Handle a dialog",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | WritesDestructiveOpen world | — |
browser_hoverHover over element on pageInput schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"element": {
"description": "Human-readable element description used to obtain permission to interact with the element",
"type": "string"
},
"target": {
"type": "string",
"description": "Exact target element reference from the page snapshot, or a unique element selector"
}
},
"required": [
"target"
],
"additionalProperties": false
}Annotations{
"title": "Hover mouse",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | WritesDestructiveOpen world | — |
browser_navigateNavigate to a URLInput schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The URL to navigate to"
}
},
"required": [
"url"
],
"additionalProperties": false
}Annotations{
"title": "Navigate to a URL",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | WritesDestructiveOpen world | — |
browser_navigate_backGo back to the previous page in the historyInput schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Annotations{
"title": "Go back",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | WritesDestructiveOpen world | — |
browser_network_requestReturns full details (headers and body) of a single network request, or a single part if `part` is set. Use the number from browser_network_requests.Input schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"index": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "1-based index of the request, as printed by browser_network_requests."
},
"part": {
"description": "Return only this part of the request. Omit to return full details.",
"type": "string",
"enum": [
"request-headers",
"request-body",
"response-headers",
"response-body"
]
},
"filename": {
"description": "Filename to save the result to. If not provided, output is returned as text.",
"type": "string"
}
},
"required": [
"index"
],
"additionalProperties": false
}Annotations{
"title": "Show network request details",
"readOnlyHint": true,
"destructiveHint": false,
"openWorldHint": true
} | — | Read onlyNon-destructiveOpen world | — |
browser_network_requestsReturns a numbered list of network requests since loading the page. Use browser_network_request with the number to get full details.Input schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"static": {
"default": false,
"description": "Whether to include successful static resources like images, fonts, scripts, etc. Defaults to false.",
"type": "boolean"
},
"filter": {
"description": "Only return requests whose URL matches this regexp (e.g. \"/api/.*user\").",
"type": "string"
},
"filename": {
"description": "Filename to save the network requests to. If not provided, requests are returned as text.",
"type": "string"
}
},
"required": [
"static"
],
"additionalProperties": false
}Annotations{
"title": "List network requests",
"readOnlyHint": true,
"destructiveHint": false,
"openWorldHint": true
} | — | Read onlyNon-destructiveOpen world | — |
browser_press_keyPress a key on the keyboardInput schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Name of the key to press or a character to generate, such as `ArrowLeft` or `a`"
}
},
"required": [
"key"
],
"additionalProperties": false
}Annotations{
"title": "Press a key",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | WritesDestructiveOpen world | — |
browser_resizeResize the browser windowInput schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"width": {
"type": "number",
"description": "Width of the browser window"
},
"height": {
"type": "number",
"description": "Height of the browser window"
}
},
"required": [
"width",
"height"
],
"additionalProperties": false
}Annotations{
"title": "Resize browser window",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | WritesDestructiveOpen world | — |
browser_run_code_unsafeRun a Playwright code snippet. Unsafe: executes arbitrary JavaScript in the Playwright server process and is RCE-equivalent.Input schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"code": {
"description": "A JavaScript function containing Playwright code to execute. It will be invoked with a single argument, page, which you can use for any page interaction. For example: `async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }`",
"type": "string"
},
"filename": {
"description": "Load code from the specified file. If both code and filename are provided, code will be ignored.",
"type": "string"
}
},
"additionalProperties": false
}Annotations{
"title": "Run Playwright code (unsafe)",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | WritesDestructiveOpen world | — |
browser_select_optionSelect an option in a dropdownInput schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"element": {
"description": "Human-readable element description used to obtain permission to interact with the element",
"type": "string"
},
"target": {
"type": "string",
"description": "Exact target element reference from the page snapshot, or a unique element selector"
},
"values": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of values to select in the dropdown. This can be a single value or multiple values."
}
},
"required": [
"target",
"values"
],
"additionalProperties": false
}Annotations{
"title": "Select option",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | WritesDestructiveOpen world | — |
browser_snapshotCapture accessibility snapshot of the current page, this is better than screenshotInput schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"target": {
"description": "Exact target element reference from the page snapshot, or a unique element selector",
"type": "string"
},
"filename": {
"description": "Save snapshot to markdown file instead of returning it in the response.",
"type": "string"
},
"depth": {
"description": "Limit the depth of the snapshot tree",
"type": "number"
},
"boxes": {
"description": "Include each element's bounding box as [box=x,y,width,height] in the snapshot. Coordinates are viewport-relative, in CSS pixels (Element.getBoundingClientRect)",
"type": "boolean"
}
},
"additionalProperties": false
}Annotations{
"title": "Page snapshot",
"readOnlyHint": true,
"destructiveHint": false,
"openWorldHint": true
} | — | Read onlyNon-destructiveOpen world | — |
browser_tabsList, create, close, or select a browser tab.Input schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"list",
"new",
"close",
"select"
],
"description": "Operation to perform"
},
"index": {
"description": "Tab index, used for close/select. If omitted for close, current tab is closed.",
"type": "number"
},
"url": {
"description": "URL to navigate to in the new tab, used for new.",
"type": "string"
}
},
"required": [
"action"
],
"additionalProperties": false
}Annotations{
"title": "Manage tabs",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | WritesDestructiveOpen world | — |
browser_take_screenshotTake a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions.Input schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"element": {
"description": "Human-readable element description used to obtain permission to interact with the element",
"type": "string"
},
"target": {
"description": "Exact target element reference from the page snapshot, or a unique element selector",
"type": "string"
},
"type": {
"description": "Image format for the screenshot. If unset, inferred from the filename extension, otherwise png.",
"type": "string",
"enum": [
"png",
"jpeg",
"webp"
]
},
"filename": {
"description": "File name to save the screenshot to. Defaults to `page-{timestamp}.{png|jpeg|webp}` if not specified. Prefer relative file names to stay within the output directory.",
"type": "string"
},
"fullPage": {
"description": "When true, takes a screenshot of the full scrollable page, instead of the currently visible viewport. Cannot be used with element screenshots.",
"type": "boolean"
},
"scale": {
"default": "css",
"description": "Image resolution scale. \"css\" produces a screenshot sized in CSS pixels (smaller, consistent across devices). \"device\" produces a high-resolution screenshot using device pixels (larger, accounts for the device pixel ratio). Default is css.",
"type": "string",
"enum": [
"css",
"device"
]
}
},
"required": [
"scale"
],
"additionalProperties": false
}Annotations{
"title": "Take a screenshot",
"readOnlyHint": true,
"destructiveHint": false,
"openWorldHint": true
} | — | Read onlyNon-destructiveOpen world | — |
browser_typeType text into editable elementInput schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"element": {
"description": "Human-readable element description used to obtain permission to interact with the element",
"type": "string"
},
"target": {
"type": "string",
"description": "Exact target element reference from the page snapshot, or a unique element selector"
},
"text": {
"type": "string",
"description": "Text to type into the element"
},
"submit": {
"description": "Whether to submit entered text (press Enter after)",
"type": "boolean"
},
"slowly": {
"description": "Whether to type one character at a time. Useful for triggering key handlers in the page. By default entire text is filled in at once.",
"type": "boolean"
}
},
"required": [
"target",
"text"
],
"additionalProperties": false
}Annotations{
"title": "Type text",
"readOnlyHint": false,
"destructiveHint": true,
"openWorldHint": true
} | — | WritesDestructiveOpen world | — |
browser_wait_forWait for text to appear or disappear or a specified time to passInput schema{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"time": {
"description": "The time to wait in seconds",
"type": "number"
},
"text": {
"description": "The text to wait for",
"type": "string"
},
"textGone": {
"description": "The text to wait for to disappear",
"type": "string"
}
},
"additionalProperties": false
}Annotations{
"title": "Wait for",
"readOnlyHint": true,
"destructiveHint": false,
"openWorldHint": true
} | — | Read onlyNon-destructiveOpen world | — |