Skip to main content
Glama

CamoFox MCP

AI-powered anti-detection browser automation for MCP-compatible AI agents.

CamoFox MCP connects MCP clients such as Claude Desktop, VS Code, Cursor, and OpenClaw to the CamoFox browser server. It gives agents a practical browser toolset for navigation, interaction, search, extraction, downloads, and session reuse while relying on Camoufox-based anti-detection behavior underneath.

Key Features

  • 47 browser automation tools across navigation, interaction, observation, search, downloads, sessions, and batch workflows.

  • Anti-detection browser automation built on top of the CamoFox browser server and Camoufox.

  • Multi-tab workflows with tracked state, history, and cleanup.

  • Session persistence with cookie import, saved profiles, and optional auto-save.

  • Token-efficient accessibility snapshots with CSS-selector fallbacks for difficult SPA flows.

  • OpenClaw-compatible HTTP transport, plus standard stdio support for desktop MCP clients.

Related MCP server: scout-mcp-server

Quick Install

You need both components running:

  1. camofox-browser handles the anti-detection browser.

  2. camofox-mcp exposes that browser to your MCP client.

Option A: npx + stdio

Start the browser server:

npx camofox-browser@latest

Add CamoFox MCP to your MCP client:

{
  "servers": {
    "camofox": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "camofox-mcp@latest"],
      "env": {
        "CAMOFOX_URL": "http://localhost:9377"
      }
    }
  }
}

Option B: Docker

Start the browser server:

docker run -d -p 9377:9377 --name camofox-browser ghcr.io/redf0x1/camofox-browser:latest

Run CamoFox MCP in HTTP mode for remote MCP clients such as OpenClaw:

docker run -p 3000:8080 --rm \
  -e CAMOFOX_TRANSPORT=http \
  -e CAMOFOX_HTTP_HOST=0.0.0.0 \
  -e CAMOFOX_HTTP_API_KEY=replace-with-32-plus-random-chars \
  -e CAMOFOX_URL=http://host.docker.internal:9377 \
  ghcr.io/redf0x1/camofox-mcp:latest node dist/http.js

Configure your HTTP MCP client to connect to http://localhost:3000/mcp with Authorization: Bearer replace-with-32-plus-random-chars.

Full client configuration examples live in docs/getting-started.md.

Quick Verify

Use camofox-browser 2.4.7 or newer. Browser 2.4.7 adds the supported Windows x64 headless portable distribution and hardens session-scoped navigation recovery without changing the MCP-facing REST request shapes used here. Browser 2.4.6 pins the Camoufox-compatible Playwright protocol dependency for fresh installs, 2.4.5 adds explicit browser auth modes including CAMOFOX_AUTH_MODE=disabled for trusted private agent networks, and 2.4.4 fixes the persistent-context cold-start about:blank page reuse path.

Verify the browser server is reachable:

curl -fsS http://localhost:9377/health

Expected response includes "ok":true and "running":true. On a cold server with no active tabs yet, browserConnected can be false; create a tab to start a browser session.

Tool Categories

Category

Tool count

Docs

Health

1

Health

Tabs

3

Tabs

Navigation

4

Navigation

Interaction

8

Interaction

Observation

8

Observation

Search

1

Search

Session

4

Session

Profiles

4

Profiles

Downloads

3

Downloads

Extraction

3

Extraction

Batch workflows

6

Batch

Presets

1

Presets

Top Limitations

  • CamoFox MCP is not a standalone browser. You must run a compatible camofox-browser server separately.

  • MCP can share the camofox CLI default browser profile/context when create_tab uses userId: "cli-default" and sessionKey: "default", but it cannot reliably attach to a tab the CLI already opened. Importing/adopting existing CLI tabs is a future feature.

  • Headed browser window size follows browser viewport/display-size behavior. Pass viewport, for example { "width": 1366, "height": 768 }, or set CAMOFOX_VIEWPORT=1366x768 / --viewport 1366x768 for a default new-tab size. Supported defaults use width 320..3840 and height 240..2160.

  • On Windows x64, camofox-browser 2.4.7 supports the portable distribution in headless=true mode. Headed and virtual-display modes remain unsupported on Windows; toggle_display will reject those modes there.

  • Accessibility-tree refs are the primary interaction model, but SPA and custom-component sites can require CSS selectors or rendered HTML tools.

  • If the browser server enforces authentication, API-key-gated operations need the same CAMOFOX_API_KEY on both sides.

  • For trusted private-network browser deployments using CAMOFOX_AUTH_MODE=disabled, leave CAMOFOX_API_KEY unset in CamoFox MCP. MCP then sends no outbound browser auth headers. Keep both browser and MCP access on a trusted private network.

  • If HTTP transport is exposed beyond loopback, set CAMOFOX_HTTP_API_KEY and require clients to send it as a Bearer token.

  • HTTP transport is mainly for remote MCP clients. Desktop MCP clients usually work best with stdio configuration.

Security

Treat this as a browser control surface. In shared or networked environments, isolate the browser server, avoid exposing MCP endpoints broadly, and use CAMOFOX_HTTP_API_KEY for inbound HTTP MCP clients plus CAMOFOX_API_KEY when the browser server requires authentication. If the browser server runs CAMOFOX_AUTH_MODE=disabled, leave CAMOFOX_API_KEY unset and keep that browser endpoint on a trusted private network. Session profiles can contain sensitive cookies and should be stored accordingly.

Documentation

Start at docs/README.md for the documentation hub, then use docs/getting-started.md for setup, verification, and first workflow examples.

Contributing + License

See CONTRIBUTING.md for contribution guidelines, SECURITY.md for private vulnerability reporting, and LICENSE for the MIT license.

Available Tools

47 tools
batch_clickA

Click multiple elements sequentially. Continues on error (clicks are independent). Returns per-click results.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID from create_tab
clicksYesArray of elements to click
delayMsNoDelay between clicks in ms

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description clearly discloses error handling ('Continues on error') and independence of clicks, which is critical behavioral context. However, it does not mention potential side effects like navigation or schema-imposed limits (max 10 clicks), though the maxItems constraint is in the schema.

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 three concise sentences, front-loading the main action and then adding key behavioral details. Every sentence earns its place without unnecessary elaboration.

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 tool with three parameters (one a complex array) and no output schema, the description covers core behavior but leaves ambiguity about the return structure. 'Returns per-click results' is vague; specifying the result format (e.g., success boolean, error string) would make it more complete.

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?

Schema coverage is 100%, providing clear descriptions for each parameter. The description adds value by explaining the sequential and independent behavior across the 'clicks' array, which helps agents understand how parameter values interact. It does not elaborate on individual parameter selection (e.g., ref vs. selector), but the schema already covers that adequately.

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 'Click multiple elements sequentially', which precisely communicates the action and resource. It distinguishes itself from the sibling 'click' tool by indicating batch processing with independent errors and per-click results.

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 multiple independent clicks but does not explicitly compare to the sibling 'click' tool or state when to use alternatives. No 'when not to use' guidance is provided, leaving some ambiguity for an AI agent.

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

batch_downloadA

Extract resources from a DOM container and download them all. Combines extract_resources + download in one call. Useful for downloading all images from a chat, all PDFs from a table, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoElement ref from snapshot
tabIdYesTab ID from create_tab
typesNoResource types: 'images', 'links', 'media', 'documents' (singular forms also accepted)
userIdNoUser ID override (default: tracked tab userId)
maxFilesNoMaximum files to download
selectorNoCSS selector for target container
extensionsNoFilter extensions: ['jpg', 'pdf']
concurrencyNoParallel download limit
resolveBlobsNoAuto-resolve blob: URLs

TDQS

A3.9/5.0
Behavior3/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 mentions the tool combines extraction and download, and parameters like concurrency and maxFiles suggest behavior, but it does not disclose potential side effects (e.g., creating files, overwriting) or error conditions. For a batch operation, more transparency is warranted, but it adequately conveys the basic function.

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, front-loading the primary action and including a helpful usage example. Every word contributes: no redundancy, very efficient.

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?

With no output schema, the description could have explained what is returned (e.g., list of downloaded files). It covers parameters adequately but lacks mention of return value or error handling. For a batch tool, slightly incomplete but functional.

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 does not add significant meaning beyond the schema, but it contextualizes the parameters by stating the tool extracts from a container and downloads, which aligns with the parameter roles. No extra value, but no deficiency.

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 extracts resources from a DOM container and downloads them all, specifying it combines extract_resources + download. This differentiates it from siblings like extract_resources and batch_click.

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 provides usage examples (downloading images from a chat, PDFs from a table), giving clear context. It does not explicitly state when not to use, but the examples imply the intended use case. Alternatives like extract_resources are implied by the combination mention.

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

