Skip to main content
Glama

Zen DevTools MCP

npm version CI codecov License: MIT License: Apache 2.0

Zen DevTools MCP server

Unofficial Model Context Protocol server for automating Zen Browser via WebDriver BiDi (through Selenium WebDriver). Works with Claude Code, Claude Desktop, Codex App/CLI, Cursor, Cline and other MCP clients.

Repository: https://github.com/simon-ami/zen-devtools-mcp

This is a Zen-first fork of Mozilla's Firefox DevTools MCP server. The public package, CLI, MCP server name, logs, profile paths, and management tools use Zen naming. The lower-level implementation still uses Selenium's Firefox/geckodriver APIs because Gecko automation is exposed through moz:firefoxOptions, Browser.FIREFOX, and moz:* WebDriver BiDi commands.

This project is maintained independently and is not affiliated with or endorsed by Zen Browser.

Note: This MCP server requires a local Zen Browser installation and cannot run on cloud hosting services. Use npx zen-devtools-mcp@latest to run locally, or use Docker with the provided Dockerfile.

Security

Browser MCP servers carry inherent risks. A few key practices:

  • Use a dedicated Zen profile. Never run the server against your regular profile unless you intentionally use connect-existing mode. The agent has access to whatever the browser can reach, including cookies and saved sessions.

  • Be cautious about which sites you visit. Pages can return content designed to manipulate the agent (prompt injection). Stick to sites you control or trust.

  • Avoid enabling extra flags unless needed. --enable-script and --enable-privileged-context significantly expand what the agent can do.

See SECURITY.md for a full breakdown of risks and how to report vulnerabilities.

Related MCP server: firefox-devtools-mcp

Requirements

  • Node.js >= 20.19.0

  • Zen Browser installed (auto-detected on macOS at /Applications/Zen.app/Contents/MacOS/zen, or pass --zen-path)

Install and use with Claude Code (npx)

Recommended: use npx so you always run the latest published version from npm.

Option A: Claude Code CLI

claude mcp add zen-devtools npx zen-devtools-mcp@latest

Pass options either as args or env vars. Examples:

# Headless + viewport via args
claude mcp add zen-devtools npx zen-devtools-mcp@latest -- --headless --viewport 1280x720

# Or via environment variables
claude mcp add zen-devtools npx zen-devtools-mcp@latest \
  --env START_URL=https://example.com \
  --env ZEN_HEADLESS=true

Option B: Edit Claude Code settings JSON

Add to your Claude Code config file:

  • macOS: ~/Library/Application Support/Claude/Code/mcp_settings.json

  • Linux: ~/.config/claude/code/mcp_settings.json

  • Windows: %APPDATA%\Claude\Code\mcp_settings.json

{
  "mcpServers": {
    "zen-devtools": {
      "command": "npx",
      "args": ["-y", "zen-devtools-mcp@latest", "--headless", "--viewport", "1280x720"],
      "env": {
        "START_URL": "about:blank"
      }
    }
  }
}

Option C: Helper script (local dev build)

npm run setup
# Choose Claude Code; the script saves JSON to the right path

Try it with MCP Inspector

npx @modelcontextprotocol/inspector npx zen-devtools-mcp@latest --start-url https://example.com --headless

Then call tools like:

  • list_pages, select_page, navigate_page

  • take_snapshot then click_by_uid / fill_by_uid

  • list_network_requests (always-on capture), get_network_request

  • screenshot_page, list_console_messages

CLI options

You can pass flags or environment variables (names on the right):

  • --zen-path — absolute path to Zen binary (ZEN_PATH)

  • --headless — run without UI (ZEN_HEADLESS=true)

  • --viewport 1280x720 — initial window size

  • --profile-path — parent directory for a dedicated Zen MCP profile

  • --auto-profile — use a persistent profile under ~/.zen-devtools-mcp; enabled by default (AUTO_PROFILE=false disables it)

  • --zen-arg — extra Zen arguments (repeatable)

  • --start-url — open this URL on start (START_URL)

  • --accept-insecure-certs — ignore TLS errors (ACCEPT_INSECURE_CERTS=true)

  • --connect-existing — attach to an already-running Zen instead of launching a new one (CONNECT_EXISTING=true)

  • --marionette-port — Marionette port for connect-existing mode, default 2828 (MARIONETTE_PORT)

  • --pref name=value — set Zen preference at startup via moz:firefoxOptions (repeatable)

  • --enable-script — enable the evaluate_script tool (executes arbitrary JavaScript in the page context) and debugging tools (list scripts, inspect source, set logpoints). Debugging tools require Gecko 153+. (ENABLE_SCRIPT=true)

  • --enable-privileged-context — enable privileged context tools: list/select privileged contexts, evaluate privileged scripts, get/set Zen prefs, and list extensions. Requires MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1 (ENABLE_PRIVILEGED_CONTEXT=true)

  • --log-file — write MCP server logs to a file instead of stderr. Useful for debugging sessions with MCP clients that hide server output. Set DEBUG=* to also include verbose debug logs. Example: --log-file /tmp/zen-mcp.log

