All Products
Search
Document Center

AgentBay:Browser Use

Last Updated:Aug 22, 2025

Open capabilities overview

Tool

Name

Description

Support notes

Playwright

browser_close

Closes the page

Supported

browser_resize

Resizes the browser window

Supported

browser_console_messages

Returns all console messages

Supported

browser_handle_dialog

Handles a dialog box

Supported

browser_file_upload

Uploads one or more files

Supported

browser_install

Installs the browser specified in the configuration. Call this tool if you receive an error that the browser is not installed.

Supported

browser_press_key

Presses a key on the keyboard

Supported

browser_navigate

Navigates to a URL

Supported

browser_navigate_back

Navigates to the previous page

Supported

browser_navigate_forward

Navigates to the next page

Supported

browser_network_requests

Returns all network requests since the page was loaded

Supported

browser_pdf_save

Saves the page as a PDF

Supported

browser_take_screenshot

Takes a screenshot of the current page. You cannot use the screenshot to perform operations. Use browser_snapshot to perform operations.

Supported

browser_snapshot

Captures an accessibility snapshot of the current page.

Supported

browser_click

Performs a click operation on the webpage

Supported

browser_drag

Performs a drag-and-drop operation between two elements

Supported

browser_hover

Hovers the mouse over a page element

Supported

browser_type

Enters text into an editable element

Supported

browser_select_option

Selects an option in a drop-down menu

Supported

browser_tab_list

Lists the browser tabs

Supported

browser_tab_new

Opens a new tab

Supported

browser_tab_select

Selects a tab by its index

Supported

browser_tab_close

Closes a tab

Supported

browser_generate_playwright_test

Generates a Playwright test for a specified scenario

Supported

browser_wait_for

Waits for text to appear or disappear, or for a specified time to pass

Supported

Shell

shell

Executes a shell command and returns the output or an error.

Supported

FileSystem

create_directory

Creates a new directory or ensures that a directory exists. It can create multiple nested directories in a single operation. If the directory already exists, this operation succeeds silently. Ideal for setting up the required directory structure for a project or ensuring that a required path exists. Works only in allowed directories.

Supported

edit_file

Performs line-based edits on a text file. Each edit replaces an exact sequence of lines with new content. Returns a git-style diff to show the changes. Works only in allowed directories.

Supported

get_file_info

Retrieves detailed metadata for a file or directory. Returns comprehensive information including size, creation time, last modified time, permissions, and type. This tool is ideal for understanding file attributes without reading the actual content. Works only in allowed directories.

Supported

read_file

Reads the content of a file from the file system. You can specify an optional offset (in bytes) to start reading from a specific position, and an optional length (in bytes) to limit the number of bytes to read. If length is omitted or is 0, the file is read to the end. It handles various text encodings and provides detailed error messages if the file cannot be read. Works only in allowed directories.

Supported

read_multiple_files

Reads the content of multiple files at the same time. This is more efficient than reading files one by one for analyzing or comparing multiple files. The content of each file is returned with its path as a reference. A failure to read a single file does not stop the entire operation. Works only in allowed directories.

Supported

list_directory

Gets a detailed list of all files and directories in the specified path. The results clearly distinguish between files and directories with the [FILE] and [DIR] prefixes. This tool is useful for understanding the directory structure and finding specific files. Works only in allowed directories.

Supported

move_file

Moves or renames files and directories. It can move a file to a different directory and rename it in a single operation. If the destination already exists, the operation fails. It can work between different directories and can be used for simple renaming within the same directory. Both the source and destination must be in allowed directories.

Supported

search_files

Recursively searches for files and directories that match a pattern. It searches all subdirectories from the starting path. The search is case-sensitive and matches partial names. It returns the full path of all matching items. This is ideal for finding files when you do not know their exact location. Searches only in allowed directories.

Supported

write_file

Creates a new file or writes content to an existing file. You can choose to completely overwrite the file or append to the end of the file by specifying the mode parameter. Use the overwrite mode (default) to clear the file before writing, or use the append mode to add content to the end of the file. It handles text content with the appropriate encoding. Works only in allowed directories.