camofox_close_sessionA

Close all browser tabs for a user session. Use for complete cleanup when done with a browsing session.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesAny tab ID from the session to identify the user

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description must disclose behavior. It states the destructive action but lacks details on edge cases (e.g., invalid tabId, multiple sessions). Adequate but not comprehensive.

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: two short sentences that front-load the key action and use-case. No wasted words.

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 no output schema and one parameter, the description adequately explains what it does and when to use it. Could mention if it closes all windows or only the user's session tabs, 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 coverage is 100%, and the description repeats the schema's description exactly, adding no new meaning beyond what the schema already provides. Baseline score of 3 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 action ('Close all browser tabs') and the target ('for a user session'), distinguishing it from sibling 'close_tab' which closes a single tab.

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?

Explicitly recommends usage 'when done with a browsing session', but does not mention when not to use it or contrast with alternatives like 'close_tab'.

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

camofox_evaluate_jsA

Execute JavaScript in the browser page context. Runs in isolated scope (invisible to page scripts — safe for anti-detection). Use for: extracting data not visible in accessibility snapshot, checking element properties, reading computed styles, manipulating DOM elements. Requires CAMOFOX_API_KEY only when browser-server authentication is enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID from create_tab
timeoutNoExecution timeout in ms (max 30000)
expressionYesJavaScript expression to evaluate (e.g. 'document.title', 'document.querySelectorAll("img").length', 'document.querySelector(".modal").scrollHeight')

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the isolated scope and anti-detection safety feature, which is valuable. It also mentions the API key requirement conditionally. However, it does not describe the return value format, potential side effects of DOM manipulation, or concurrency/error behavior, leaving meaningful 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 brief yet information-dense. It opens with the primary action, then adds scope/safety, use cases, and an auth condition in a structured way. Every sentence serves a purpose and there is no filler.

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 is a JavaScript evaluator, which can have complex return values and side effects. The description covers core purpose and usage, but does not explain what the tool returns (the evaluation result), how errors are surfaced, or whether the script runs synchronously. This leaves some context incomplete.

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?

Schema coverage is 100%, so the baseline is 3. The description adds value by providing concrete expression examples and clarifying that tabId comes from create_tab. This helps the agent understand how to format expressions and where to obtain the tabId.

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?

Begins with a specific verb+resource: 'Execute JavaScript in the browser page context'. Clearly distinguishes from sibling tools such as click, type_text, and snapshot by stating its function and scope. Includes concrete use cases ('extracting data not visible in accessibility snapshot', etc.) that reinforce purpose.

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 explicit 'Use for:' scenarios, giving clear context on when to invoke this tool. Also notes a prerequisite (CAMOFOX_API_KEY only when browser-server authentication is enabled). However, it does not explicitly mention when NOT to use it or name alternative tools for other operations, such as clicking or navigating.

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

camofox_get_page_htmlA

Get rendered HTML from the live DOM. Use when snapshot refs are incomplete on SPA/custom-component sites or when you need the final DOM state rather than the accessibility tree. Optionally pass a CSS selector to return only that element's outerHTML instead of the full page. Requires CAMOFOX_API_KEY only when browser-server authentication is enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID from create_tab
selectorNoOptional CSS selector to scope HTML extraction to a single element

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so the description carries the full burden. It discloses the optional selector behavior (returns outerHTML), the auth requirement (CAMOFOX_API_KEY only when auth enabled), and clarifies it operates on the live DOM. It does not explicitly state read-only, but 'Get' implies no mutation. Lacks details on error handling or size limits, but sufficient for a simple getter.

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?

Three sentences, front-loaded with main purpose, each sentence adds value with no 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?

Given the low complexity (2 params, no output schema, no annotations), the description covers purpose, usage context, parameter behavior, and auth requirement. It is complete for an agent to decide and invoke. Minor omission of error/edge-case behavior but not critical.

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?

Schema covers both parameters with descriptions. The description adds behavioral semantics by explaining that selector returns that element's outerHTML instead of full page, and ties tabId to create_tab already in schema. This exceeds baseline.

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 explicitly states 'Get rendered HTML from the live DOM' with a specific verb and resource. It distinguishes itself from snapshot and accessibility tree by targeting SPA/custom-component sites and final DOM state, differentiating it from siblings like snapshot and camofox_query_selector.

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 explicit use cases: when snapshot refs are incomplete on SPA/custom-component sites or when final DOM state is needed. Clearly implies snapshot/accessibility tree as alternatives, though it does not name them directly.

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

camofox_hoverA

Hover over an element to trigger tooltips, dropdown menus, or hover states. Use ref from snapshot or CSS selector.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoElement ref from snapshot (e.g. 'e5')
tabIdYesTab ID
selectorNoCSS selector (e.g. '#menu-item', '.dropdown-trigger')

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided; description only states the basic action without disclosing side effects, prerequisites (e.g., element must be visible), or safety profile, leaving significant behavioral 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?

Two short, clear sentences with no wasted words; 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?

For a simple hover action with good schema coverage, the description covers the essentials, though it doesn't note if subsequent actions (like waiting or snapshotting) are needed.

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 description adds practical context by emphasizing that either ref or selector should be used, complementing the schema which marks both as optional but does not indicate at least one is needed.

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 ('hover') and its purpose (trigger tooltips, dropdown menus, or hover states), distinguishing it from click or other interaction tools.

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?

It mentions using ref or CSS selector, giving some direction on element specification, but lacks explicit guidance on when to use hover over alternatives like click or scroll.

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

camofox_press_keyA

Press a keyboard key. Use after type_text to submit forms (Enter), navigate between elements (Tab), move through suggestions (ArrowDown/ArrowUp), or dismiss dialogs (Escape). Common keys: Enter, Tab, Escape, ArrowDown, ArrowUp, Backspace, Space.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesKey to press (e.g. 'Enter', 'Escape', 'Tab', 'ArrowDown')
tabIdYesTab ID from create_tab

TDQS

A4.2/5.0
Behavior3/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 discloses the action (press key) and lists typical use cases, but does not cover edge cases like invalid keys or tab IDs, nor does it specify that only single keys are supported. Adequate for a simple 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?

Two sentences: first states purpose, second provides usage guidelines and examples. No wasted words, front-loaded, and efficient.

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?

No output schema is needed for this simple tool. The description covers the key use cases and common keys, making it complete for an agent to invoke. Minor gaps remain (e.g., handling bad input), but overall sufficient.

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?

Schema coverage is 100%, so baseline is 3. The description adds value by providing a list of common keys and contextual use cases beyond the schema's parameter descriptions, though 'tabId' lacks extra detail.

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 presses a keyboard key and lists specific use cases (submit forms, navigate, etc.), differentiating it from siblings like type_text and click.

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 to use after type_text for common actions like Enter, Tab, Escape, ArrowDown, ArrowUp, etc., and lists common keys. It lacks explicit when-not-to-use, but the guidance is clear and practical.

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

camofox_query_selectorA

Query a CSS selector in the live DOM and return its element details or a specific attribute. Use this for targeted inspection without writing raw evaluate_js. Requires CAMOFOX_API_KEY only when browser-server authentication is enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID from create_tab
selectorYesCSS selector to query
attributeNoOptional attribute name to return instead of the full element payload

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context about authentication ('Requires CAMOFOF_API_KEY only when browser-server authentication is enabled') and that it operates on the 'live DOM'. However, it does not specify whether the operation is read-only, what the exact return payload looks like, or error handling behavior.

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, front-loaded with the main action, and every sentence adds value (function, use case/alternative, auth note). There is zero waste.

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 query tool with 3 parameters and no output schema, the description covers purpose, usage, and authentication context. It could specify more about what 'element details' includes or the return shape, but the provided information is sufficient for basic selection and invocation.

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 have full schema descriptions (100% coverage), so the baseline is 3. The description adds marginal meaning by mentioning 'element details or a specific attribute' which aligns with the optional 'attribute' parameter, but it does not provide new semantics 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 the tool's function with a specific verb ('Query') and resource ('CSS selector in the live DOM'), and specifies the output ('element details or a specific attribute'). It distinguishes itself from sibling tools like camofox_evaluate_js by positioning it as the targeted inspection alternative without raw evaluate_js.

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 provides explicit when-to-use guidance: 'Use this for targeted inspection without writing raw evaluate_js.' This names a specific alternative (evaluate_js) and a use case (targeted inspection). It does not mention any exclusions or other alternatives, but the guidance is clear enough for selecting the tool.

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