Useful preferences (--pref)

  • remote.prefs.recommended=false. When Zen runs in automation, it applies Gecko RecommendedPreferences that modify browser behavior for testing. Set remote.prefs.recommended to false to skip those and have a configuration closer to a regular Zen instance.

  • remote.log.level=Trace. Enable verbose WebDriver protocol logs in Zen. The MCP server will automatically pass the matching log level to geckodriver so both sides log at the same verbosity.

  • app.update.disabledForTesting=false. Allow Zen to automatically download and apply updates. Note that updates may interrupt your session. Requires also setting remote.prefs.recommended=false.

Connect to existing Zen

Use --connect-existing to automate your real browsing session with cookies, logins, and open tabs intact:

# Start Zen with Marionette enabled
/Applications/Zen.app/Contents/MacOS/zen --marionette

# Run the MCP server
npx zen-devtools-mcp --connect-existing --marionette-port 2828

Or set marionette.enabled to true in about:config (or user.js) to enable Marionette on every launch.

BiDi-dependent features (console events, network events) are not available in connect-existing mode; all other features work normally.

Warning: Do not leave Marionette enabled during normal browsing. It sets navigator.webdriver = true and changes other browser fingerprint signals, which can trigger bot detection on sites protected by Cloudflare, Akamai, etc. Only enable Marionette when you need MCP automation, then restart Zen normally afterward.

For personal profiles, you may set remote.prefs.recommended=false in about:config before starting Zen with Marionette. This prevents Gecko's testing preferences from disabling features such as password autofill, but it also leaves saved credentials available to the automated session. A dedicated profile remains the recommended option.

Tool overview

  • Pages: list/new/navigate/select/close

  • Snapshot/UID: take/resolve/clear

  • Input: click/hover/fill/drag/upload/form fill

  • Network: list/get (ID-first, filters, always-on capture)

  • Console: list/clear

  • Screenshot: page/by uid (with optional saveTo for CLI environments)

  • Script: evaluate_script

  • Privileged Context: list/select privileged ("chrome") contexts, evaluate_privileged_script (requires MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1)

  • WebExtension: install_extension, uninstall_extension, list_extensions (list requires MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1)

  • Zen Management: get_zen_info, get_zen_output, restart_zen, set_zen_prefs, get_zen_prefs

  • Profiler: profiler_is_active, profiler_start (preset or explicit config), profiler_stop (saves profile to downloads directory)

  • Utilities: accept/dismiss dialog, history back/forward, set viewport

Screenshot optimization for Claude Code

When using screenshots in Claude Code CLI, the base64 image data can consume significant context. Use the saveTo parameter to save screenshots to disk instead:

screenshot_page({ saveTo: "/tmp/page.png" })
screenshot_by_uid({ uid: "abc123", saveTo: "/tmp/element.png" })

The file can then be viewed with Claude Code's Read tool without impacting context size.

Local development

npm install
npm run build

# Run with Inspector against local build
npx @modelcontextprotocol/inspector node dist/index.js --headless --viewport 1280x720

# Or run in dev with hot reload
npm run inspector:dev

See CONTRIBUTING.md for more details on local development, testing, and CI.

Troubleshooting

  • Zen not found: pass --zen-path "/Applications/Zen.app/Contents/MacOS/zen" (macOS) or the correct path on your OS.

  • First run is slow: Selenium sets up the BiDi session; subsequent runs are faster.

  • Stale UIDs after navigation: take a fresh snapshot (take_snapshot) before using UID tools.

  • Saved-password suggestions stopped after using --connect-existing: Marionette's recommended automation preferences may leave signon.autofillForms and signon.rememberSignons set to false after the session ends. Stop the MCP server, restart Zen without Marionette, and reset both preferences in about:config.

  • Windows 10: Error during discovery for MCP server 'zen-devtools': MCP error -32000: Connection closed

    • Solution 1 Wrap with cmd /c (details):

      "mcpServers": {
        "zen-devtools": {
          "command": "cmd",
          "args": ["/c", "npx", "-y", "zen-devtools-mcp@latest"]
        }
      }
    • Solution 2 Use the absolute path to npx (adjust extension: .cmd, .bat, .exe, or .ps1, to match your setup):

      "mcpServers": {
        "zen-devtools": {
          "command": "C:\\nvm4w\\nodejs\\npx.ps1",
          "args": ["-y", "zen-devtools-mcp@latest"]
        }
      }

Versioning

  • Pre-1.0 API: versions start at 0.x. Use @latest with npx for the newest release.

  • This fork uses its own version line rather than upstream Firefox DevTools MCP version numbers.

Contributing

See CONTRIBUTING.md for how to file issues, run tests, and work on the project locally.

Author

Maintained independently by Simon Benedict. Based on Mozilla's Firefox DevTools MCP server.

License

Licensed under either of MIT or Apache 2.0 at your option.

Available Tools

32 tools
accept_dialogB

Accept browser dialog. Provide promptText for prompts.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptTextNoText for prompt dialogs

TDQS

