camoufox-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@camoufox-mcpGo to google.com and search for 'camoufox browser'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Camoufox MCP Server
Deprecated: moved to camoufox-browser
This repository is deprecated. The project has moved to:
Repository: https://github.com/rlgrpe/camoufox-browser-cli
A Python MCP (Model Context Protocol) server providing full browser automation with Camoufox anti-detection capabilities.
Features
21 browser automation tools for complete browser control
Anti-detection: Automatic fingerprint randomization to avoid bot detection
Lazy initialization: Browser only launches on first tool call
Persistent sessions: Browser persists between tool calls
Tab management: Support for multiple tabs/pages
Form automation: Fill forms, upload files, handle dialogs
Related MCP server: Camoufox Browser MCP
Installation
Quick Start (uvx - recommended)
uvx camoufox-mcpUsing pipx
pipx run camoufox-mcpUsing pip
pip install camoufox-mcp
camoufox-mcpFrom source
# Clone the repository
git clone https://github.com/rlgrpe/camoufox-mcp-python.git
cd camoufox-mcp-python
# Install with uv
uv syncInstall Camoufox browser
After installing the package, you need to download the Camoufox browser binary. The command depends on how you installed the package:
If installed via uvx (recommended)
uvx camoufox fetchIf installed via pipx
pipx run camoufox fetchIf installed via pip
# macOS
python3 -m camoufox fetch
# Linux
python -m camoufox fetch
# Windows
camoufox fetchIf installed from source (uv)
uv run python -m camoufox fetchLinux system dependencies
On Linux, you also need to install system dependencies:
# Ubuntu/Debian
sudo apt install -y libgtk-3-0 libx11-xcb1 libasound2
# Arch
sudo pacman -S gtk3 libx11 libxcb cairo libasound alsa-libTo uninstall the browser binary
# Use the same method as installation:
uvx camoufox remove # if using uvx
pipx run camoufox remove # if using pipx
camoufox remove # if using pip
uv run python -m camoufox remove # if using uv from sourceUsage
Start the server
# Using uvx (recommended)
uvx camoufox-mcp
# Using uv (from source)
uv run camoufox-mcp
# Or as a module
python -m camoufox_mcpAdd to Claude Code
claude mcp add camoufox-mcp -- uvx camoufox-mcpClaude Desktop Configuration
Add to your Claude Desktop config file:
{
"mcpServers": {
"camoufox-mcp": {
"command": "uvx",
"args": ["camoufox-mcp"]
}
}
}Or if running from source:
{
"mcpServers": {
"camoufox-mcp": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/camoufox-mcp-python",
"camoufox-mcp"
]
}
}
}Tools Reference
Navigation (4 tools)
Tool | Description |
| Navigate to a URL |
| Go back to the previous page |
| Capture accessibility snapshot of the current page |
| Wait for text to appear/disappear or a specified time |
Interaction (6 tools)
Tool | Description |
| Click on an element |
| Type text into an element |
| Hover over an element |
| Drag and drop between two elements |
| Press a key on the keyboard |
| Select an option in a dropdown |
Page (4 tools)
Tool | Description |
| Evaluate JavaScript on the page or element |
| Get console messages |
| Get network requests |
| Take a screenshot |
Forms (3 tools)
Tool | Description |
| Fill multiple form fields |
| Upload files |
| Handle dialogs (alert, confirm, prompt) |
Session (4 tools)
Tool | Description |
| List, create, close, or select tabs |
| Resize the browser window |
| Close the browser |
| Install Camoufox browser |
Configuration
The browser can be configured via the BrowserConfig class in camoufox_mcp/config.py. Available options:
Parameter | Type | Default | Description |
| str | None | OS to spoof (windows/macos/linux) |
| bool/str | False | Headless mode (or 'virtual') |
| bool/float | True | Human-like cursor movements |
| bool | True | Auto-detect geolocation from IP |
| str/dict | None | Proxy configuration |
| bool | True | Block WebRTC leaks |
| bool | False | Block WebGL fingerprinting |
| bool | False | Block image loading |
| str | None | Browser locale |
| dict | None | Viewport dimensions |
| bool | True | Enable caching |
| int | 30000 | Page load timeout (ms) |
| str | "domcontentloaded" | Wait strategy |
| bool | False | Enable uBlock Origin |
Proxy Configuration Example
proxy = {
'server': 'http://proxy.example.com:8080',
'username': 'user',
'password': 'pass'
}Development
# Install dev dependencies
uv sync --dev
# Run tests
uv run pytest
# Format code
uv run ruff format
# Lint
uv run ruff checkLicense
MIT License - see LICENSE for details.
Related Projects
Available Tools
22 toolsbrowser_clickA
Perform click on a web page element.
Args:
element: Human-readable element description
ref: Exact target element reference from the page snapshot
button: Button to click (left, right, middle). Defaults to left.
double_click: Whether to perform a double click
Returns:
Success message
| Name | Required | Description | Default |
|---|---|---|---|
| element | Yes | ||
| ref | Yes | ||
| button | No | left | |
| double_click | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose all behavioral traits. It only states 'Perform click' and 'Returns: Success message,' omitting details like possible side effects (navigation, form submission), error conditions, or timing behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear purpose sentence and then structured with Args/Returns. It is concise enough, though the docstring format adds some verbosity. No wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers parameters and return type but lacks depth on behavioral outcomes (e.g., page state changes) and does not reference the existing output schema. It is adequate for simple use but incomplete for complex scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description provides clear, human-readable explanations for all four parameters, including that 'ref' is from a page snapshot and the 'button' options with defaults. This adds essential meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Perform click on a web page element,' which clearly states the action and target. The tool name and description distinguish it from sibling tools like 'browser_hover' or 'browser_type'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., browser_hover, browser_type, or browser_fill_form). The description lacks context on prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_closeA
Close the browser.
This will terminate the browser instance and clean up all resources.
A new browser will be launched on the next navigation command.
Returns:
Success message
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the browser instance is terminated and resources cleaned up, and that a new browser launches on next navigation. However, it could mention that current tabs and state are lost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: a short headline followed by two brief but informative sentences. Every sentence adds value without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and a simple termination action, the description fully explains what happens (close, cleanup) and the consequence (new browser on next navigation). It also mentions the return value. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema is empty. The description adds value by explaining the action's effect, which is sufficient for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Close the browser' with specific details about termination and cleanup, which distinguishes it from sibling tools like browser_navigate or browser_click.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that the tool should be used when done browsing, and that a new browser will launch on next navigation, but it does not explicitly state when to use it versus alternatives or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_configureA
Configure proxy before launching browser.
Call BEFORE browser_navigate. If browser running, call browser_close first.
Args:
proxy: Supports formats:
- login:password@ip:port
- ip:port:login:password
- http://login:password@ip:port
- ip:port
Returns:
Status message
| Name | Required | Description | Default |
|---|---|---|---|
| proxy | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It reveals the configuration action and call order but does not mention error behavior (e.g., invalid proxy format) or side effects beyond configuration. Still, it covers the main behavioral intent well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, followed by usage guidelines, then parameter explanation. Every sentence serves a purpose, with no redundant text. Ideal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one optional parameter, no required params, and a simple purpose, the description fully covers what the agent needs: purpose, usage, parameter details, and return value. No gaps for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates by detailing proxy formats in four variations. This adds significant meaning beyond the schema's mere type definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool configures proxy before launching a browser, using specific verb 'Configure' and resource 'proxy'. It distinguishes from sibling tools like browser_navigate and browser_install by focusing on proxy configuration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit instructions 'Call BEFORE browser_navigate. If browser running, call browser_close first.' provide clear when-to-use and prerequisites, which is excellent for agent guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_console_messagesB
Returns all console messages.
Args:
level: Minimum level of messages to return. Each level includes
messages of more severe levels. Defaults to "info".
Returns:
Formatted console messages
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | info |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but omits behavioral details such as whether the console is cleared after retrieval, prerequisites (e.g., page must be loaded), or side effects. The level hierarchy is explained but broader behavioral context is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and structured with Args and Returns sections. It front-loads the core purpose. While efficient, a bit more context on the resource (browser console) could improve it without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description adequately covers return values implicitly. However, it lacks context about what console messages are (browser console) and how this tool relates to sibling tools for network requests or dialogs. It is minimally complete for a simple tool but leaves gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The explanation of the 'level' parameter adds significant value beyond the schema: it clarifies the hierarchical inclusion of severity levels and the default value. Since schema description coverage is 0%, the description fully compensates for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns all console messages with a specific verb and resource. However, it does not differentiate from sibling tools like browser_network_requests or browser_handle_dialog, missing an opportunity to clarify unique functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives or when not to use it. The description simply states the function without contextual cues for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_dragB
Perform drag and drop between two elements.
Args:
start_element: Human-readable source element description
start_ref: Exact source element reference from the page snapshot
end_element: Human-readable target element description
end_ref: Exact target element reference from the page snapshot
Returns:
Success message
| Name | Required | Description | Default |
|---|---|---|---|
| start_element | Yes | ||
| start_ref | Yes | ||
| end_element | Yes | ||
| end_ref | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lacks behavioral details beyond the basic action. It does not disclose whether events are fired, if there are side effects, or if actions are reversible. With no annotations provided, the description carries full burden but fails to inform about potential failures or safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using a docstring format with Args and Returns sections. It is front-loaded with the action statement. Only essential information is included, though it could be slightly more compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema details, and 4 parameters with 0% schema coverage, the description is incomplete. It does not mention error handling, behavior when elements are not found, or what constitutes a successful drag. The return value is only 'Success message' without specifics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, leaving all parameters undocumented. The description adds some meaning by labeling start_element as 'Human-readable source element description' and start_ref as 'Exact source element reference from the page snapshot,' which helps distinguish the two. However, it still lacks format or example values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states 'Perform drag and drop between two elements.' The verb 'drag and drop' is specific to this action, and the resource 'elements' is clear. This distinguishes it from sibling tools like browser_click or browser_hover, which are single-element actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like browser_click or browser_type. There is no mention of prerequisites (e.g., needing a page snapshot to obtain element references) or scenarios where drag and drop is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_evaluateA
Evaluate JavaScript expression on page or element.
Args:
function: JavaScript function to execute. Format:
'() => { /* code */ }' or
'(element) => { /* code */ }' when element is provided
element: Human-readable element description (optional)
ref: Exact target element reference for element-scoped evaluation (optional)
Returns:
Result of the JavaScript evaluation
| Name | Required | Description | Default |
|---|---|---|---|
| function | Yes | ||
| element | No | ||
| ref | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It states that the tool evaluates JavaScript and returns a result but does not disclose important behavioral details like whether it waits for promises, error handling, or requirement for page interactivity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at about 5 lines, with clear sections for Args and Returns. It is front-loaded with the main purpose and is efficiently structured, though minor improvements could be made.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters and an output schema, the description explains parameter usage but lacks behavioral transparency and edge case handling. The output schema covers return values, so the description is mostly complete but not fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds significant meaning by specifying the function format, distinguishing between element (human-readable) and ref (exact reference). It clarifies usage beyond the raw schema but could be more detailed about function scope and return types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Evaluate JavaScript expression on page or element,' providing a specific verb and resource. It distinguishes itself from sibling tools like browser_click or browser_snapshot, which perform different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the format of the function and the optional use of element and ref, providing some usage context. However, it lacks explicit guidance on when to choose this tool over alternatives (e.g., for dynamic evaluation vs static snapshot) and does not state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_file_uploadA
Upload one or multiple files.
This tool should be called when a file chooser dialog appears.
If paths is omitted, the file chooser is cancelled.
Args:
paths: The absolute paths to the files to upload. Can be single
or multiple files. If omitted, file chooser is cancelled.
Returns:
Success message
| Name | Required | Description | Default |
|---|---|---|---|
| paths | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behavior (upload and cancellation) but no annotations present. Lacks details on prerequisites, error handling, or authentication needs. Adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise docstring with purpose first, then parameter and return info. No wasted sentences, clear structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, return explanation not needed. But description omits error states (e.g., dialog not present, invalid paths) and constraints. Could be more complete for a file upload tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully explains the 'paths' parameter: absolute paths, single/multiple, and meaning of omission. Adds significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'upload' and resource 'files', specific context 'when a file chooser dialog appears' distinguishes from sibling tools like browser_click or browser_type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (file chooser dialog) and what happens if paths omitted (cancellation). Lacks explicit exclusion of non-dialog contexts, but context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_fill_formA
Fill multiple form fields.
Args:
fields: List of form fields to fill. Each field should have:
- name: Human-readable field name
- ref: Exact target field reference from the page snapshot
- type: Field type (textbox, checkbox, radio, combobox, slider)
- value: Value to fill (for checkbox use 'true'/'false',
for combobox use option text)
Returns:
Success message with filled fields
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It does not mention prerequisites (e.g., page snapshot needed), side effects (e.g., does it clear existing fields?), or error scenarios. This is insufficient for a form-filling tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a well-structured docstring with Args and Returns sections. It is concise and front-loads the purpose. Minor improvement could be removing the Returns section if output schema is present, but it remains clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one parameter with 0% schema coverage, no annotations, and an output schema (not shown). The description adequately explains parameter semantics and return value, but lacks behavioral context (prerequisites, side effects, error handling). It is minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description compensates by explicitly listing expected keys (name, ref, type, value) and providing type-specific value instructions. It adds significant meaning beyond the schema, which only defines a generic array of objects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'fill' and resource 'multiple form fields'. It distinguishes from siblings like browser_type (single field) and browser_click (clicking).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides detailed Args instructions but does not explicitly state when to use this tool over alternatives (e.g., browser_type for single fields, browser_select_option for dropdowns). Usage context is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_handle_dialogA
Handle a dialog (alert, confirm, prompt, beforeunload).
Args:
accept: Whether to accept the dialog.
prompt_text: The text of the prompt in case of a prompt dialog.
Returns:
Success message
| Name | Required | Description | Default |
|---|---|---|---|
| accept | Yes | ||
| prompt_text | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It describes accepting/dismissing and entering prompt text, but does not disclose behavior when no dialog exists or error conditions. This is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear first line, but the Args/Returns block is somewhat redundant and could be streamlined. Overall, it is efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main purpose and parameters, and an output schema exists. However, it lacks details on failure conditions (e.g., no dialog present) and does not mention interaction with other browser states, leaving some gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description explains each parameter: 'accept' determines acceptance, 'prompt_text' supplies text for prompt dialogs. This adds essential meaning beyond the schema structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it handles dialogs (alert, confirm, prompt, beforeunload), specifying the resource and action. It distinguishes from sibling tools which perform other browser actions like clicking or navigating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a dialog appears but does not explicitly state when to use this tool vs alternatives, nor does it mention prerequisites or common pitfalls like ensuring a dialog is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_hoverC
Hover over an element on the page.
Args:
element: Human-readable element description
ref: Exact target element reference from the page snapshot
Returns:
Success message
| Name | Required | Description | Default |
|---|---|---|---|
| element | Yes | ||
| ref | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral traits. It only states the action and parameters, not disclosing side effects (e.g., triggering JavaScript events), whether it waits for hover effects, or behavior on failure. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear one-line purpose followed by parameter and return descriptions in a structured docstring format. No redundant text, though the returns section could be integrated. Efficient use of space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple hover action, the description covers the basic purpose and parameters. An output schema exists, so the return mention is adequate. However, it omits context like requiring a prior snapshot, error handling, or behavioral nuances (e.g., hover duration). Acceptable but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning by describing 'element' as a 'Human-readable element description' and 'ref' as 'Exact target element reference from the page snapshot.' This is helpful but still lacks details on format or how to obtain the ref.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Hover over an element on the page,' specifying the action (hover) and target (element). It distinguishes from sibling tools like browser_click and browser_drag by implying a non-click action. However, it lacks explicit differentiation or scope details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., browser_click, browser_drag). It does not mention prerequisites, such as needing a page snapshot, or conditions like element visibility. No when-not-to-use information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_installA
Install Camoufox browser.
Call this if you get an error about the browser not being installed.
This will download and install the Camoufox browser binary.
Returns:
Installation result
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It states the tool downloads and installs the browser binary, which is sufficient. However, it does not disclose potential side effects (e.g., overwriting existing installation) or what happens if already installed, leaving some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: three sentences, front-loaded with the key purpose, and no wasted words. Every sentence adds necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, an output schema (implied), and no annotations, the description covers the essential action and return type. It could be more complete by noting error handling or success/failure indicators, but it is adequate for a simple installation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description naturally provides all needed context. The schema coverage is 100%, meaning no additional parameter explanation is required. The description adds value by explaining the installation action.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool installs the Camoufox browser, with a specific verb and resource. It also distinguishes from sibling tools (e.g., browser_navigate) which are browser actions, not installation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to call this tool: 'if you get an error about the browser not being installed'. This provides clear context, though it does not mention when not to use it or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_network_requestsA
Returns all network requests since loading the page.
Args:
include_static: Whether to include static resources like images,
fonts, scripts, etc. Defaults to false.
Returns:
Formatted network requests
| Name | Required | Description | Default |
|---|---|---|---|
| include_static | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the return value and parameter default but lacks details on side effects, performance, or prerequisites (e.g., page must be loaded).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a concise docstring with a one-sentence purpose, an Args section, and a Returns section. Every sentence adds value, and the structure is front-loaded and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has a single parameter and an output schema exists (so return format details are not required), the description is nearly complete. It could mention that requests are captured after navigation, but it is sufficient for a simple retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description fully explains the single parameter 'include_static' with its meaning, default value, and examples of what it includes. This compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Returns all network requests since loading the page,' specifying the verb and resource. The parameter documentation further clarifies the tool's scope. It is distinct from sibling tools like browser_click or browser_navigate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly mention when to use this tool versus alternatives or provide any exclusion criteria. Given the clear purpose, usage is implied but not guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_press_keyB
Press a key on the keyboard.
Args:
key: Name of the key to press (e.g., 'ArrowLeft', 'Enter', 'a')
Returns:
Success message
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the action as pressing a key and returning a success message, which is straightforward. It does not disclose any side effects (e.g., focus requirements, page interactions), but it is not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence for the action, then structured Args and Returns. Every part is necessary and front-loaded with the purpose. No extraneous wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema, the description is adequate. However, it lacks context about browser focus or preconditions (e.g., the key press targets the active element). The output schema is minimal, so more detail on behavior would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'key' is described with examples ('ArrowLeft', 'Enter', 'a') that add meaning beyond the schema's type and title. With no other parameters, this is helpful for an agent to understand acceptable values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Press a key on the keyboard') with verb and resource. However, it does not differentiate from sibling tools like browser_type or browser_click, missing explicit context on when to use this over alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as browser_type for text input or browser_click for mouse actions. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_resizeB
Resize the browser window.
Args:
width: Width of the browser window in pixels
height: Height of the browser window in pixels
Returns:
Success message
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | ||
| height | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only mentions resizing and returning a success message, without disclosing whether it affects viewport or window, side effects, or error conditions. Lacks depth for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is efficient and well-structured with clear Args and Returns sections. Every sentence serves a purpose, though could be slightly more detailed without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters and no nested objects, the description is minimally sufficient. However, it omits details like whether the window must be open or how invalid dimensions are handled, which a sibling-aware agent might need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It adds units (pixels) to width and height, but otherwise mirrors the schema. Provides minimal additional meaning beyond parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool resizes the browser window, using a specific verb and resource. It uniquely identifies its purpose among many sibling tools like click or navigate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The description does not indicate when resizing is appropriate or how it fits into a larger workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_select_optionA
Select an option in a dropdown.
Args:
element: Human-readable element description
ref: Exact target element reference from the page snapshot
values: Array of values to select (can be single or multiple)
Returns:
Success message
| Name | Required | Description | Default |
|---|---|---|---|
| element | Yes | ||
| ref | Yes | ||
| values | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It fails to mention that selecting an option mutates the page state, does not address error conditions, or require element visibility. The description is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: a single sentence followed by a clear bullet-style parameter list. It is front-loaded with the core action, and every sentence is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic action and parameters but omits important context like prerequisites (e.g., page snapshot must exist) and error scenarios. An output schema exists but its content is not shown, so the description could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides brief but useful explanations for each parameter (e.g., 'Human-readable element description', 'Array of values to select'). However, details like value format or constraints are missing, making it adequate but not strong.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'select' and resource 'option in a dropdown' are specific and clearly distinguish the tool from siblings like browser_click or browser_fill_form. The description immediately conveys the action and target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for selecting dropdown options but does not explicitly state when not to use it or mention alternative tools. No guidance on prerequisites or edge cases is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_snapshotA
Capture accessibility snapshot of the current page.
This provides a structured view of the page content that is better
for understanding page structure than screenshots.
Returns:
Accessibility tree of the current page
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only states the tool returns an accessibility tree, omitting any side effects, permissions required, or error behavior. For a read-only snapshot, such omissions are acceptable but still minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, with the first sentence clearly stating the action. It is concise and to the point, with no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists (though not shown), the description is fairly complete. It explains what the tool does and what it returns. It could mention that it operates on the current page, but that is implied. Overall, it covers the essentials.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters and the schema coverage is 100% (empty). Per the rubric, 0 parameters gives a baseline of 4. The description adds no parameter information because there are none, but it explains the output, which is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures an accessibility snapshot of the current page. It distinguishes itself from screenshots by noting it is better for understanding page structure, and it specifies the return value as an accessibility tree. This makes its purpose unambiguous among sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some guidance by contrasting with screenshots, but it does not give explicit when-to-use or when-not-to-use instructions. It lacks mention of alternatives or context for when the accessibility tree is preferable over other page inspection tools like browser_evaluate or browser_network_requests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_tabsA
List, create, close, or select a browser tab.
Args:
action: Operation to perform:
- list: List all open tabs
- new: Create a new tab
- close: Close a tab (uses index if provided, else current tab)
- select: Select a tab by index
index: Tab index, used for close/select operations.
If omitted for close, current tab is closed.
Returns:
Result of the tab operation
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It discloses that close uses index if provided or current tab otherwise, and select uses index. However, it omits details like behavior for out-of-range indices, default page for new tab, and the structure of the return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a one-line summary, followed by clear Args and Returns sections. Every sentence adds value; no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (four actions) and lack of annotations, the description covers basic behavior but lacks details for actions like list (return format) and new (default behavior). The return description is vague, though output schema exists to potentially compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning for both parameters: explains each action and the role of index for close/select. However, it does not clarify index usage for list or new, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages browser tabs with specific actions (list, create, close, select). It specifies the resource 'browser tab' and uses distinct verbs for each operation, making it distinct from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. It lacks context about when to use each action or how it differs from sibling tools like browser_close (which closes the entire browser).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_take_screenshotA
Take a screenshot of the current page or element.
Args:
full_page: When true, takes a screenshot of the full scrollable page.
Cannot be used with element screenshots.
filename: File name to save the screenshot to. Defaults to
'page-{timestamp}.{png|jpeg}' if not specified.
element: Human-readable element description (optional)
ref: Exact target element reference for element screenshot (optional)
type: Image format for the screenshot (png or jpeg). Defaults to png.
Returns:
Path to the saved screenshot
| Name | Required | Description | Default |
|---|---|---|---|
| full_page | No | ||
| filename | No | ||
| element | No | ||
| ref | No | ||
| type | No | png |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the return value (path to saved screenshot), default filename behavior, and the full_page/element mutual exclusivity. However, it does not mention whether it modifies browser state (e.g., scroll position) or requires any permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a concise docstring with Args and Returns sections. Each parameter gets a brief comment, and the overall structure is clear. Could be slightly more concise, but no unnecessary prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters (0 required) and no output schema provided (though flagged as true), the description covers the basic workflow: take screenshot, save to file, return path. Missing details on file overwriting behavior or supported formats for filename extension, but adequate for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, so description must compensate. It explains full_page (boolean, cannot combine with element), filename (default template), element (optional description), ref (exact target), and type (enum png/jpeg). More detail on element vs ref disambiguation would be helpful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states action: 'Take a screenshot of the current page or element.' It specifies the resource (screenshot) and differentiates between full-page and element captures through parameters. Sibling tools like browser_snapshot might overlap, but the description is specific enough to distinguish.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description notes that full_page cannot be used with element screenshots, providing a constraint. However, it lacks guidance on when to use this tool versus alternatives like browser_snapshot or browser_resize, and does not mention prerequisites or post-conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_typeA
Type text into an editable element.
Args:
element: Human-readable element description
ref: Exact target element reference from the page snapshot
text: Text to type into the element
slowly: Whether to type one character at a time (useful for key handlers)
submit: Whether to submit entered text (press Enter after)
Returns:
Success message
| Name | Required | Description | Default |
|---|---|---|---|
| element | Yes | ||
| ref | Yes | ||
| text | Yes | ||
| slowly | No | ||
| submit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose all behavioral traits. It only hints at behavior via the slowly and submit parameters, but does not explain if the field is cleared before typing, how special characters are handled, or what 'editable element' includes (e.g., contenteditable).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using a docstring format with clear parameter explanations. It is well-structured but could be slightly more efficient by removing redundancy (e.g., repeating the function name in the docstring).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and the presence of an output schema (implied by 'Returns: Success message'), the description covers basic usage but lacks details on behavior like clearing input, support for contenteditable, or handling of special characters. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description provides meaningful explanations for each parameter: element as a human-readable description, ref as an exact reference, text as the text to type, slowly for character-by-character typing, and submit for pressing Enter. This fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Type text into an editable element', specifying the action and target. It distinguishes itself from siblings like browser_click and browser_press_key by focusing on text input into editable fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives like browser_press_key or browser_fill_form. No exclusions or context for when not to use it are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_wait_forB
Wait for text to appear, disappear, or a specified time to pass.
Args:
text: Text to wait for to appear
text_gone: Text to wait for to disappear
time: Time to wait in seconds
Returns:
Success message when condition is met
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| text_gone | No | ||
| time | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It lacks details on whether the wait is blocking, polling behavior, timeout duration, or what happens if conditions are not met. The return value is vaguely described as a 'success message', leaving behavioral uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence covers all three wait modes, followed by a minimal arg list. Every sentence serves a purpose with zero filler, and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core functionality but omits important context such as default behavior when no parameters are provided, error handling, or relationship to other browser tools. Since an output schema exists, return values are not needed here, but missing timeout details and parameter interactions reduce completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains each parameter's role (text to appear, text_gone to disappear, time in seconds), which adds meaning beyond the schema's type-only definitions. However, it does not clarify constraints like mutual exclusivity among parameters or format requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool waits for text to appear, disappear, or for a specified time. It uses a specific verb ('wait') and identifies the resource ('text', 'time'), distinguishing it from sibling tools like browser_click or browser_navigate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention preconditions, when not to use it, or that it might be used after actions like navigation or clicks. The implicit usage is clear but not elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
22 tool updates
v0.1.0- First observed
browser_click - First observed
browser_close - First observed
browser_configure - First observed
browser_console_messages - First observed
browser_drag - First observed
browser_evaluate - First observed
browser_file_upload - First observed
browser_fill_form - First observed
browser_handle_dialog - First observed
browser_hover - First observed
browser_install - First observed
browser_navigate - First observed
browser_navigate_back - First observed
browser_network_requests - First observed
browser_press_key - First observed
browser_resize - First observed
browser_select_option - First observed
browser_snapshot - First observed
browser_tabs - First observed
browser_take_screenshot - First observed
browser_type - First observed
browser_wait_for
TDQS
Each tool targets a distinct browser automation action (navigate, click, type, screenshot, etc.) with no overlap. Descriptions clearly differentiate them.
All tools follow a consistent 'browser_verb' pattern (e.g., browser_click, browser_navigate, browser_take_screenshot). The naming is uniform and predictable.
22 tools is slightly above the typical 3-15 range, but the comprehensive coverage of browser automation operations justifies the count. Not excessive.
Covers all major browser interactions: navigation, clicking, typing, form filling, dropdowns, file upload, dialogs, tabs, screenshots, snapshots, console/network, JS evaluation, waiting, resizing, proxy config, install, close. No obvious gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Crawl, scrape, search the web, and automate browsers at scale with anti-bot bypass.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables browser automation and web scraping with multi-session management, supporting page navigation, element interaction, network request capture, and content extraction across multiple concurrent browser instances.14MIT
- AlicenseNot gradedqualityDmaintenanceProvides stealthy browser automation capabilities using a custom Firefox build designed for anti-detection. It enables users to navigate pages, interact with elements, and manage persistent browser sessions through natural language.431MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to perform intelligent browser automation with session-based context analysis, including navigation, form filling, and content extraction through natural language.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to fully control a browser for web automation, including navigation, clicking, typing, scrolling, screenshots, and DOM inspection, with session persistence and anti-bot bypass.14MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rlgrpe/camoufox-mcp-python'
If you have feedback or need assistance with the MCP directory API, please join our Discord server