Supported

Playwright

Name

Description

Parameters

browser_close

Closes the page

{
  "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_resize

Resizes the browser window

{
  "inputSchema": {
    "type": "object",
    "properties": {
      "width": {
        "type": "number",
        "description": "The width of the browser window"
      },
      "height": {
        "type": "number",
        "description": "The height of the browser window"
      }
    },
    "required": ["width", "height"],
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_console_messages

Returns all console messages

{
  "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_handle_dialog

Handles a dialog box

{
  "inputSchema": {
    "type": "object",
    "properties": {
      "accept": {
        "type": "boolean",
        "description": "Specifies whether to accept the dialog box."
      },
      "promptText": {
        "type": "string",
        "description": "The prompt text in the prompt dialog box."
      }
    },
    "required": ["accept"],
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_file_upload

Uploads one or more files

{
  "inputSchema": {
    "type": "object",
    "properties": {
      "paths": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "The absolute paths of the files to upload. Can be a single file or multiple files."
      }
    },
    "required": ["paths"],
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_install

Installs the browser specified in the configuration. Call this tool if you receive an error that the browser is not installed.

{
  "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_press_key

Presses a key on the keyboard

{
  "inputSchema": {
    "type": "object",
    "properties": {
      "key": {
        "type": "string",
        "description": "The name of the key to press or the character to generate, such as `ArrowLeft` or `a`"
      }
    },
    "required": ["key"],
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_navigate

Navigates to a URL

{
  "inputSchema": {
    "type": "object",
    "properties": {
      "url": {
        "type": "string",
        "description": "The URL to navigate to"
      }
    },
    "required": ["url"],
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_navigate_back

Navigates to the previous page

{
  "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_navigate_forward

Navigates to the next page

{
  "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_network_requests

Returns all network requests since the page was loaded

{
  "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_pdf_save

Saves the page as a PDF

{
  "inputSchema": {
    "type": "object",
    "properties": {
      "filename": {
        "type": "string",
        "description": "The file name to save the PDF. If not specified, the default is `page-{timestamp}.pdf`."
      }
    },
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_take_screenshot

Takes a screenshot of the current page. You cannot use the screenshot to perform operations. Use browser_snapshot to perform operations.

{
  "inputSchema": {
    "type": "object",
    "properties": {
      "raw": {
        "type": "boolean",
        "description": "Specifies whether to return uncompressed data in PNG format. The default value is false, which returns a JPEG image."
      },
      "filename": {
        "type": "string",
        "description": "The file name to save the screenshot. If not specified, the default is `page-{timestamp}.{png|jpeg}`."
      },
      "element": {
        "type": "string",
        "description": "A human-readable description of the element used to obtain permission to take a screenshot of the element. If not provided, the screenshot is taken of the viewport. If element is provided, ref must also be provided."
      },
      "ref": {
        "type": "string",
        "description": "The reference to the target element in the page snapshot. If not provided, the screenshot is taken of the viewport. If ref is provided, element must also be provided."
      }
    },
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_snapshot

Captures an accessibility snapshot of the current page.

{
  "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_click

Performs a click operation on the webpage

{
  "inputSchema": {
    "type": "object",
    "properties": {
      "element": {
        "type": "string",
        "description": "A human-readable description of the element used to obtain permission to interact with the element"
      },
      "ref": {
        "type": "string",
        "description": "The reference to the target element in the page snapshot"
      }
    },
    "required": ["element", "ref"],
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_drag

Performs a drag-and-drop operation between two elements

{
  "inputSchema": {
    "type": "object",
    "properties": {
      "startElement": {
        "type": "string",
        "description": "A human-readable description of the source element used to obtain permission to interact with the element"
      },
      "startRef": {
        "type": "string",
        "description": "The reference to the source element in the page snapshot"
      },
      "endElement": {
        "type": "string",
        "description": "A human-readable description of the target element used to obtain permission to interact with the element"
      },
      "endRef": {
        "type": "string",
        "description": "The reference to the target element in the page snapshot"
      }
    },
    "required": ["startElement", "startRef", "endElement", "endRef"],
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_hover

Hovers the mouse over a page element

{
  "inputSchema": {
    "type": "object",
    "properties": {
      "element": {
        "type": "string",
        "description": "A human-readable description of the element used to obtain permission to interact with the element"
      },
      "ref": {
        "type": "string",
        "description": "The reference to the target element in the page snapshot"
      }
    },
    "required": ["element", "ref"],
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_type

Enters text into an editable element

{
  "inputSchema": {
    "type": "object",
    "properties": {
      "element": {
        "type": "string",
        "description": "A human-readable description of the element used to obtain permission to interact with the element"
      },
      "ref": {
        "type": "string",
        "description": "The reference to the target element in the page snapshot"
      },
      "text": {
        "type": "string",
        "description": "The text to enter into the element"
      },
      "submit": {
        "type": "boolean",
        "description": "Specifies whether to submit the entered text (press Enter after typing)"
      },
      "slowly": {
        "type": "boolean",
        "description": "Specifies whether to enter text character by character. This is useful for triggering key handlers on the page. By default, the entire text is filled at once."
      }
    },
    "required": ["element", "ref", "text"],
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_select_option

Selects an option in a drop-down menu

{
  "inputSchema": {
    "type": "object",
    "properties": {
      "element": {
        "type": "string",
        "description": "A human-readable description of the element used to obtain permission to interact with the element"
      },
      "ref": {
        "type": "string",
        "description": "The reference to the target element in the page snapshot"
      },
      "values": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "An array of values to select in the drop-down menu. Can be a single value or multiple values."
      }
    },
    "required": ["element", "ref", "values"],
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_tab_list

Lists the browser tabs

{
  "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_tab_new

Opens a new tab

{
  "inputSchema": {
    "type": "object",
    "properties": {
      "url": {
        "type": "string",
        "description": "The URL to navigate to in the new tab. If not provided, the new tab is blank."
      }
    },
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_tab_select

Selects a tab by its index

{
  "inputSchema": {
    "type": "object",
    "properties": {
      "index": {
        "type": "number",
        "description": "The index of the tab to select"
      }
    },
    "required": ["index"],
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_tab_close

Closes a tab

{
  "inputSchema": {
    "type": "object",
    "properties": {
      "index": {
        "type": "number",
        "description": "The index of the tab to close. If not provided, the current tab is closed."
      }
    },
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_generate_playwright_test

Generates a Playwright test for a specified scenario

{
  "inputSchema": {
    "type": "object",
    "properties": {
      "name": {
        "type": "string",
        "description": "The name of the test"
      },
      "description": {
        "type": "string",
        "description": "The description of the test"
      },
      "steps": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "The steps of the test"
      }
    },
    "required": ["name", "description", "steps"],
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

browser_wait_for

Waits for text to appear or disappear, or for a specified time to pass

{
  "inputSchema": {
    "type": "object",
    "properties": {
      "time": {
        "type": "number",
        "description": "The time to wait in seconds"
      },
      "text": {
        "type": "string",
        "description": "The text to wait for"
      },
      "textGone": {
        "type": "string",
        "description": "The text to wait for to disappear"
      }
    },
    "additionalProperties": false,
    "$schema": "http://json-schema.org/draft-07/schema#"
  }
}

Shell

Name

Description

Parameters

shell

Executes a shell command and returns the output or an error.

{
  "inputSchema": {
    "properties": {
      "command": {
        "description": "The command entered by the client",
        "type": "string"
      },
      "timeout_ms": {
        "default": 1000,
        "description": "The command execution timeout in milliseconds. If not specified, a default value (for example, 1000 ms) is used",
        "type": "integer"
      }
    },
    "required": ["command", "timeout_ms"],
    "type": "object"
  }
}

FileSystem

Name

Description

Parameters

create_directory

Creates a new directory or ensures that a directory exists. It can create multiple nested directories in a single operation. If the directory already exists, this operation succeeds silently. Ideal for setting up the required directory structure for a project or ensuring that a required path exists. Works only in allowed directories.

{
  "inputSchema": {
    "properties": {
      "path": {
        "description": "The path of the directory to create.",
        "type": "string"
      }
    },
    "required": ["path"],
    "type": "object"
  }
}

edit_file

Performs line-based edits on a text file. Each edit replaces an exact sequence of lines with new content. Returns a git-style diff to show the changes. Works only in allowed directories.

{
  "inputSchema": {
    "properties": {
      "dryRun": {
        "default": false,
        "description": "Previews the changes in a git-style diff format",
        "type": "boolean"
      },
      "edits": {
        "items": {
          "properties": {
            "newText": {
              "description": "The new text to replace with",
              "type": "string"
            },
            "oldText": {
              "description": "The text to search for. It must be an exact match.",
              "type": "string"
            }
          },
          "required": ["oldText", "newText"],
          "type": "object"
        },
        "type": "array"
      },
      "path": {
        "description": "The path of the file to edit.",
        "type": "string"
      }
    },
    "required": ["path", "edits"],
    "type": "object"
  }
}

get_file_info

Retrieves detailed metadata for a file or directory. Returns comprehensive information including size, creation time, last modified time, permissions, and type. This tool is ideal for understanding file attributes without reading the actual content. Works only in allowed directories.

{
  "inputSchema": {
    "properties": {
      "path": {
        "description": "The path of the file or directory to check.",
        "type": "string"
      }
    },
    "required": ["path"],
    "type": "object"
  }
}

read_file

Reads the content of a file from the file system. You can specify an optional 'offset' (in bytes) to start reading from a specific position, and an optional 'length' (in bytes) to limit the number of bytes to read. If 'length' is omitted or is 0, the file is read to the end. It handles various text encodings and provides detailed error messages if the file cannot be read. Works only in allowed directories.

{
  "inputSchema": {
    "properties": {
      "length": {
        "description": "The number of bytes to read. If omitted or 0, the file is read to the end.",
        "minimum": 0,
        "type": "integer"
      },
      "offset": {
        "default": 0,
        "description": "The byte offset from which to start reading.",
        "minimum": 0,
        "type": "integer"
      },
      "path": {
        "description": "The path of the file to read.",
        "type": "string"
      }
    },
    "required": ["path"],
    "type": "object"
  }
}

read_multiple_files

Reads the content of multiple files at the same time. This is more efficient than reading files one by one for analyzing or comparing multiple files. The content of each file is returned with its path as a reference. A failure to read a single file does not stop the entire operation. Works only in allowed directories.

{
  "inputSchema": {
    "properties": {
      "paths": {
        "description": "An array of file paths to read.",
        "items": {
          "type": "string"
        },
        "type": "array"
      }
    },
    "required": ["paths"],
    "type": "object"
  }
}

list_directory

Gets a detailed list of all files and directories in the specified path. The results clearly distinguish between files and directories with the [FILE] and [DIR] prefixes. This tool is useful for understanding the directory structure and finding specific files. Works only in allowed directories.

{
  "inputSchema": {
    "properties": {
      "path": {
        "description": "The path of the directory to list.",
        "type": "string"
      }
    },
    "required": ["path"],
    "type": "object"
  }
}

move_file

Moves or renames files and directories. It can move a file to a different directory and rename it in a single operation. If the destination already exists, the operation fails. It can work between different directories and can be used for simple renaming within the same directory. Both the source and destination must be in allowed directories.

{
  "inputSchema": {
    "properties": {
      "destination": {
        "description": "The destination path for the file or directory.",
        "type": "string"
      },
      "source": {
        "description": "The source path of the file or directory.",
        "type": "string"
      }
    },
    "required": ["source", "destination"],
    "type": "object"
  }
}

search_files

Recursively searches for files and directories that match a pattern. It searches all subdirectories from the starting path. The search is case-sensitive and matches partial names. It returns the full path of all matching items. This is ideal for finding files when you do not know their exact location. Searches only in allowed directories.

{
  "inputSchema": {
    "properties": {
      "excludePatterns": {
        "default": [],
        "description": "The patterns to exclude (optional).",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "path": {
        "description": "The directory path to start the search from.",
        "type": "string"
      },
      "pattern": {
        "description": "The pattern to match.",
        "type": "string"
      }
    },
    "required": ["path", "pattern"],
    "type": "object"
  }
}

write_file

Creates a new file or writes content to an existing file. You can choose to completely overwrite the file or append to the end of the file by specifying the mode parameter. Use the overwrite mode (default) to clear the file before writing, or use the append mode to add content to the end of the file. It handles text content with the appropriate encoding. Works only in allowed directories.

{
  "inputSchema": {
    "properties": {
      "content": {
        "description": "The content to write.",
        "type": "string"
      },
      "mode": {
        "default": "overwrite",
        "description": "The write mode: 'overwrite' clears the file, and 'append' adds to the end of the file.",
        "enum": ["overwrite", "append"],
        "type": "string"
      },
      "path": {
        "description": "The path of the file to write.",
        "type": "string"
      }
    },
    "required": ["path", "content"],
    "type": "object"
  }
}

MCP Tool List

{
    "playwright": {
        "tools": [
            {
                "name": "browser_close",
                "description": "Close the page",
                "inputSchema": {
                    "type": "object",
                    "properties": {

                    },
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_resize",
                "description": "Resize the browser window",
                "inputSchema": {
                    "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,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_console_messages",
                "description": "Returns all console messages",
                "inputSchema": {
                    "type": "object",
                    "properties": {

                    },
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_handle_dialog",
                "description": "Handle a dialog",
                "inputSchema": {
                    "type": "object",
                    "properties": {
                        "accept": {
                            "type": "boolean",
                            "description": "Whether to accept the dialog."
                        },
                        "promptText": {
                            "type": "string",
                            "description": "The text of the prompt in case of a prompt dialog."
                        }
                    },
                    "required": [
                        "accept"
                    ],
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_file_upload",
                "description": "Upload one or multiple files",
                "inputSchema": {
                    "type": "object",
                    "properties": {
                        "paths": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            },
                            "description": "The absolute paths to the files to upload. Can be a single file or multiple files."
                        }
                    },
                    "required": [
                        "paths"
                    ],
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_install",
                "description": "Install the browser specified in the config. Call this if you get an error about the browser not being installed.",
                "inputSchema": {
                    "type": "object",
                    "properties": {

                    },
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_press_key",
                "description": "Press a key on the keyboard",
                "inputSchema": {
                    "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,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_navigate",
                "description": "Navigate to a URL",
                "inputSchema": {
                    "type": "object",
                    "properties": {
                        "url": {
                            "type": "string",
                            "description": "The URL to navigate to"
                        }
                    },
                    "required": [
                        "url"
                    ],
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_navigate_back",
                "description": "Go back to the previous page",
                "inputSchema": {
                    "type": "object",
                    "properties": {

                    },
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_navigate_forward",
                "description": "Go forward to the next page",
                "inputSchema": {
                    "type": "object",
                    "properties": {

                    },
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_network_requests",
                "description": "Returns all network requests since loading the page",
                "inputSchema": {
                    "type": "object",
                    "properties": {

                    },
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_pdf_save",
                "description": "Save page as PDF",
                "inputSchema": {
                    "type": "object",
                    "properties": {
                        "filename": {
                            "type": "string",
                            "description": "File name to save the pdf to. Defaults to `page-{timestamp}.pdf` if not specified."
                        }
                    },
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_take_screenshot",
                "description": "Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions.",
                "inputSchema": {
                    "type": "object",
                    "properties": {
                        "raw": {
                            "type": "boolean",
                            "description": "Whether to return without compression (in PNG format). Default is false, which returns a JPEG image."
                        },
                        "filename": {
                            "type": "string",
                            "description": "File name to save the screenshot to. Defaults to `page-{timestamp}.{png|jpeg}` if not specified."
                        },
                        "element": {
                            "type": "string",
                            "description": "Human-readable element description used to obtain permission to screenshot the element. If not provided, the screenshot will be taken of viewport. If element is provided, ref must be provided too."
                        },
                        "ref": {
                            "type": "string",
                            "description": "Exact target element reference from the page snapshot. If not provided, the screenshot will be taken of viewport. If ref is provided, element must be provided too."
                        }
                    },
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_snapshot",
                "description": "Capture accessibility snapshot of the current page, this is better than screenshot",
                "inputSchema": {
                    "type": "object",
                    "properties": {

                    },
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_click",
                "description": "Perform click on a web page",
                "inputSchema": {
                    "type": "object",
                    "properties": {
                        "element": {
                            "type": "string",
                            "description": "Human-readable element description used to obtain permission to interact with the element"
                        },
                        "ref": {
                            "type": "string",
                            "description": "Exact target element reference from the page snapshot"
                        }
                    },
                    "required": [
                        "element",
                        "ref"
                    ],
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_drag",
                "description": "Perform drag and drop between two elements",
                "inputSchema": {
                    "type": "object",
                    "properties": {
                        "startElement": {
                            "type": "string",
                            "description": "Human-readable source element description used to obtain the permission to interact with the element"
                        },
                        "startRef": {
                            "type": "string",
                            "description": "Exact source element reference from the page snapshot"
                        },
                        "endElement": {
                            "type": "string",
                            "description": "Human-readable target element description used to obtain the permission to interact with the element"
                        },
                        "endRef": {
                            "type": "string",
                            "description": "Exact target element reference from the page snapshot"
                        }
                    },
                    "required": [
                        "startElement",
                        "startRef",
                        "endElement",
                        "endRef"
                    ],
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_hover",
                "description": "Hover over element on page",
                "inputSchema": {
                    "type": "object",
                    "properties": {
                        "element": {
                            "type": "string",
                            "description": "Human-readable element description used to obtain permission to interact with the element"
                        },
                        "ref": {
                            "type": "string",
                            "description": "Exact target element reference from the page snapshot"
                        }
                    },
                    "required": [
                        "element",
                        "ref"
                    ],
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_type",
                "description": "Type text into editable element",
                "inputSchema": {
                    "type": "object",
                    "properties": {
                        "element": {
                            "type": "string",
                            "description": "Human-readable element description used to obtain permission to interact with the element"
                        },
                        "ref": {
                            "type": "string",
                            "description": "Exact target element reference from the page snapshot"
                        },
                        "text": {
                            "type": "string",
                            "description": "Text to type into the element"
                        },
                        "submit": {
                            "type": "boolean",
                            "description": "Whether to submit entered text (press Enter after)"
                        },
                        "slowly": {
                            "type": "boolean",
                            "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."
                        }
                    },
                    "required": [
                        "element",
                        "ref",
                        "text"
                    ],
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_select_option",
                "description": "Select an option in a dropdown",
                "inputSchema": {
                    "type": "object",
                    "properties": {
                        "element": {
                            "type": "string",
                            "description": "Human-readable element description used to obtain permission to interact with the element"
                        },
                        "ref": {
                            "type": "string",
                            "description": "Exact target element reference from the page snapshot"
                        },
                        "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": [
                        "element",
                        "ref",
                        "values"
                    ],
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_tab_list",
                "description": "List browser tabs",
                "inputSchema": {
                    "type": "object",
                    "properties": {

                    },
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_tab_new",
                "description": "Open a new tab",
                "inputSchema": {
                    "type": "object",
                    "properties": {
                        "url": {
                            "type": "string",
                            "description": "The URL to navigate to in the new tab. If not provided, the new tab will be blank."
                        }
                    },
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_tab_select",
                "description": "Select a tab by index",
                "inputSchema": {
                    "type": "object",
                    "properties": {
                        "index": {
                            "type": "number",
                            "description": "The index of the tab to select"
                        }
                    },
                    "required": [
                        "index"
                    ],
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_tab_close",
                "description": "Close a tab",
                "inputSchema": {
                    "type": "object",
                    "properties": {
                        "index": {
                            "type": "number",
                            "description": "The index of the tab to close. Closes current tab if not provided."
                        }
                    },
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_generate_playwright_test",
                "description": "Generate a Playwright test for given scenario",
                "inputSchema": {
                    "type": "object",
                    "properties": {
                        "name": {
                            "type": "string",
                            "description": "The name of the test"
                        },
                        "description": {
                            "type": "string",
                            "description": "The description of the test"
                        },
                        "steps": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            },
                            "description": "The steps of the test"
                        }
                    },
                    "required": [
                        "name",
                        "description",
                        "steps"
                    ],
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "browser_wait_for",
                "description": "Wait for text to appear or disappear or a specified time to pass",
                "inputSchema": {
                    "type": "object",
                    "properties": {
                        "time": {
                            "type": "number",
                            "description": "The time to wait in seconds"
                        },
                        "text": {
                            "type": "string",
                            "description": "The text to wait for"
                        },
                        "textGone": {
                            "type": "string",
                            "description": "The text to wait for to disappear"
                        }
                    },
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            }
        ]
    },
    "cdp": {
        "tools": [
            {
                "name": "startChromeByCdp",
                "description": "Start the Chrome browser and create a CPD protocol websocket port for external debugging. The return value is the listening port.",
                "inputSchema": {
                    "type": "object",
                    "properties": {

                    },
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            },
            {
                "name": "stopChrome",
                "description": "Stop the Chrome browser",
                "inputSchema": {
                    "type": "object",
                    "properties": {

                    },
                    "additionalProperties": false,
                    "$schema": "http://json-schema.org/draft-07/schema#"
                }
            }
        ]
    },
    "shell": {
        "tools": [
            {
                "name": "shell",
                "description": "Executes an shell command with timeout and returns the output or an error on linux platform.",
                "inputSchema": {
                    "properties": {
                        "command": {
                            "description": "client input command",
                            "type": "string"
                        },
                        "timeout_ms": {
                            "default": 1000,
                            "description": "Command execution timeout (unit: milliseconds). If not specified, the default value (such as 1000 milliseconds) is used",
                            "type": "integer"
                        }
                    },
                    "required": [
                        "command",
                        "timeout_ms"
                    ],
                    "type": "object"
                }
            }
        ]
    },
    "filesystem": {
        "tools": [
            {
                "name": "create_directory",
                "description": "Create a new directory or ensure a directory exists. Can create multiple nested directories in one operation. If the directory already exists, this operation will succeed silently. Perfect for setting up directory structures for projects or ensuring required paths exist. Only works within allowed directories.",
                "inputSchema": {
                    "properties": {
                        "path": {
                            "description": "Directory path to create.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "path"
                    ],
                    "type": "object"
                }
            },
            {
                "name": "edit_file",
                "description": "Make line-based edits to a text file. Each edit replaces exact line sequences with new content. Returns a git-style diff showing the changes made. Only works within allowed directories.",
                "inputSchema": {
                    "properties": {
                        "dryRun": {
                            "default": false,
                            "description": "Preview changes using git-style diff format",
                            "type": "boolean"
                        },
                        "edits": {
                            "items": {
                                "properties": {
                                    "newText": {
                                        "description": "Text to replace with",
                                        "type": "string"
                                    },
                                    "oldText": {
                                        "description": "Text to search for - must match exactly",
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "oldText",
                                    "newText"
                                ],
                                "type": "object"
                            },
                            "type": "array"
                        },
                        "path": {
                            "description": "File path to edit.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "path",
                        "edits"
                    ],
                    "type": "object"
                }
            },
            {
                "name": "get_file_info",
                "description": "Retrieve detailed metadata about a file or directory. Returns comprehensive information including size, creation time, last modified time, permissions, and type. This tool is perfect for understanding file characteristics without reading the actual content. Only works within allowed directories.",
                "inputSchema": {
                    "properties": {
                        "path": {
                            "description": "File or directory path to inspect.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "path"
                    ],
                    "type": "object"
                }
            },
            {
                "name": "read_file",
                "description": "Read the contents of a file from the file system. You can specify an optional 'offset' (in bytes) to start reading from a specific position, and an optional 'length' (in bytes) to limit how many bytes to read. If 'length' is omitted or 0, the file will be read to the end. Handles various text encodings and provides detailed error messages if the file cannot be read. Only works within allowed directories.",
                "inputSchema": {
                    "properties": {
                        "length": {
                            "description": "Number of bytes to read. If omitted or 0, read to end of file.",
                            "minimum": 0,
                            "type": "integer"
                        },
                        "offset": {
                            "default": 0,
                            "description": "Start reading from this byte offset.",
                            "minimum": 0,
                            "type": "integer"
                        },
                        "path": {
                            "description": "File path to read.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "path"
                    ],
                    "type": "object"
                }
            },
            {
                "name": "read_multiple_files",
                "description": "Read the contents of multiple files simultaneously. This is more efficient than reading files one by one when you need to analyze or compare multiple files. Each file's content is returned with its path as a reference. Failed reads for individual files won't stop the entire operation. Only works within allowed directories.",
                "inputSchema": {
                    "properties": {
                        "paths": {
                            "description": "Array of file paths to read.",
                            "items": {
                                "type": "string"
                            },
                            "type": "array"
                        }
                    },
                    "required": [
                        "paths"
                    ],
                    "type": "object"
                }
            },
            {
                "name": "list_directory",
                "description": "Get a detailed listing of all files and directories in a specified path. Results clearly distinguish between files and directories with [FILE] and [DIR] prefixes. This tool is essential for understanding directory structure and finding specific files within a directory. Only works within allowed directories.",
                "inputSchema": {
                    "properties": {
                        "path": {
                            "description": "Directory path to list.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "path"
                    ],
                    "type": "object"
                }
            },
            {
                "name": "move_file",
                "description": "Move or rename files and directories. Can move files between directories and rename them in a single operation. If the destination exists, the operation will fail. Works across different directories and can be used for simple renaming within the same directory. Both source and destination must be within allowed directories.",
                "inputSchema": {
                    "properties": {
                        "destination": {
                            "description": "Destination file or directory path.",
                            "type": "string"
                        },
                        "source": {
                            "description": "Source file or directory path.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "source",
                        "destination"
                    ],
                    "type": "object"
                }
            },
            {
                "name": "search_files",
                "description": "Recursively search for files and directories matching a pattern. Searches through all subdirectories from the starting path. The search is case-sensitive and matches partial names. Returns full paths to all matching items. Great for finding files when you don't know their exact location. Only searches within allowed directories.",
                "inputSchema": {
                    "properties": {
                        "excludePatterns": {
                            "default": [

                            ],
                            "description": "Patterns to exclude (optional).",
                            "items": {
                                "type": "string"
                            },
                            "type": "array"
                        },
                        "path": {
                            "description": "Directory path to start search.",
                            "type": "string"
                        },
                        "pattern": {
                            "description": "Pattern to match.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "path",
                        "pattern"
                    ],
                    "type": "object"
                }
            },
            {
                "name": "write_file",
                "description": "Create a new file or write content to an existing file. You can choose to completely overwrite the file or append to the end by specifying the 'mode' parameter. Use 'overwrite' mode (default) to clear the file before writing, or 'append' mode to add content to the end of the file. Handles text content with proper encoding. Only works within allowed directories.",
                "inputSchema": {
                    "properties": {
                        "content": {
                            "description": "Content to write.",
                            "type": "string"
                        },
                        "mode": {
                            "default": "overwrite",
                            "description": "Write mode: 'overwrite' to clear file, 'append' to add to end.",
                            "enum": [
                                "overwrite",
                                "append"
                            ],
                            "type": "string"
                        },
                        "path": {
                            "description": "File path to write.",
                            "type": "string"
                        }
                    },
                    "required": [
                        "path",
                        "content"
                    ],
                    "type": "object"
                }
            }
        ]
    }
}