B3.3/5.0
Behavior2/5

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 fails to disclose important behavioral traits such as whether accepting an alert vs. prompt behaves differently, what happens if no dialog is present, or if the action is destructive. The minimal description leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with only two sentences and no extraneous information. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema, no nested objects) and the presence of a sibling 'dismiss_dialog', the description is minimally complete. It explains the core function but omits details like error handling or behavior on different dialog types, which a context-aware agent would benefit from.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers the only parameter with a description 'Text for prompt dialogs'. The description adds 'Provide promptText for prompts' which essentially repeats the schema information. With 100% schema coverage, the description adds no new value, so a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Accept browser dialog' which is a clear verb-resource pairing. It distinguishes from the sibling tool 'dismiss_dialog' by indicating acceptance rather than dismissal. However, it does not specify which dialog types (alert, confirm, prompt) are supported, though 'promptText' hints at prompt dialogs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises to 'Provide promptText for prompts', giving context for when to use the parameter. However, it does not explicitly state when to use this tool versus alternatives like 'dismiss_dialog' or what to do if the dialog is not a prompt.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_console_messagesB

Clear collected console messages.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. 'Clear' implies destructive action but does not state irreversibility or side effects. No mention of what happens to the collected messages (e.g., whether they are permanently deleted).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise single sentence with no redundancy. Every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple clear operation with no parameters and no output schema, the description is nearly complete. It could mention that all messages are cleared, but this is reasonably implied by 'clear collected console messages'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, so schema and description align perfectly. The description adds no parameter info but none is needed. Baseline elevated due to zero parameter complexity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Clear collected console messages' clearly states the action (clear) and the resource (console messages). It distinguishes from sibling 'list_console_messages' which retrieves messages. However, 'collected' is slightly ambiguous without context, preventing a top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like 'list_console_messages' or when clearing is appropriate. The description lacks context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_snapshotB

Clear snapshot cache. Usually not needed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description fails to disclose behavioral traits such as side effects, permissions, or whether the action is destructive. It only states the action without additional context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two short sentences, front-loading the key action. The second sentence is somewhat vague but does not significantly detract.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description is minimally adequate. However, it lacks explanation of what the snapshot cache is or when clearing it is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the description does not need to add meaning beyond the schema. Baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Clear snapshot cache' which is a specific verb and resource, clearly indicating the tool's action. However, it does not differentiate from sibling tools like take_snapshot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Usually not needed,' which is vague and provides no clear guidance on when to use this tool versus alternatives or when to avoid it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

click_by_uidB

Click element by UID. Set dblClick for double-click.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesElement UID from snapshot
dblClickNoDouble-click (default: false)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description does not disclose behavior like waiting for element visibility, error handling on missing UID, or side effects. The description is too minimal to compensate for the lack of annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise, two sentences front-loaded with key action. However, the extreme brevity sacrifices necessary detail, making it borderline under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations or output schema, the description fails to explain prerequisites (e.g., snapshot needed), behavior on success/failure, or how this tool differs from similar interactions like hover_by_uid.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. Description only restates schema information ('Set dblClick for double-click'), adding no new semantic meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Click' and resource 'element by UID', and distinguishes from sibling tools like hover_by_uid or drag_by_uid_to_uid. The brief mention of dblClick further specifies the action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use click instead of hover, drag, or fill. No exclusions or context provided. Agent must infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

close_pageB

Close tab by index.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdxYesTab index to close

TDQS

B3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits, but it only states 'Close tab by index.' It does not mention what happens if the index is out of bounds, whether it is destructive, or if it closes the current page. This is insufficient for safe agent use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently communicates the core purpose. While very short, it earns its place without redundancy. However, it loses a point for lacking depth in other dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 no output schema, the description adequately identifies the action. However, it omits details like whether the index is zero-based, or error behavior, making it only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, as the only parameter 'pageIdx' already has a description 'Tab index to close'. The tool description adds no extra meaning beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Close tab by index.' clearly states the action (close), the resource (tab), and the method (by index). It distinguishes this tool from sibling page management tools like 'select_page' or 'navigate_page' which do not close pages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, such as when to close a page versus accepting a dialog or navigating. The description does not mention prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dismiss_dialogA

Dismiss browser dialog.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It fails to disclose what happens if no dialog is present or if multiple dialogs exist, leaving behavior ambiguous.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise with two words, front-loaded, and no unnecessary content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description is minimally adequate but lacks details about edge cases or behavior in the absence of a dialog.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100%. The description adds no meaning beyond the schema, but the baseline for zero parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Dismiss') and the resource ('browser dialog'), with a specific verb that distinguishes it from the sibling 'accept_dialog'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The context implies it's for dismissing rather than accepting, but lacks details on prerequisites or scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

drag_by_uid_to_uidC

Drag element to another (HTML5 drag events).

ParametersJSON Schema
NameRequiredDescriptionDefault
toUidYesTarget element UID
fromUidYesSource element UID

TDQS

C2.9/5.0
Behavior2/5

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 only mentions 'HTML5 drag events' which hints at the mechanism but lacks details on side effects, auth needs, error conditions, or what happens after the drag. This leaves the agent guessing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence that gets straight to the point. It is efficient but could be slightly more informative without being wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool and lack of output schema, the description omits important context such as required event listeners, return values, and error handling. The agent would need to infer too much from the name and parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters ('Source element UID' and 'Target element UID'). The description adds no extra meaning beyond the schema, so it meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the action 'Drag element to another' and specifies it uses HTML5 drag events, which distinguishes it from other action tools like click or hover. The verb and resource are clear, though it does not explicitly mention the UIDs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives. The description does not specify prerequisites (e.g., elements must be draggable) or when not to use it. Context from sibling tools is not leveraged.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fill_by_uidB