camofox_scroll_elementA

Scroll a specific container element (modal dialog, scrollable div, sidebar). Use when page-level scroll doesn't reach content inside modals or overflow containers. Returns scroll position metadata to track progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoElement ref from snapshot (e.g. 'e5')
tabIdYesTab ID from create_tab
deltaXNoHorizontal scroll pixels
deltaYNoVertical scroll pixels (positive=down, negative=up)
selectorNoCSS selector for scrollable container (e.g. '[role=dialog]', '.modal-body')

TDQS

A4.4/5.0
Behavior4/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 mentions the return of 'scroll position metadata to track progress,' which adds behavioral insight. It could be more explicit about side effects, but scrolling is generally benign.

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, front-loaded with purpose and usage condition, no unnecessary words. Every sentence adds value.

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

Completeness4/5

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

Given no output schema, the description mentions return metadata and provides sufficient context for a scrolling tool. Potential for slightly more detail on return structure, but not critical.

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?

Input schema has 100% description coverage with clear descriptions per parameter. The description adds no additional parameter-specific semantics beyond the schema, so baseline 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 it scrolls a specific container element (modal dialog, scrollable div, sidebar), using a specific verb+resource. It distinguishes from sibling 'scroll' (page-level scroll) by specifying container-level scrolling.

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

Usage Guidelines5/5

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

Explicitly says 'Use when page-level scroll doesn't reach content inside modals or overflow containers,' providing clear context and suggesting an alternative (page-level scroll).

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

camofox_scroll_element_and_snapshotA

Scroll a container element AND take a snapshot. Combines scroll_element + snapshot in one call. Perfect for incrementally loading lazy content in modals (e.g. Facebook group post comments). Returns both scroll position and page snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoElement ref from snapshot
tabIdYesTab ID
deltaYNoScroll delta
waitMsNoWait before snapshot (ms)
selectorNoCSS selector for scrollable container

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so description carries all burden. It discloses composite action (scroll + snapshot), return values (scroll position and snapshot), and the waitMs parameter implies a wait before snapshot. Missing details like side effects or auth needs, but for a straightforward combination tool this is adequate.

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: two sentences with no wasted words. First sentence states the action; second sentence provides context and return values. Information is front-loaded and scannable.

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?

Covers purpose, usage context, and return values. Does not explain the roles of selector and ref parameters (but schema does). With no output schema, the description compensates by mentioning returns. Overall sufficiently complete for the tool's complexity.

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% (every parameter has a description). Description adds no additional semantics beyond what the schema already provides for each parameter. 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 action: scroll a container and take a snapshot. It explicitly combines two sub-tools (scroll_element and snapshot), distinguishing from sibling tools like camofox_scroll_element (only scroll) and snapshot (only snapshot). The use case (lazy content in modals) adds specificity.

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 concrete example ('incrementally loading lazy content in modals e.g. Facebook group post comments'), suggesting when to use. Does not explicitly exclude alternatives (e.g., using separate tools) but the context of sibling tools and the description's 'combines' hint at the trade-off.

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

camofox_wait_forA

Wait for page to be fully ready (DOM loaded, network idle, framework hydration complete). Use after navigation or actions that trigger page changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID
timeoutNoTimeout in ms (default: 10000)
waitForNetworkNoWait for network idle (default: true)

TDQS

A4.1/5.0
Behavior3/5

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

No annotations exist, but the description discloses the specific conditions waited for (DOM, network idle, hydration). However, it does not mention timeout behavior, error handling, or whether the tool returns a success indication, leaving gaps in behavioral transparency.

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 consists of two concise sentences: the first states the purpose, the second provides usage guidance. Every word adds value with no redundancy or fluff.

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 description covers purpose and usage but lacks details on return value, error behavior (e.g., timeout), and what 'fully ready' entails in edge cases. Given the tool's simplicity and the presence of sibling tools, it is adequate but not fully comprehensive.

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?

Schema coverage is 100% with parameter descriptions, but the description adds meaning by explaining the three waiting criteria (DOM, network, hydration), which enriches understanding of the timeout and waitForNetwork parameters beyond their schema definitions.

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 waits for a page to be fully ready (DOM loaded, network idle, framework hydration). It differentiates from sibling wait tools like camofox_wait_for_selector by targeting overall page readiness rather than specific elements or text.

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 'Use after navigation or actions that trigger page changes,' providing clear context. While it doesn't list exclusions or alternatives, the usage guidance is direct and sufficient for the intended scenario.

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

camofox_wait_for_selectorA

Wait for a CSS selector to appear in the live DOM. Use for SPA hydration and async content when snapshot refs are incomplete or stale. Once found, prefer snapshot refs for interaction when available. Requires CAMOFOX_API_KEY only when browser-server authentication is enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID from create_tab
timeoutNoTimeout in ms (default: 10000)
selectorYesCSS selector to wait for

TDQS

A4.2/5.0
Behavior3/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 discloses the waiting behavior and the API key requirement, but does not mention what happens on timeout or whether it returns a value or throws an exception.

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?

Three concise sentences with no filler. Each sentence adds meaningful information: the main action, when to use it, and the authentication caveat.

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 relatively simple wait-for-selector tool, the description is fairly complete: it explains the purpose, usage, and an edge case (snapshot refs). However, it doesn't describe the return value or error behavior, which would make it fully complete given 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?

Schema description coverage is 100%, so parameters (tabId, selector, timeout) are well-documented in the schema. The description adds no extra parameter semantics beyond what's in the schema, so the baseline 3 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 action ('Wait for a CSS selector to appear') and the target resource ('live DOM'). It distinguishes itself from sibling tools like camofox_wait_for_text by focusing on CSS selectors.

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

Usage Guidelines5/5

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

Provides explicit usage context ('for SPA hydration and async content when snapshot refs are incomplete or stale') and guidance to prefer snapshot refs once found. Also notes the conditional API key requirement.

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

camofox_wait_for_textA

Wait for specific text to appear on the page. Useful for waiting for search results, form submissions, or dynamic content loading.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to wait for
tabIdYesTab ID
timeoutNoTimeout in ms (default: 10000)

TDQS

A4.1/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 states the tool waits for text to appear but omits details like polling interval, scrolling behavior, or timeout error handling. The inclusion of a timeout parameter hints at failure behavior but is not explicit.

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, front-loaded with the action and followed by relevant use cases. Every word serves a purpose, and there is no redundancy or unnecessary detail.

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 description covers the basic purpose and use cases but lacks details on behavioral aspects (polling, timeout behavior, error handling). Given the tool's simplicity and no output schema, it is moderately complete but could be more explicit about behavior.

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?

Schema coverage is 100%, so the description adds value by contextualizing the 'text' parameter as waiting for appearance. However, no additional explanation is given for 'tabId' or 'timeout' beyond the schema, leaving some semantic gaps.

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 ('wait for specific text') and resource ('on the page'), with explicit use cases. It effectively distinguishes this tool from siblings like camofox_wait_for_selector by focusing on text content.

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 provides clear context for when to use the tool (search results, form submissions, dynamic content). However, it does not explicitly state when not to use it or mention alternative tools (e.g., wait_for_selector) for comparison.

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

clickA

Click an element. Provide either ref (from snapshot) or CSS selector. Use snapshot first to discover element refs.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoElement ref from snapshot (e.g. 'e1', 'e2')
tabIdYesTab ID from create_tab
selectorNoCSS selector (e.g. 'button.submit', '#login')

TDQS

A3.9/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It only says 'Click an element' without disclosing waiting behavior, navigation triggers, or whether it returns anything. Minimal behavioral info.

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 redundant words. Front-loaded with action, then details. Highly efficient.

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?

No output schema, so description should cover return values or side effects. It doesn't. Tool is simple but lacks info on what happens after click (e.g., navigation). Barely adequate.

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?

Schema description coverage is 100%, so baseline is 3. Description adds value by advising to use snapshot for ref discovery, supplementing the schema's parameter descriptions.

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 'Click an element' with specific verb and resource. It distinguishes from siblings like batch_click by mentioning ref or selector. No ambiguity.

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?

Explicitly advises to use snapshot first to discover refs. Provides clear context but doesn't contrast with alternatives like hover or type_text.

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

close_tabA