Fill text input/textarea by UID.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesInput element UID from snapshot
valueYesText to fill

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must convey behavioral traits. It only states the action but fails to disclose whether it clears existing text, appends, or requires element visibility/focus. No side effects or constraints are mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no superfluous words. It is front-loaded and directly states the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple fill tool with no output schema and no annotations, the description provides the minimum viable information. However, it lacks behavioral details and usage guidelines, leaving gaps in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the parameter names and schema descriptions; it merely restates the action.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'fill', the resource 'text input/textarea', and the method 'by UID'. It distinguishes itself from the sibling 'fill_form_by_uid' by specifying a single element type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. The description does not indicate when to use this tool versus alternatives like 'fill_form_by_uid' or 'click_by_uid', nor does it mention prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fill_form_by_uidB

Fill multiple form fields at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsYesArray of {uid, value} pairs

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must fully convey behavioral traits. It only says 'Fill' which implies mutation but does not disclose side effects (e.g., triggers events, requires focus, blocks on completion) or safety considerations. Critical 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (4 words). While not wasteful, it omits essential details. For a tool with one parameter and no annotations, conciseness should not sacrifice informativeness. A score of 3 reflects minimal adequate length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, no annotations, and the complexity of form filling (e.g., UID resolution, field types, error handling), the description is insufficient. It lacks information on return value, success/failure indicators, and any prerequisites. The completeness is low.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with one parameter 'elements' (array of {uid, value}). The description adds the notion of 'multiple fields at once', which is implicit in the array type. This adds marginal value beyond the schema, justifying a baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Fill multiple form fields at once.' clearly states the action (fill), resource (form fields), and scope (multiple). The name 'fill_form_by_uid' combined with the description distinguishes it from siblings like 'fill_by_uid' (single field). The verb 'fill' is specific to form inputs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 'fill_by_uid' for single fields. No prerequisites (e.g., page loaded, field visible) or exclusions are mentioned. The description provides no context for choosing this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_network_requestA

Get request details by ID. URL lookup as fallback.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRequest ID from list_network_requests
urlNoURL fallback (may match multiple)
formatNoOutput format (default: text)

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description lacks behavioral details such as permissions, error handling, or performance implications. Does not contradict annotations since none exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise phrases conveying essential information without redundancy. Efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequately describes core functionality for a simple retrieval tool. Could mention behavior for missing/ambiguous inputs but overall sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all parameters (100% coverage). Description adds 'URL lookup as fallback' giving context, but does not significantly enhance beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves request details by ID or URL, with fallback behavior. It distinguishes from sibling 'list_network_requests' which lists all requests.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies use when you have an ID or URL, but no explicit guidance on when to use this versus alternatives, nor what happens with multiple URL matches or missing inputs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_zen_infoA

Get information about the current Zen instance configuration, including binary path, version, environment variables, and output file location.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description clearly indicates a read-only operation retrieving configuration data. No annotations provided, so description carries full burden; it adequately conveys non-destructive behavior, though lacks details on idempotency or auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is front-loaded with the verb 'Get' and directly states the purpose. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description provides sufficient detail about the returned information (binary path, version, environment variables, output file location). It is complete for intended use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, so schema coverage is 100% and description adds no param information. Baseline for 0 params is 4; no need for further semantic enhancement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool retrieves configuration info of the current Zen instance, listing specific items (binary path, version, environment variables, output file location). It is distinct from sibling tools like get_zen_output or get_network_request.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies use when configuration info is needed, but does not provide explicit when-not or alternatives. Since it's a read-only getter, the context is clear but could mention no side effects.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_zen_outputA

Retrieve Zen output (stdout/stderr including MOZ_LOG, warnings, crashes, stack traces). Returns recent output from the capture file. Use filters to focus on specific content.

ParametersJSON Schema
NameRequiredDescriptionDefault
grepNoFilter log lines containing this string (case-insensitive)
linesNoNumber of recent log lines to return (default: 100, max: 10000)
sinceNoOnly show logs written in the last N seconds

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that the tool retrieves recent output from a capture file and mentions the content types (stdout/stderr, MOZ_LOG, etc.). However, with no annotations, it lacks details on side effects, permission needs, or performance implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, each serving a distinct purpose: first defines the tool's function, second guides usage. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple retrieval tool with well-documented parameters, but lacks description of output format or default behavior when no filters are applied, especially since there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters are fully described in the schema (100% coverage), so the description adds little beyond summarizing the filtering functionality. This is the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'Retrieve' and the resource 'Zen output (stdout/stderr including MOZ_LOG, warnings, crashes, stack traces)', differentiating it from sibling tools like get_zen_info or get_network_request.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Briefly suggests using filters to focus on specific content, but does not explicitly state when to use this tool versus alternatives or provide contexts where it is inappropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hover_by_uidB

Hover over element by UID.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesElement UID from snapshot

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only states the action without detailing side effects, such as whether the hover triggers events, waits for elements, or what happens if the element is not found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no wasted words. It is appropriately sized for such a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature of the tool (one parameter, no output schema), the description is adequate but not thorough. It could mention whether the hover is synchronous or if it triggers events, but it covers the basic usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage with a clear description for the 'uid' parameter. The tool description adds no extra meaning beyond the schema, so baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Hover over element by UID' clearly states the action (hover) and the resource (element) with the method (by UID). It distinguishes from sibling tools like click_by_uid or fill_by_uid, but could be more specific about the context of hovering.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 click_by_uid or drag_by_uid_to_uid. The description does not mention prerequisites, limitations, or 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.

install_extensionB

Install a Zen extension using WebDriver BiDi webExtension.install command. Supports installing from archive (.xpi/.zip), base64-encoded data, or unpacked directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoFile path (for archivePath or path types)
typeYesExtension data type: "archivePath" for .xpi/.zip, "base64" for encoded data, "path" for unpacked directory
valueNoBase64-encoded extension data (for base64 type)
permanentNoInstall permanently (requires signed extension). Default: false

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose behavioral details such as whether installation is synchronous, what happens if the extension is already installed, permission requirements, or side effects. The schema's 'permanent' parameter hints at signing requirements, but the description adds no behavioral context beyond listing methods.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. The first sentence states the purpose, the second lists supported types. Ideal length for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the main installation methods but lacks important context: no description of return value, error scenarios, or implications of the 'permanent' flag. For a mutation tool with no output schema, more detail on behavior and prerequisites would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all parameters. The description adds a brief grouping of installation methods matching the 'type' enum, but does not provide additional meaning for individual parameters beyond what the schema gives. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool installs a Zen extension using WebDriver BiDi, and lists the three supported data types (archive, base64, unpacked directory). This distinguishes it from the sibling uninstall_extension tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use which installation method, prerequisites (e.g., need signed extension for permanent install is only in schema), or when to avoid this tool. The description does not help an agent choose between this and other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_console_messagesB

List console messages. Supports filtering by level, time, text, source.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoFilter by level
limitNoMax messages (default: 50)
formatNoOutput format (default: text)
sourceNoFilter by source
sinceMsNoOnly last N ms
textContainsNoText filter (case-insensitive)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry full burden. It only states 'List console messages' which implies read-only, but does not explicitly mention non-destructive behavior, side effects, or authentication needs. Minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One clear, front-loaded sentence with no waste. Efficiently communicates the tool's purpose and capabilities.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with 6 parameters and no output schema, the description is adequate but lacks details on the return structure (e.g., what fields each message contains). Context signals indicate high parameter coverage, but completeness is moderate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds a high-level summary of filtering by level, time, text, source, but doesn't add significant detail beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List console messages' with a specific verb and resource. It mentions filtering capabilities, which adds clarity. However, it doesn't explicitly differentiate from siblings like 'clear_console_messages' or 'list_network_requests'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. Lacks information about scenarios where other tools (e.g., clear_console_messages for deletion) would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_network_requestsC

List network requests. Returns IDs for get_network_request.

ParametersJSON Schema
NameRequiredDescriptionDefault
isXHRNoXHR/fetch only
limitNoMax requests (default: 50)
detailNoDetail level (default: summary)
formatNoOutput format (default: text)
methodNoHTTP method filter
sortByNoSort field (default: timestamp)
statusNoExact status code
sinceMsNoOnly last N ms
statusMaxNoMax status code
statusMinNoMin status code
urlContainsNoURL filter (case-insensitive)
resourceTypeNoResource type filter

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fails to disclose important behavioral traits. It does not mention that the tool supports extensive filtering (by URL, method, status, etc.), sorting, or output format. The only hint about behavior is that it returns IDs, but the schema implies much richer functionality.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at two sentences, with no wasted words. It is front-loaded with the primary action. However, it may be too concise, sacrificing necessary detail for efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 12 optional parameters, no output schema, and no annotations, the description is incomplete. It does not explain the return format, pagination behavior, or how the filtering/sorting parameters interact with the returned data. An agent would need to infer too much from the schema alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description does not add any additional meaning beyond what the schema already provides. It does not explain how parameters like detail or format affect the output or the returned IDs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'network requests', and mentions that it returns IDs for another tool. While succinct, it conveys the core purpose without ambiguity. However, it does not explicitly distinguish this tool from sibling listing tools like list_console_messages or list_pages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It mentions get_network_request as a companion tool but does not explain when to choose list_network_requests over other listing tools or how to use the returned IDs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_pagesA

List open tabs (index, title, URL). Selected tab is marked.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description only states that the selected tab is marked, but does not disclose any other behavioral traits such as side effects, refresh behavior, or permissions required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—a single sentence that conveys all necessary information without any fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite lacking an output schema, the description explains what the tool returns (index, title, URL, selected mark), which is sufficient for a simple list. No annotations but the read-only nature is implied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema coverage is 100%. The description does not need to add parameter information. Baseline score of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list' and the resource 'open tabs', and specifies the output fields (index, title, URL) and that the selected tab is marked. This distinguishes it from sibling tools like select_page or close_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. It does not mention when not to use it or any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