Close a browser tab and release resources. Always close tabs when done to free memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID from create_tab

TDQS

A4.2/5.0
Behavior4/5

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

Without annotations, the description adds value by disclosing that the tool releases resources and frees memory, indicating a destructive but beneficial cleanup action. No mention of error behavior, but acceptable for a simple mutation.

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 short, direct sentences with no redundant information. 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?

The description covers the core action and usage reason. For a simple close operation with no output schema, it is reasonably complete, though it could mention typical return values or error cases.

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 description 'Tab ID from create_tab' is sufficient. The tool description does not add extra parameter context beyond the schema, so baseline 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 action 'close a browser tab' and the resource 'browser tab', distinguishing it from sibling tools like create_tab and list_tabs.

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 advises 'Always close tabs when done to free memory,' providing a clear usage guideline, though it lacks explicit when-not-to-use or alternative instructions.

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

create_tabA

Create a new browser tab with anti-detection fingerprinting. Each tab gets a unique fingerprint. Optionally provide a URL, userId, sessionKey, and viewport. To share the camofox CLI default browser profile/context, pass userId "cli-default" and sessionKey "default"; this creates a tracked MCP tab in that context but does not attach to a CLI tab that is already open.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoFull URL including protocol (e.g. 'https://example.com')
proxyNoRaw proxy override. proxyProfile takes precedence when both are provided.
localeNoBCP 47 locale override (e.g. "ja-JP", "vi-VN")
presetNoNamed geo preset (e.g. "us-east", "us-west", "japan", "uk", "germany", "vietnam", "singapore", "australia"). Sets locale, timezone, and geolocation.
userIdNoUser ID for session isolation. MCP defaults to CAMOFOX_DEFAULT_USER_ID/default; use "cli-default" with sessionKey "default" to share the camofox CLI default context.
geoModeNoGeo merge mode. explicit-wins keeps explicit locale/timezone/geolocation; proxy-locked requires proxy/profile geo values.
viewportNoBrowser viewport/display size override. Use this to control wide windows, for example { "width": 1366, "height": 768 }.
sessionKeyNoSession key for browser context reuse. Defaults to a new unique session; use "default" with userId "cli-default" for the camofox CLI default context. This does not attach to a tab that the CLI already opened.
timezoneIdNoIANA timezone override (e.g. "Asia/Tokyo", "Asia/Ho_Chi_Minh")
geolocationNoGPS coordinates override
proxyProfileNoNamed proxy profile configured in camofox-browser

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that each tab gets a unique fingerprint, and explains the behavior of sharing the CLI context. However, it does not mention what the tool returns, whether it opens a new window, or any potential side effects like rate limits.

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 paragraph of four sentences, front-loading the core action. It is clear and efficient, though a more structured layout (e.g., bullet points for the CLI sharing case) could improve scannability.

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 11 parameters including nested objects and no output schema, the description adequately covers the tool's purpose and CLI context behavior. However, it omits return value information and broader tab lifecycle context, leaving some gap for agent decision-making.

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 adds context for userId/sessionKey sharing and viewport usage, but does not introduce new meaning beyond the schema's detailed descriptions.

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 'Create a new browser tab with anti-detection fingerprinting'—a specific verb and resource. It distinguishes from siblings like close_tab and navigate by emphasizing fingerprinting and parameter customization.

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 gives explicit guidance for sharing the CLI default profile using userId 'cli-default' and sessionKey 'default', and notes that this does not attach to an already open CLI tab. However, it does not explicitly compare to alternatives like load_profile or navigate for creating tabs.

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

delete_downloadB

Delete a downloaded file from disk and registry

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdNoUser ID (default: CAMOFOX_DEFAULT_USER_ID)
downloadIdYesID of the download to delete

TDQS

B3.1/5.0
Behavior2/5

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