new_pageA

Open new tab at URL. Returns tab index.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesTarget URL

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must cover behavioral traits. It states the tool opens a new tab and returns the index, but omits details about asynchronous loading, permissions, or error handling. Adequate for a simple tool but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. Action and return value are front-loaded. Highly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 no output schema, the description covers the essential functionality. Could be more complete by mentioning tab index semantics or behavior when URL is invalid.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear 'Target URL' description. The tool description adds that the URL is used for a new tab, which is already implied. Baseline score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (open new tab at URL) and the return value (tab index). It distinguishes from sibling tools like navigate_page (which navigates current page) and select_page (which selects an existing tab).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 navigate_page or select_page. Missing when-not-to-use or prerequisites like page loading state.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

profiler_is_activeA

Check whether the Gecko profiler is currently recording.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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 only states the check purpose without disclosing any behavioral traits such as idempotency, side effects, or whether it requires any permissions. This is insufficient for a zero-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that is front-loaded with the action and resource. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is minimal. It tells the purpose but lacks details like the return type (boolean) or typical usage patterns. Adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so schema coverage is 100%. The description does not need to add parameter semantics; baseline for no parameters is 4. The description is clear enough.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Check') and the specific resource ('whether the Gecko profiler is currently recording'). It distinguishes itself from siblings like profiler_start and profiler_stop, which handle state changes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. Usage is implied (e.g., before or after profiler operations), but no direct when-to-use or when-not-to-use information is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

profiler_startA

Start the Gecko profiler. Provide either a preset name or explicit recording options (entries, interval, features, threads). Cannot combine both. Valid presets: web-developer, firefox-platform, graphics, media, ml, networking, power, debug.

ParametersJSON Schema
NameRequiredDescriptionDefault
presetNoProfiler preset name. Cannot be combined with entries, interval, features, or threads.
entriesNoNumber of entries to keep in the sampling buffer. Required when no preset is given.
threadsNoThread names to profile. Required when no preset is given.
featuresNoProfiler features to enable. Required when no preset is given.
intervalNoSampling interval in milliseconds. Required when no preset is given.
activeContextNoId of the top-level navigable to mark as the active tab in the profile. Does not restrict profiling to that tab.

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It lacks disclosure of behavioral traits such as idempotency, error handling, or permissions. Simply stating 'Start the Gecko profiler' is insufficient for a mutation action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, efficient, and front-loads the core action. Every word adds value; no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations or output schema, the description is fairly complete for a start action. It covers modes and constraints, but lacks explanation of return values or error states.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions. The description adds the mutual exclusivity rule and lists presets (already in enum), but adds minimal extra meaning beyond the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool starts the Gecko profiler and distinguishes the two modes (preset vs. explicit options). It is specific and differentiates from sibling tools like profiler_stop and profiler_is_active.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Cannot combine both' and lists valid presets, providing clear context for usage. However, it does not provide when-not-to-use guidance (e.g., if already running) or explicitly reference alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

profiler_stopA

Stop the Gecko profiler and save the recorded profile to a file in the downloads directory. Returns the path to the saved file, or null when nothing was saved.

ParametersJSON Schema
NameRequiredDescriptionDefault
discardNoIf true, stop the profiler and discard the recording instead of saving it to disk. Defaults to false.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavior. It reveals the save-to-file action, the directory, and the return value. However, it does not cover edge cases like what happens if no profile is active, file naming conflicts, or whether the action is synchronous. The description 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, no unnecessary words, and front-loads the primary action. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 no output schema, the description covers the essential behavior and return value. It lacks some context (e.g., prerequisites, error handling) but is complete enough for an agent to understand the main functionality.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the parameter description is already in the schema. The tool description does not add any additional semantics beyond the schema's own description of the 'discard' parameter. It is a baseline score as the description adds no extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Stop the Gecko profiler'), the result ('save the recorded profile to a file in the downloads directory'), and the return value ('path to the saved file, or null'). It distinctly separates from sibling tools like profiler_start and profiler_is_active by using the verb 'stop' and specifying saving.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not state when to use this tool, such as requiring the profiler to be running first, or when not to use it (e.g., if already stopped). The optional 'discard' parameter is mentioned but not contrasted with normal save behavior. No alternatives or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_uid_to_selectorA

Resolve UID to CSS selector. Fails if stale.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesUID from snapshot

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description adds the behavioral trait 'Fails if stale,' which is helpful. However, it does not disclose the return format (presumably a CSS selector string), error behavior, or side effects. Some transparency is present but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences: the first conveys the core purpose, and the second adds a crucial constraint. No extraneous words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a single parameter, no output schema, and no annotations. The description covers the basic purpose and a failure condition but lacks details about the output format, definition of 'stale,' and error handling. Adequate for a simple tool but has gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes 'uid' as 'UID from snapshot' (100% coverage). The description adds meaning by specifying the operation (resolve to CSS selector), which clarifies the parameter's role beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Resolve UID to CSS selector,' which is a specific verb and resource. It distinguishes itself from sibling tools that use UIDs for actions (e.g., click_by_uid) by explaining it resolves to a selector rather than performing an action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for resolving UIDs from a snapshot, and notes that it fails if stale, but does not provide explicit when-to-use or when-not-to-use guidance relative to siblings. No alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restart_zenA

Restart Zen with different configuration. Allows changing binary path, environment variables, and other options. All current tabs will be closed.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNoNew environment variables in KEY=VALUE format (optional, e.g., ["MOZ_LOG=HTMLMediaElement:5", "MOZ_LOG_FILE=/tmp/ff.log"])
prefsNoZen preferences to set at startup. Values are auto-typed: true/false become booleans, integers become numbers, everything else is a string. Requires MOZ_REMOTE_ALLOW_SYSTEM_ACCESS=1.
zenPathNoNew Zen binary path (optional, keeps current if not specified)
headlessNoRun in headless mode (optional, keeps current if not specified)
startUrlNoURL to navigate to after restart (optional, uses about:blank if not specified)
profilePathNoZen profile parent path (optional, keeps current if not specified)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that all current tabs will close, which is a critical side effect. However, it does not mention potential data loss, required permissions, or whether the operation is reversible, limiting transparency for a restart action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact with two sentences. The first sentence states the core action and purpose, and the second adds a key behavioral note. No redundant text is present, making it efficient for agent parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 6 parameters and no output schema, the description covers the main action and a key side effect but lacks details on process flow, error handling, or prerequisites (e.g., Zen must be running). It is adequate but leaves gaps for an agent needing full context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds minimal extra meaning beyond stating configuration options, thus meeting the baseline for high coverage without exceeding it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Restart) and resource (Zen), and specifies the purpose of changing configuration. It distinguishes from siblings like 'close_page' or 'navigate_page' by focusing on restart with configuration changes, and notes that tabs will close.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for restarting Zen with new configuration but does not explicitly state when to use it vs. alternatives (e.g., 'navigate_page' for just navigation). No exclusion criteria or prerequisites are mentioned, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screenshot_by_uidB

Capture element screenshot by UID as base64 PNG.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesElement UID from snapshot
saveToNoOptional file path to save the screenshot to instead of returning it as image data in the response.

TDQS

B3.2/5.0
Behavior2/5

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 does not disclose any behavioral traits such as side effects, error conditions (e.g., if UID not found), size limits, or whether the tool is read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that effectively communicates the core action. However, it is slightly underspecified for a tool with two parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no output schema, 2 params), the description is minimally adequate but lacks details on return value behavior and error handling. Sibling tools provide context but the description doesn't leverage it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add extra meaning beyond the schema (e.g., relationship between uid and saveTo, or whether saveTo overrides the return).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'capture', the resource 'element screenshot by UID', and the output format 'base64 PNG'. It is specific and distinguishes from sibling 'screenshot_page' which captures the full page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like screenshot_page, or when not to use it. The description does not provide context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screenshot_pageC

Capture page screenshot as base64 PNG.

ParametersJSON Schema
NameRequiredDescriptionDefault
saveToNoOptional file path to save the screenshot to instead of returning it as image data in the response.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It does not disclose whether the screenshot captures the full page or only the visible viewport, nor does it explain the behavior of the 'saveTo' parameter (e.g., whether it suppresses the base64 output). These are important behavioral traits for an AI agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but lacks important details about the scope of the screenshot and parameter behavior. It trades completeness for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema), the description is minimally adequate but leaves ambiguity about the screenshot area and the side effects of 'saveTo'. A more complete description would clarify these aspects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage for its single parameter, which already explains the 'saveTo' option. The tool description adds no additional meaning beyond the schema's description, so it meets the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Capture page screenshot as base64 PNG' clearly states the action (capture) and resource (page screenshot) and output format (base64 PNG). However, it does not explicitly differentiate from sibling tool 'screenshot_by_uid', which might capture specific elements. A slight ambiguity remains whether it captures full page or just viewport.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 'screenshot_by_uid', or any prerequisites such as page being fully loaded. The description lacks any usage context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_pageA

Select active tab by index, URL, or title. Index takes precedence.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL substring (case-insensitive)
titleNoTitle substring (case-insensitive)
pageIdxNoTab index (0-based, most reliable)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description carries full burden. Discloses selection mechanism and precedence, but omits side effects like error handling on no match. Partially transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence of 11 words, front-loaded with verb and resource. No redundancy or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given simple tool with 3 fully documented parameters and no output schema, description explains selection methods and precedence. Could mention return behavior or no-match handling, but adequate for basic use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for each parameter. Description adds 'Index takes precedence' which clarifies relationship but doesn't add new parameter meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'select' and resource 'active tab' with specific methods (by index, URL, or title). Distinguishes from siblings like list_pages and navigate_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or alternatives mentioned. The precedence rule ('Index takes precedence') provides some guidance but not enough context on when to choose this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_viewport_sizeB