The description states it deletes from disk and registry, implying destructiveness, but provides no details on side effects (e.g., whether it's permanent, if permissions are needed, or error handling). With no annotations, more transparency is needed.

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, no wasted words. However, it lacks structure such as usage notes or examples, which would further improve clarity.

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?

The description is minimal and does not address return values, errors, or expected behavior beyond deletion. For a destructive tool, the agent likely needs to know if it succeeds silently or throws errors, which is missing.

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 descriptions already fully explain the parameters (downloadId and userId), so the description adds no extra meaning. Baseline score of 3 is appropriate given 100% 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?

The description clearly states the action ('Delete'), the resource ('a downloaded file'), and the scope ('from disk and registry'), making it easy to understand what the tool does. It distinguishes from siblings like 'get_download' and 'list_downloads' by the destructive nature.

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, nor any prerequisites or context for safe use. For example, it does not mention checking if the download exists or that deletion is irreversible.

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

delete_profileB

Delete a saved browser profile from disk. Removes the profile's cookie data permanently.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileIdYesProfile name to delete

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 bears full responsibility for behavioral disclosure. It mentions permanent deletion of cookie data but is ambiguous about what else is deleted (e.g., history, bookmarks). Lacks details on side effects, authorization needs, or error conditions.

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?

Two sentences clearly state the action and permanence. No unnecessary words. However, it could be more informative without additional length, e.g., specifying what exactly is deleted.

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 required parameter and no output schema, the description is moderately complete. It covers the basic purpose and permanence but lacks details on error handling, prerequisites, and full scope of deletion (profile vs cookies only).

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

Parameters2/5

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

Schema coverage is 100% and already describes the profileId as 'Profile name to delete'. The description adds minimal value by repeating 'saved browser profile' but does not clarify naming conventions, existence requirements, or format validation 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 the action (delete) and the resource (saved browser profile), and it distinguishes from sibling tools like save_profile and load_profile by specifying permanence and disk removal.

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 or avoid this tool. It does not mention prerequisites (e.g., profile existence) or alternatives (e.g., other profile management tools). The description implies finality but no warning about cascading effects.

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

extract_resourcesA

Extract resources (images, links, media, documents) from a specific DOM container. Use a CSS selector or element ref from snapshot to scope extraction to a particular section of the page. This is useful for extracting all images from a specific post, all links from a table, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoElement ref from snapshot (e.g., 'e12'). Either selector or ref required.
tabIdYesTab ID from create_tab
typesNoResource types to extract: 'images', 'links', 'media', 'documents' (singular forms also accepted). Default: all.
userIdNoUser ID override (default: tracked tab userId)
maxDepthNoMax nesting depth for container traversal
selectorNoCSS selector for target container (e.g., '.message:nth-child(3)')
extensionsNoFilter by file extensions: ['pdf', 'jpg', 'png']
resolveBlobsNoResolve blob: URLs to data: URIs
triggerLazyLoadNoScroll to trigger lazy-loaded images before extraction

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It describes a read operation but lacks details on side effects, permissions, or return behavior. Adequate but not comprehensive.

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, front-loaded with core purpose. No wasted words. Highly concise.

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?

With 9 parameters and no output schema, description is brief. Does not mention return format, error handling, or behavior for edge cases. Adequate but could be more 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 coverage is 100% (all parameters have descriptions). Description adds that selector and ref are for scoping, but this is already clear from schema. Minimal added value 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 'Extract' and resource types 'images, links, media, documents' from a specific DOM container. Distinguishes from siblings like batch_download and get_links by specifying scoped extraction.

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?

Explicitly says when to use: 'Use a CSS selector or element ref from snapshot to scope extraction to a particular section of the page.' Provides example use cases. Does not mention when not to use or alternatives, but sufficient.

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

extract_structuredB

Extract deterministic structured JSON from a page using the camofox-browser structured extraction schema.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID from create_tab
schemaYesStructured extraction schema understood by camofox-browser
userIdNoUser ID override (default: tracked tab userId)

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 should disclose side effects, auth needs, or reliability guarantees. Only 'deterministic' is mentioned, but no further behavioral traits are described.

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 with no wasted words, but could be slightly more structured by separating purpose from the schema reference.

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 three parameters and no output schema, the description lacks details about return format, prerequisites (e.g., page already loaded), and potential side effects, making it incomplete for an agent to use confidently.

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?

Input schema descriptions cover all parameters, so baseline is 3. The description adds no meaningful extra context beyond what the schema provides; it only repeats the mention of 'camofox-browser'.

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 'Extract deterministic structured JSON from a page' and specifies the schema used, which distinguishes it from sibling tools like 'extract_resources' that extract different content.

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 'camofox_evaluate_js' or 'extract_resources'. The description does not mention prerequisites or context for optimal use.

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

fill_formA

Fill multiple form fields in one call. Provide an array of field entries, each with a ref or CSS selector and the text to type. Optionally specify a submit button to click after filling.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID from create_tab
fieldsYesArray of form fields to fill
submitNoOptional submit button to click after filling all fields

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description alone must inform behavior. It discloses the core actions (filling fields and optionally clicking submit) but does not mention side effects, error handling, or whether changes are reversible. With no annotations, this is merely adequate.

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 sentences with no wasted words. The essential information is front-loaded: the tool fills multiple fields in one call, then details the input structure, and ends with the optional submit. This is an excellent use of space.

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 the moderate complexity (nested objects, 3 parameters, no output schema), the description covers the key points: how to specify fields and the optional submit button. It does not explain order of execution or what happens on errors, but for a form-filling tool this is sufficient. It could be slightly more thorough about failure scenarios.

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 paraphrases the schema (e.g., 'each with a ref or CSS selector and the text to type') but adds minimal extra meaning and slightly misstates that each entry must have a ref or selector, while schema only requires text. It does not compensate for any gaps.

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 fills multiple form fields in one call, which distinguishes it from single-field tools like type_text and type_and_submit. The verb 'fill' and resource 'form fields' are specific, and the batch nature is emphasized.

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 implies use when multiple fields need filling, and the existence of sibling tools like type_text for single fields provides context. However, it doesn't explicitly state when to avoid or list alternatives, missing a chance to clarify the best use case.

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

get_downloadA

Get a downloaded file. Images are always returned as viewable images. Recommended for AI agents: set includeContent=true to get non-image file content as base64 inline (max 256KB). Otherwise returns metadata only (including contentUrl).

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdNoUser ID (default: CAMOFOX_DEFAULT_USER_ID)
downloadIdYesID of the download
includeContentNoWhether to include file content for non-image files

TDQS

A4.4/5.0
Behavior4/5

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

No annotations exist, so the description carries full burden. It clearly explains that images are returned as viewable images, and for non-images, behavior depends on includeContent (metadata only vs base64 inline, max 256KB). It does not address error cases, rate limits, or authentication, but the behavior is well-specified.

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, front-loaded with the core action. Every sentence adds value: stating purpose, clarifying image behavior, and providing a recommendation. No wasted words.

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 output schema, the description adequately explains return values: images are viewable, non-images either base64 inline (if includeContent true) or metadata only with contentUrl. It does not cover error conditions or specific file type handling, but for a simple retrieval tool, it is sufficient.

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?

Schema coverage is 100%, so baseline is 3. The description adds meaningful context for includeContent by explaining its effect (base64 inline for non-images, max 256KB) and the default behavior. For downloadId and userId, the description adds no additional meaning beyond the schema, but the includeContent guidance elevates the score.

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 states 'Get a downloaded file' with specific verb and resource. It distinguishes from siblings like list_downloads and delete_download by focusing on retrieval. The additional detail about images being viewable and guidance for AI agents further clarifies the tool's purpose.

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 recommends setting includeContent=true for non-image file content, providing explicit guidance on when to use that parameter. However, it does not discuss when to use this tool versus alternatives like list_downloads or delete_download, nor does it indicate 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.

get_statsB

Get session statistics: request counts, active tabs, uptime, performance metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID from create_tab

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 must carry the full burden. It implies read-only behavior but does not disclose details such as whether the tool is safe, idempotent, or has any side effects. The description is insufficient for behavioral transparency.

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, efficient sentence with no wasted words. It front-loads the purpose and lists specific metrics concisely.

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 absence of an output schema, the description lists return categories but lacks specifics on shape or format. It is somewhat complete for a simple tool but could be more detailed about the output structure.

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% for the single parameter 'tabId', which is described as 'Tab ID from create_tab'. The description does not add additional meaning beyond the schema, earning a baseline score of 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 clearly states the verb 'Get' and the resource 'session statistics', listing specific metrics (request counts, active tabs, uptime, performance metrics). It effectively distinguishes this tool from siblings, none of which focus on statistics.

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, nor does it specify exclusions or context. An agent would have no basis to decide 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.

go_backA

Navigate backward in browser history (Back button). Returns new page URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID from create_tab

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full behavioral burden. It discloses the outcome (new page URL) but lacks details such as whether it navigates only one step, what happens if history is empty, or any side effects (e.g., state loss).

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 sentence that concisely captures the tool's purpose and output. No redundant information, and every word earns its place.

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 navigation tool with one parameter and no output schema, the description provides sufficient context: the action, the output, and the connection to browser history. It is complete enough for an agent to understand usage, though it could mention the single-step nature.

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% description coverage for its single parameter (tabId), which is already well-described. The description does not add further semantic value 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 action ('Navigate backward in browser history') and compares it to the familiar 'Back button'. It also specifies the output ('Returns new page URL'). This distinguishes it from sibling tools like go_forward and navigate.

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 does not provide explicit guidance on when to use this tool versus alternatives. However, the action is self-explanatory, and the sibling go_forward implies the opposite direction. No exclusion criteria or prerequisites are mentioned.

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

go_forwardA

Navigate forward in browser history (Forward button). Returns new page URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID from create_tab

TDQS

A3.5/5.0
Behavior2/5

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

The description notes it returns the new page URL, but no annotations are provided. It does not describe behavior when there is no forward history, potential errors, or side effects (e.g., page load).

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 that conveys essential information without fluff.

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, the description is fairly complete but omits error handling details (e.g., no forward history). With no annotations, more behavioral context 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?

The input schema has 100% coverage for the single parameter (tabId), and the description adds no additional meaning beyond what the schema provides.

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 explicitly states the tool 'navigates forward in browser history' and calls it 'Forward button', which clearly distinguishes it from siblings like go_back and navigate.

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 purpose implies when to use (going forward in history), but it does not explicitly mention when not to use or suggest alternatives like go_back or navigate.

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

import_cookiesA

Import cookies for authenticated sessions. Provide cookies in a JSON string array. Restores login sessions without re-auth. Requires userId.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdNoTab ID to target correct session (needed when using presets)
userIdYesUser ID for session isolation
cookiesYesJSON string of cookie array to import

TDQS

A3.5/5.0
Behavior3/5

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

Discloses that the tool imports cookies and restores sessions, implying a write operation, but does not detail whether it overwrites existing cookies, requires any special permissions, or has side effects. Given no annotations, the description provides moderate but incomplete behavioral insight.

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 succinct sentences deliver the core purpose and parameter hints without redundancy. Every sentence contributes 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?

Covers basic functionality and required parameters but omits what happens during import (e.g., merge vs. replace), error conditions, and absence of output schema leaves agents guessing about return values.

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 description's mention of 'JSON string array' for cookies and 'userId' requirement adds no new information. It does not clarify the format of the cookie array or the purpose of 'tabId' beyond what the schema already states.

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?

Explicitly states 'Import cookies for authenticated sessions' with a clear verb and resource, and further explains it restores login sessions without re-authentication. It is distinct from all sibling tools, none of which directly handle cookies.

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?

Lacks guidance on when to use this tool versus alternatives like 'load_profile' or manual authentication. No mention of prerequisites beyond 'Requires userId', and no exclusions or negative cases.

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

list_downloadsA

List downloaded files with optional filtering by tab, status, extension, MIME type, and size range. Each download includes contentUrl for direct file retrieval.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order: 'createdAt:asc' or 'createdAt:desc' (default)
limitNoMax results to return
tabIdNoFilter by specific tab. If omitted, lists all user downloads.
offsetNoResult offset
statusNoFilter by status: pending, completed, failed, canceled
userIdNoUser ID (default: CAMOFOX_DEFAULT_USER_ID or tracked tab userId)
maxSizeNoMaximum file size in bytes
minSizeNoMinimum file size in bytes
mimeTypeNoFilter by MIME type prefix: 'image/', 'application/pdf'
extensionNoFilter by file extension, comma-separated: 'pdf,zip,jpg'

TDQS

A4/5.0
Behavior3/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 discloses that each download includes a contentUrl for retrieval, which adds value beyond the schema. However, it does not disclose any behavioral traits such as data freshness, pagination behavior, or potential side effects. The description is adequate but not rich.

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 succinct with two sentences. The first sentence covers purpose and filters, and the second adds a key output detail. No unnecessary words – every sentence earns its place.

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 the number of parameters (10) and no output schema, the description is fairly complete by stating filtering criteria and a key output field. However, it lacks mention of pagination defaults (limit/offset) and sort behavior, though these are in the schema. The description could be slightly more comprehensive, but it covers the essentials.

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 description does not need to repeat parameter details. It mentions filtering capabilities, which are already in the schema, and adds the context of contentUrl in the output. This adds marginal value, justifying a baseline score of 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 clearly states the tool's purpose: listing downloaded files with optional filtering. It specifies the verb 'List' and the resource 'downloaded files', and distinguishes from siblings like 'get_download' (singular) and 'delete_download'. The mention of specific filter criteria and contentUrl adds precision.

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 implies usage by listing available filters, but does not explicitly state when to use this tool versus alternatives. However, given the sibling set, no other listing tool exists, so the context is clear. A brief statement of when not to use (e.g., for a single download) would improve this dimension.

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

list_presetsA

List all available geo presets supported by the CamoFox server. Presets include locale, timezone, and optional geolocation.

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?

No annotations are provided, so the description carries the burden of behavioral disclosure. It states 'list all available', indicating a read-only operation with no side effects. This is transparent for a simple list 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 two sentences, front-loaded with the action, and contains no extraneous information. Every word serves a purpose.

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?

The tool is straightforward: a parameterless list operation. The description adequately specifies the content of presets (locale, timezone, geolocation), making it complete even without an output schema.

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 in the input schema, and schema coverage is 100% (vacuously). The description does not need to add parameter detail, and its mention of what presets include is sufficient given the tool's simplicity.

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 lists all available geo presets, specifying their content (locale, timezone, optional geolocation). This distinguishes it from sibling tools that perform actions like clicking or navigating.

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

Usage Guidelines3/5

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

The description implies this tool is for retrieving available presets, but lacks explicit guidance on when to use it versus alternatives or any prerequisites. The context is clear enough for a simple list operation.

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

list_profilesA

List all saved browser profiles with metadata. Shows profile names, cookie counts, save dates, and descriptions.

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?

No annotations are provided, so the description carries the full burden. It accurately describes a read-only operation with scope ('all saved browser profiles') and lists output fields, but does not disclose any potential restrictions like authentication or rate limits. Still, it's sufficiently transparent for a simple listing 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 two concise sentences, front-loaded with the main action and followed by details. No extraneous words, earning its place.

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?

Given no parameters and no output schema, the description fully covers what the tool does and what it returns. No additional context is needed.

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 input schema has zero parameters, so the description does not need to explain parameters. Baseline score of 4 is appropriate as there is no missing information.

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 lists all saved browser profiles and specifies the metadata fields (profile names, cookie counts, save dates, descriptions), making it distinct from sibling tools like load_profile or delete_profile.

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 this tool is for listing profiles, but does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives. The context is simple enough that it's acceptable but not fully helpful.

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

list_tabsA

List all open browser tabs with URLs and titles. Use to discover available tabs or verify tab state.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, but the description implies a non-destructive read operation. It does not mention performance or limits, but for a straightforward listing tool, this is adequate.

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 short sentences, each meaningful. No superfluous information. The structure is front-loaded with the core purpose.

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?

Given no parameters, no output schema, and the simplicity of listing tabs, the description fully satisfies the need. It specifies what fields are returned (URLs and titles).

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 zero parameters, so the description adds no parameter meaning—this is appropriate. The baseline for 0 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 (list), the resource (open browser tabs), and the returned data (URLs and titles). It distinguishes itself from sibling tools like close_tab or create_tab.

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 suggests two use cases: discovering available tabs and verifying tab state. While it doesn't explicitly exclude alternate tools, this is sufficient for a simple list operation.

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

load_profileA

Load a saved profile's cookies into an active browser tab. Restores login sessions without re-authentication. Use after create_tab to restore saved state.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID to load cookies into
profileIdYesProfile name to load

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description partially discloses behavior: it restores login sessions without re-authentication. However, it does not explain error cases (e.g., missing profile) or side effects like overwriting existing cookies. The description adds some value but lacks full transparency.

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 concise: two sentences that front-load the core purpose and end with a usage hint. Every sentence adds value with 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 the tool's simplicity (2 required parameters, no output schema, no annotations), the description is sufficiently complete. It covers purpose and usage context. It could mention handling of missing profiles, but this is not critical for basic understanding.

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 adds no additional meaning beyond what the schema already provides for 'profileId' and 'tabId'. It does not explain how profile names are resolved or validated.

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 loads a saved profile's cookies into an active tab, using the specific verb 'load' and identifying the resource and action. It distinguishes itself from sibling tools like 'save_profile' and 'import_cookies' by focusing on restoring login sessions.

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 provides explicit usage guidance: 'Use after create_tab to restore saved state.' This tells the agent when to invoke the tool, though it does not mention when not to use it or alternatives.

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

refreshA

Reload the current page. Useful when page state is stale or after changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID from create_tab

TDQS

A4/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 indicates a reload operation but does not disclose whether it waits for completion, potential side effects (e.g., unsaved data loss), or if it's asynchronous.

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-loaded with the core action. No 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?

For a simple one-param tool with no output schema, the description covers purpose and usage context. It lacks details on return behavior or error handling, but is adequate for the complexity.

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?

Since schema coverage is 100% and the description adds no extra meaning beyond the schema's parameter description, it meets the baseline. No enrichment provided.

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 reloads the current page, using a specific verb and resource. It distinguishes itself from siblings like go_back and go_forward which navigate history.

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 mentions usefulness when page state is stale or after changes, giving clear context. However, it does not explicitly state when not to use or compare with alternatives.

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

resolve_blobsA

Resolve blob: URLs to downloadable base64 data. Blob URLs are temporary browser objects (common in Telegram, WhatsApp, Discord) that cannot be downloaded directly. This tool converts them to base64 data URIs.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesArray of blob: URLs to resolve
tabIdYesTab ID from create_tab
userIdNoUser ID override (default: tracked tab userId)

TDQS

A4/5.0
Behavior3/5

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

Explains the transformation from temporary blob URL to base64 data URI, but given no annotations, could further disclose limitations (e.g., size caps, cross-origin restrictions, no side effects like destructive behavior).

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 sentences with zero filler: one sentence states purpose, the second adds context about blob URLs and the conversion result.

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 the problem and solution; lacks output format details (e.g., return structure or error handling) but reasonable for a simple conversion tool without 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?

Schema coverage is 100% (all parameters documented in schema), so baseline is 3; description does not add extra parameter details 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?

Describes the specific action 'resolve blob: URLs to downloadable base64 data', explains what blob URLs are, and clearly distinguishes from any sibling tool (no other tool does this conversion).

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 context on when to use (encountering blob URLs from Telegram, WhatsApp, Discord that cannot be downloaded directly), but lacks explicit when-not-to-use or alternative tool names.

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

save_profileA

Save browser cookies from an active tab to a named profile on disk. Enables session persistence across restarts. Use after login to save authenticated state.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID to export cookies from
profileIdYesProfile name (alphanumeric, hyphens, underscores, dots, 1-64 chars)
descriptionNoOptional description for this profile

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses that the tool saves cookies to disk and requires an active tab, but lacks details on overwriting behavior or potential failure modes.

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?

Three short sentences convey the action, benefit, and usage context with no redundancy. Fully 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?

Given the simple nature of the tool (3 parameters, no output schema, no annotations), the description provides enough context for an agent to use it correctly, though it omits details like return value and overwrite behavior.

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 adequate descriptions for each parameter. The tool description adds value with usage context but does not significantly enhance parameter understanding 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 uses a specific verb ('save') and resource ('browser cookies from an active tab to a named profile'), clearly distinguishing it from siblings like load_profile, import_cookies, and delete_profile.

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?

Explicitly states 'Use after login to save authenticated state,' providing clear context for when to use it. Does not mention when not to use or explicitly name alternatives, but the context is sufficient.

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

screenshotA

Take a viewport or full-page visual screenshot in base64 PNG. Set fullPage to capture the entire scrollable page. Use ONLY for visual verification (CSS, layout, proof). Prefer snapshot for most tasks — much more token-efficient.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID from create_tab
fullPageNoCapture the entire scrollable page instead of only the current viewport

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the output format (base64 PNG), the viewport vs. full-page behavior via the fullPage flag, and the cost trade-off (token inefficiency). It could mention that the return is a string or indicate side effects, but for a screenshot tool this is sufficient.

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?

Three concise sentences with no fluff. The action is front-loaded, and each sentence adds value: action/format, parameter guidance, and usage preference.

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?

Despite no output schema, the description explains the return format (base64 PNG) and the tool's scope. It covers purpose, usage, and key parameter behavior, making it complete for a two-parameter screenshot tool.

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% for both parameters. The description adds some context (e.g., 'viewport' vs 'full-page') but largely restates what the schema already documents, so baseline 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's action: 'Take a viewport or full-page visual screenshot in base64 PNG.' It also distinguishes from siblings by noting the visual nature and explicitly contrasting with 'snapshot for most tasks.'

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

Usage Guidelines5/5

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

Explicit when-to-use guidance is provided: 'Use ONLY for visual verification (CSS, layout, proof). Prefer snapshot for most tasks — much more token-efficient.' This directly addresses alternatives and exclusions.

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

scrollB

Scroll page up or down by pixel amount. Use to reveal content below the fold or navigate long pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID from create_tab
amountNoPixels to scroll (default: 500)
directionYesScroll direction

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. It only states scrolling action and parameters, lacking details on animation, blocking, or return value.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, and efficient – no unnecessary 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?

The description is adequate for a simple scroll tool, but lacks differentiation from sibling tools like scroll_and_snapshot and does not specify if a return value exists.

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 description adds no extra meaning beyond what the schema provides for tabId, direction, and amount.

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 tool scrolls a page by pixel amount, specifying direction and default. It is distinct from element-scrolling siblings like camofox_scroll_element, though it doesn't explicitly differentiate.

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 tells when to use it ('reveal content below the fold or navigate long pages'), but does not mention when not to use or provide alternatives.

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

scroll_and_snapshotA

Scroll the page and take a snapshot. Useful for revealing content below the fold.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID from create_tab
amountNoPixels to scroll
waitMsNoMilliseconds to wait after scrolling before snapshot
directionYesScroll direction

TDQS

A3.6/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 for behavioral disclosure. It only states the basic action (scroll then snapshot) and does not mention parameters like direction, amount, or waitMs that affect behavior. The schema provides details, but the description lacks contextual behavioral traits.

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 sentence that conveys the core purpose and use case without unnecessary words. It is highly concise and efficient.

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 4 parameters, no annotations, and no output schema, the description is insufficient. It does not explain parameter usage, behavior on scroll direction, or what happens after snapshot. The tool combines two actions but lacks completeness for an AI agent to use correctly.

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 4 parameters. The description adds no additional meaning or context to the parameters (e.g., what 'tabId' refers to, or how 'amount' is used). Baseline 3 is appropriate since schema covers the parameter semantics.

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 'Scroll the page and take a snapshot' and specifies the use case 'revealing content below the fold.' It distinguishes itself from sibling tools like 'scroll' (only scrolls) and 'snapshot' (only snapshot), making the purpose unambiguous.

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 includes 'Useful for revealing content below the fold,' which implies when to use the tool. However, it does not provide explicit when-not-to-use guidance or mention alternative tools like combining 'scroll' and 'snapshot' separately.

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

server_statusA

Check CamoFox server health and browser connection. Call first to verify server is running. Returns version, browser status, and active tab count.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

The description accurately portrays a read-only status check, returning version and status info. Without annotations, the description sufficiently indicates no destructive side effects. It could be more explicit about being non-destructive, but the nature of 'check' and 'status' implies safety.

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 consists of two efficient sentences with no redundant words. It is front-loaded with the core purpose and provides essential return value details.

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 health check with no parameters and no output schema, the description covers the purpose, usage guidance, and return values. It could specify the format of the returned fields (e.g., version string), but it is not critical.

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 input schema has 0 parameters, so no parameter description is needed. The baseline for 0 parameters is 4 per the scoring rules, and the description does not need to add more.

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 'Check' and the resource 'Camofox server health and browser connection', and explicitly lists return values (version, browser status, active tab count). This distinguishes it from the many action-oriented sibling tools (e.g., click, navigate) which perform browser operations rather than health checks.

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 phrase 'Call first to verify server is running' provides explicit guidance on when to use this tool (before other operations). It implies a prerequisite step, but does not explicitly list when not to use or discuss alternative tools, which would raise the score to 5.

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

snapshotA

Get accessibility tree snapshot — the PRIMARY way to read page content. Returns element refs, roles, names and values. Token-efficient. Always prefer over screenshot. Refs come from the accessibility tree, so custom SPA elements may be missing; fall back to CSS selectors, camofox_wait_for_selector, or camofox_get_page_html when needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdYesTab ID from create_tab
offsetNoOffset for paginating large snapshots. Use nextOffset from previous response.

TDQS

A4.5/5.0
Behavior4/5

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

Discloses key behavioral trait: refs come from accessibility tree, so custom SPA elements may be missing. Also mentions token-efficiency. However, no annotations exist, and the description does not cover auth requirements, side effects, or whether the tool works on non-loaded tabs. Still, it provides useful operational context.

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?

Three sentences with no redundancy: first states purpose, second lists return values, third gives fallback guidance. Compact and information-dense, perfectly front-loaded.

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?

Despite no output schema, the description adequately explains return format (element refs, roles, names, values) and mentions token-efficiency. It also addresses known limitations (missing SPA elements) and provides fallback options, making it complete for the tool's complexity.

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 new parameter-level details beyond what the schema already provides for 'tabId' and 'offset'. The mention of 'Use nextOffset from previous response' is already in the schema's offset description, so no added 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?

Clearly states 'Get accessibility tree snapshot' and distinguishes as 'the PRIMARY way to read page content'. Unlike siblings like screenshot or camofox_get_page_html, it specifically mentions returning element refs, roles, names, and values, making its purpose unambiguous.

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

Usage Guidelines5/5

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

Explicitly recommends using this tool over screenshot and provides specific fallback alternatives when custom SPA elements are missing: 'fall back to CSS selectors, camofox_wait_for_selector, or camofox_get_page_html when needed.' This gives clear when-to-use and when-not-to-use guidance.

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

toggle_displayA

Toggle browser display mode between headless and headed. When encountering CAPTCHAs or issues requiring visual interaction, switch to headed mode (headless: false) to show the browser window. After resolving, switch back to headless mode (headless: true). When switching an existing single context to virtual or headed mode, the response includes a vncUrl field — open this URL in a browser to see and interact with the browser GUI. Check tabsInvalidated in the response: when true, recreate tabs; when false, existing tracked tabs remain usable and the override applies to future contexts.

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesUser/session identifier
headlessYesDisplay mode — false for headed, true for headless, "virtual" for virtual display

TDQS

A4.3/5.0
Behavior4/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 explains that switching to headed/virtual mode shows the browser window and includes a vncUrl for interaction, and that the response contains a tabsInvalidated field indicating whether tabs need recreation. This provides transparency beyond a mere toggle action.

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 three sentences, efficiently covering purpose, usage, and response behavior. It is front-loaded with the main action and provides necessary details without wordiness. A slight reduction in length could be possible, but current structure is clear and functional.

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 the tool's simplicity (toggling display mode), the description is fairly complete. It explains the two main use cases (CAPTCHA, resolution), and decodes response fields (vncUrl, tabsInvalidated). It lacks error handling or edge cases like permission errors, but for a toggle tool with two parameters, it covers essential aspects.

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 covers both parameters with descriptions (100% coverage). The description adds value by explaining the effect of headless values (false→headed, true→headless, virtual→virtual display) and mentions response behaviors (vncUrl, tabsInvalidated) that are not in the schema, enriching parameter understanding.

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 explicitly states the tool toggles browser display mode between headless and headed, which is a specific verb-resource pair. It also mentions the virtual mode from the schema. This clearly distinguishes it from sibling tools that perform other browser actions like clicking, scrolling, or navigation.

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 provides clear usage guidance: use headed mode when encountering CAPTCHAs or issues requiring visual interaction, and switch back to headless after resolving. It also explains how to handle the response (vncUrl, tabsInvalidated). While it doesn't explicitly list when-not-to-use, the context is sufficient.

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

type_and_submitA

Type text into a field and press a key (default: Enter). Useful for search boxes and single-field forms.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoKey to press after typing (default: Enter)Enter
refNoElement ref from snapshot
textYesText to type
tabIdYesTab ID from create_tab
selectorNoCSS selector

TDQS

A3.9/5.0
Behavior3/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 states that it types text and presses a key (default Enter), but does not disclose whether it replaces existing text or appends, or what happens after keypress (e.g., form submission, navigation). More behavioral detail would be beneficial.

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, front-loaded with the action, no redundant information. Every sentence adds value: the first describes the operation, the second provides a use case.

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 5 parameters and no output schema, the description is somewhat incomplete. It does not explain that ref or selector are needed to identify the field, and that tabId is required for context. The agent might miss how to correctly specify the target element.

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 adds minimal additional meaning beyond the schema, only reinforcing the default key. It does not elaborate on how to use ref versus selector to target the element, which could be helpful.

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 (type text and press a key) and the target (a field), and identifies its use case for search boxes and single-field forms. It effectively distinguishes from sibling tools like type_text (which only types) and fill_form (which handles multiple fields).

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 provides contextual guidance by noting it's useful for search boxes and single-field forms, implying it should not be used for multi-field forms. However, it does not explicitly mention when not to use it or list alternatives, but the context is sufficient for an agent to differentiate from siblings.

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

type_textA

Type text into an input field. Provide either a ref (from snapshot) or a CSS selector. Use ref when available; otherwise use selector when snapshot doesn't assign refs (common with combobox/autocomplete inputs). Call snapshot first to find target element.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoElement ref from snapshot (e.g. 'e1', 'e2')
textYesText to type into the element. Replaces existing content.
tabIdYesTab ID from create_tab
selectorNoCSS selector (e.g. 'input[name=q]', '#search-input')

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that text replaces existing content and implies a dependency on a prior snapshot. However, it does not specify if the operation simulates keystrokes or sets the value directly, nor does it mention potential side effects or event triggers.

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, front-loaded with the core action ('Type text into an input field'), and every sentence adds essential information. No redundant or irrelevant content.

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 the lack of output schema and annotations, the description covers the main aspects: what it does, how to specify the target, and a prerequisite (snapshot). It could be more complete by detailing the return value or success behavior, but it is sufficient for a simple action tool.

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?

Schema coverage is 100%, so baseline is 3. The description adds value by clarifying that 'ref' comes from a snapshot, that 'selector' is a CSS selector, and by recommending the order of preference. This guidance goes beyond the schema definitions.

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 it types text into an input field, and distinguishes between using a ref or a CSS selector, providing specific guidance on when to use each. This makes the purpose highly clear and distinguishes it from sibling tools.

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

Usage Guidelines4/5

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

The description provides explicit guidelines on when to use ref vs selector (e.g., 'Use ref when available; otherwise use selector when snapshot doesn't assign refs'). It also advises to call snapshot first. However, it does not mention alternative tools for similar tasks (like fill_form), so it lacks explicit exclusions.

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

youtube_transcriptA

Extract transcript from a YouTube video. Returns timestamped text. No tab required.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesYouTube video URL
languagesNoPreferred languages (default: ["en"])

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided; description only states it returns timestamped text and no tab required. Missing disclosure about API limitations, rate limits, or video requirements. Limited behavioral transparency for a tool with no annotations.

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 fluff. Essential information provided efficiently.

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, description minimally covers return format. Lacks error handling details or prerequisites. Adequate for simple tool but not fully comprehensive.

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 descriptions fully cover both parameters. Description adds little beyond expressing output format. Baseline 3 given 100% 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?

Specific verb 'Extract' and resource 'transcript from a YouTube video'. No sibling overlap, clearly describes function.

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?

Does not explicitly state when to use vs alternatives. 'No tab required' is a minor usage note but insufficient guidance on context or prerequisites.

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.

  1. 2 tool updatesv1.15.0
    • Changedscreenshot1 field changed
      • addedInput schema / properties / fullPage
        Added value: +{
        +  "default": false,
        +  "description": "Capture the entire scrollable page instead of only the current viewport",
        +  "type": "boolean"
        +}
    • Changedweb_search3 fields changed
      • changedInput schema / properties / engine / description
        Previous value: -"Search engine to use (default: google)"New value: +"Browser search macro to use (default: google)"
      • changedInput schema / properties / engine / enum
        Previous value: -[
        -  "google",
        -  "youtube",
        -  "amazon",
        -  "bing",
        -  "duckduckgo",
        -  "reddit",
        -  "github",
        -  "stackoverflow",
        -  "wikipedia",
        -  "twitter",
        -  "linkedin",
        -  "facebook",
        -  "instagram",
        -  "tiktok"
        -]New value: +[
        +  "google",
        +  "youtube",
        +  "amazon",
        +  "reddit",
        +  "reddit_subreddit",
        +  "wikipedia",
        +  "twitter",
        +  "yelp",
        +  "spotify",
        +  "netflix",
        +  "linkedin",
        +  "instagram",
        +  "tiktok",
        +  "twitch"
        +]
      • changedInput schema / properties / query / description
        Previous value: -"Search query text"New value: +"Search query text; for reddit_subreddit, pass the subreddit name"
  2. 1 tool updatev1.14.5
    • Changedcreate_tab3 fields changed
      • changedInput schema / properties / sessionKey / description
        Previous value: -"Session key for browser context reuse. Defaults to a new unique session."New value: +"Session key for browser context reuse. Defaults to a new unique session; use \"default\" with userId \"cli-default\" for the camofox CLI default context. This does not attach to a tab that the CLI already opened."
      • changedInput schema / properties / userId / description
        Previous value: -"User ID for session isolation"New value: +"User ID for session isolation. MCP defaults to CAMOFOX_DEFAULT_USER_ID/default; use \"cli-default\" with sessionKey \"default\" to share the camofox CLI default context."
      • changedInput schema / properties / viewport / description
        Previous value: -"Browser viewport size override"New value: +"Browser viewport/display size override. Use this to control wide windows, for example { \"width\": 1366, \"height\": 768 }."
  3. 2 tool updatesv1.14.1
    • Changedcreate_tab4 fields changed
      • addedInput schema / properties / geoMode
        Added value: +{
        +  "description": "Geo merge mode. explicit-wins keeps explicit locale/timezone/geolocation; proxy-locked requires proxy/profile geo values.",
        +  "enum": [
        +    "explicit-wins",
        +    "proxy-locked"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / proxy
        Added value: +{
        +  "description": "Raw proxy override. proxyProfile takes precedence when both are provided.",
        +  "properties": {
        +    "host": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "password": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "port": {
        +      "anyOf": [
        +        {
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        {
        +          "exclusiveMinimum": 0,
        +          "maximum": 9007199254740991,
        +          "type": "integer"
        +        }
        +      ]
        +    },
        +    "username": {
        +      "minLength": 1,
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "host",
        +    "port"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / proxyProfile
        Added value: +{
        +  "description": "Named proxy profile configured in camofox-browser",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / sessionKey
        Added value: +{
        +  "description": "Session key for browser context reuse. Defaults to a new unique session.",
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Addedextract_structured

TDQS

B3.4/5.0

Scored across 47 tools

Disambiguation3/5

The set includes many tools with overlapping purposes, such as snapshot, get_page_html, query_selector, and extract_structured for reading page state, and multiple wait/scroll variants. Descriptions help clarify when to use each, but the large number of similar tools creates selection ambiguity.

Naming Consistency2/5

Naming is inconsistent: some tools use camofox_ prefixes (camofox_evaluate_js, camofox_wait_for) while others do not (navigate, click, get_links). Compound names like navigate_and_snapshot and scroll_and_snapshot break the pattern, and there is no uniform verb-noun structure.

Tool Count2/5

47 tools is excessive for a browser automation server. Many are convenience combinations (e.g., navigate_and_snapshot, scroll_and_snapshot) that could be workflows rather than separate tools, making the surface feel bloated and harder to navigate.

Completeness4/5

The tool set covers a broad range of browser automation needs: tab management, navigation, interaction, content extraction, waiting, screenshots, downloads, profiles, search, and session cleanup. Minor gaps exist, such as no direct cookie editing or incognito tab creation, but core workflows are well-supported.

Maintenance

ActivitySlowing
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Undetectable browser automation server for MCP-compatible AI agents, offering 225 tools across 32 sections to navigate, extract, clone pages, and bypass antibot systems like Cloudflare.
    1
    -
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for browser automation with anti-detection. Scout pages, find elements, interact with websites, and monitor network traffic from any AI client that supports the Model Context Protocol.
    21
    1
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    A stealth browser automation MCP server that wraps CloakBrowser's patched Chromium to bypass bot detection, providing 22 tools for web navigation, interaction, and session management.
    24
    22 PyPI
    2
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Browser automation MCP server using Camoufox anti-detect browser with fingerprint spoofing, geolocation/timezone spoofing, and human-like cursor movement.
    14
    1
    Apache 2.0