Set viewport dimensions in pixels.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYesWidth in pixels
heightYesHeight in pixels

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must fully disclose behavioral traits. It only states the action without mentioning side effects (e.g., whether it resizes the browser window, affects zoom, or requires a page). This is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, short sentence with no redundant words. It is front-loaded with the core action and perfectly sized for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite low complexity, the description fails to explain what happens after setting (e.g., return value, visual impact). With no output schema, more context is needed to fully inform the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The tool description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'Set', the resource 'viewport dimensions', and specifies units in pixels. It uniquely identifies the tool's action among siblings, which include other page actions but none that set viewport size.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when or when not to use this tool. Does not mention prerequisites (e.g., a page must be open) or alternatives. The description assumes the agent will infer usage context, which is insufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

take_snapshotA

Capture DOM snapshot with stable UIDs. Retake after navigation.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxDepthNoMax tree depth
maxLinesNoMax lines (default: 100)
selectorNoCSS selector to scope snapshot to specific element (e.g., "#app")
includeAllNoInclude all visible elements without relevance filtering. Useful for Vue/Livewire apps (default: false)
includeTextNoInclude text (default: true)
includeAttributesNoInclude ARIA attributes (default: false)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, but the description discloses key behavioral traits: stable UIDs and the need to retake after navigation, which helps the agent understand snapshot validity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences: first states purpose, second provides a critical usage guideline. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for conveying when to retake, but lacks details about the snapshot format, return value, or how UIDs are maintained. Given no output schema, more explanation would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with detailed parameter descriptions. The tool description adds minimal value beyond the schema, so baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the purpose with a specific verb 'Capture' and resource 'DOM snapshot', and distinguishes from siblings like 'clear_snapshot' and 'screenshot_by_uid'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear guideline to retake after navigation, implying when the tool should be used again, but does not specify when not to use or compare to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

uninstall_extensionA

Uninstall a Zen extension using WebDriver BiDi webExtension.uninstall command. Requires the extension ID returned by install_extension or obtained from list_extensions.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesExtension ID (e.g., "addon@example.com")

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It mentions the underlying WebDriver BiDi command but fails to disclose that this is a destructive operation, potential side effects, or failure modes. More behavioral context is needed for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences, front-loading the action and method, and then providing the prerequisite. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 no output schema, the description covers the action and input source. However, it lacks details on return values, error behavior, or confirmation, which is a gap for a destructive action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the parameter 'id' is well-described in the schema. The description adds no new information about the parameter format or constraints beyond what the schema provides, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Uninstall' and the resource 'a Zen extension', distinguishing it from sibling tools like install_extension by referencing the extension ID from install_extension or list_extensions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies that the extension ID must be obtained from install_extension or list_extensions, providing clear prerequisite context. However, it does not explicitly state when not to use this tool, though no alternative uninstall tools exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_file_by_uidB

Upload file to file input by UID.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesFile input UID from snapshot
filePathYesLocal file path

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose behavioral traits like whether the upload is synchronous, what happens if the file doesn't exist, or if any events are triggered. The minimal description carries the full burden but adds little insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that conveys the core action efficiently. It could be slightly more informative without being verbose, but it is concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations, output schema, and the tool's action (file upload), the description is incomplete. It does not cover error cases, prerequisites (e.g., file existence), or return value, leaving the agent underinformed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions. The description adds no additional meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Upload file to file input by UID' clearly states the action (upload), resource (file), and target (file input by UID). It distinguishes from sibling tools like 'fill_by_uid' which are for text inputs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 'fill_by_uid' or other interaction tools. The description lacks context for tool selection.

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.

  1. 32 tool updatesv0.2.0
    • First observedaccept_dialog
    • First observedclear_console_messages
    • First observedclear_snapshot
    • First observedclick_by_uid
    • First observedclose_page
    • First observeddismiss_dialog
    • First observeddrag_by_uid_to_uid
    • First observedfill_by_uid
    • First observedfill_form_by_uid
    • First observedget_network_request
    • First observedget_zen_info
    • First observedget_zen_output
    • First observedhover_by_uid
    • First observedinstall_extension
    • First observedlist_console_messages
    • First observedlist_network_requests
    • First observedlist_pages
    • First observednavigate_history
    • First observednavigate_page
    • First observednew_page
    • First observedprofiler_is_active
    • First observedprofiler_start
    • First observedprofiler_stop
    • First observedresolve_uid_to_selector
    • First observedrestart_zen
    • First observedscreenshot_by_uid
    • First observedscreenshot_page
    • First observedselect_page
    • First observedset_viewport_size
    • First observedtake_snapshot
    • First observeduninstall_extension
    • First observedupload_file_by_uid

TDQS

A3.5/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is slight overlap between screenshots and snapshots, and between fill_by_uid and fill_form_by_uid. Overall, agents can differentiate them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with underscores, using 'by_uid' suffix where applicable. Naming is predictable and clear.

Tool Count4/5

32 tools cover a wide range of browser automation features. While slightly high, each tool serves a specific need and the count is justified by the domain complexity.

Completeness4/5

The set covers core browser actions (navigation, element interaction, dialogs), debugging (console, network, profiler), and extension management. Missing high-level actions like 'wait' or 'execute script', but overall comprehensive.

Maintenance

ActivitySlowing
ResponsivenessSyncing

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

Related MCP Servers

Latest Blog Posts

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/simon-ami/zen-devtools-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server