ZennoBrowser MCP Server
OfficialAllows adding browser extensions from the Chrome Web Store to ZennoBrowser profiles.
ZennoBrowser MCP Server — Antidetect Browser Automation for AI Agents
Control the ZennoBrowser antidetect browser from AI agents. Manage browser profiles, proxies, cookies, threads and browser instances from Claude Desktop, Cursor and VS Code through the Model Context Protocol (MCP).
Quick start · Installation · Tools · Example prompts · Troubleshooting
MCP (Model Context Protocol) server for ZennoBrowser Public API. Exposes browser automation and profile management capabilities to AI agents such as Claude Desktop, Cursor, and VS Code MCP clients.
Why ZennoBrowser MCP Server
Full Public API coverage. 57 tools for workspaces, profiles, folders, proxies, threads, browser instances, presets, extensions and product info.
Built for scale. Bulk tools create, update, start and stop many profiles, proxies, threads and browser instances in one call.
Cookies and fingerprints. Import, export and copy cookies between profiles, and read full fingerprint details of any profile.
Works with your AI client. Runs as a local stdio server in Claude Desktop, Cursor and VS Code.
Free to start. ZennoBrowser is available for Windows. Its START plan includes unlimited local profiles and 2 simultaneous browsers.
Related MCP server: Browser Automation MCP
Quick start
Start ZennoBrowser on your computer and get an API token in your personal account on ZennoLab.
Add the server to your MCP client using one of the configurations in Installation.
Ask your agent, for example: "Create a new profile named "Test Profile", then start a browser instance for it."
Tools such as
delete_profile,bulk_delete_profileanddelete_proxycannot be undone. Review the agent's actions before approving destructive calls.
Requirements
Node.js 20+
ZennoBrowser running locally
A valid ZennoBrowser API token
Installation
The package is published as
@zennolab/zennobrowser-mcp-server. Versions up to 1.0.0 were published as the unscopedzennobrowser-mcp-server, which no longer receives updates — replace it with@zennolab/zennobrowser-mcp-serverin your MCP client config.
npx (no install required)
Claude Desktop — edit claude_desktop_config.json:
{
"mcpServers": {
"zennobrowser": {
"command": "npx",
"args": ["-y", "@zennolab/zennobrowser-mcp-server@latest"],
"env": {
"ZB_API_TOKEN": "your-api-token-here"
}
}
}
}Cursor — add to MCP settings (.cursor/mcp.json or Settings → MCP):
{
"mcpServers": {
"zennobrowser": {
"command": "npx",
"args": ["-y", "@zennolab/zennobrowser-mcp-server@latest"],
"env": {
"ZB_API_TOKEN": "your-api-token-here"
}
}
}
}VS Code (with GitHub Copilot MCP support) — add to .vscode/mcp.json:
{
"servers": {
"zennobrowser": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@zennolab/zennobrowser-mcp-server@latest"],
"env": {
"ZB_API_TOKEN": "your-api-token-here"
}
}
}
}Global install
npm install -g @zennolab/zennobrowser-mcp-server@latestThen use zennobrowser-mcp-server as the command instead of npx ... @zennolab/zennobrowser-mcp-server:
{
"mcpServers": {
"zennobrowser": {
"command": "zennobrowser-mcp-server",
"env": {
"ZB_API_TOKEN": "your-api-token-here"
}
}
}
}Environment Variables
Variable | Required | Default | Description |
| Yes | — | Authentication token for the ZennoBrowser Public API |
| No |
| Base URL of the ZennoBrowser Public API |
Tools
Workspaces
Tool | Description |
| List accessible workspaces |
Profiles
Tool | Description |
| List profiles with filtering and sorting |
| Get a single profile with full fingerprint details |
| Create a new profile |
| Create multiple profiles at once |
| Update profile settings |
| Delete a profile |
| Delete multiple profiles |
| Move profiles to a folder |
| Recover a profile from an invalid state |
| Force-unlock a cloud-locked profile |
| Import cookies (JSON or Netscape format) |
| Export cookies as JSON |
| Copy cookies from one profile to another |
| Assign a preset to multiple profiles |
| Update the proxy for multiple profiles |
| Update tags for multiple profiles |
| Clear profile cache |
Profile Folders
Tool | Description |
| List profile folders |
| Create a profile folder |
| Rename a profile folder |
| Delete a profile folder |
Proxies
Tool | Description |
| List proxies |
| Create a proxy |
| Create multiple proxies |
| Update a proxy |
| Delete a proxy |
| Delete multiple proxies |
| Trigger IP rotation for a mobile proxy |
Proxy Folders
Tool | Description |
| List proxy folders |
| Create a proxy folder |
| Rename a proxy folder |
| Delete a proxy folder |
Threads
Tool | Description |
| List threads |
| Create a thread |
| Create multiple threads |
| Extend thread lifetime |
| Extend lifetime of multiple threads |
| Stop a thread |
| Stop multiple threads |
Browser Instances
Tool | Description |
| List active browser instances |
| Launch a browser instance for a profile |
| Launch browser instances for multiple profiles |
| Stop a browser instance |
| Stop multiple browser instances |
| Show or hide a browser window |
Presets & Extensions
Tool | Description |
| List presets |
| Create a preset |
| Delete a preset |
| List extensions |
| Add an extension from the Chrome Web Store |
| Add an extension from a local .crx or .zip file |
| Remove an extension |
Product
Tool | Description |
| Get ZennoBrowser version |
| Get browser engine version |
| Get workspace resource limits |
| Get current tariff information |
Example Prompts
Create a profile and start the browser:
Create a new profile named "Test Profile", then start a browser instance for it.
Full end-to-end flow:
Create a profile named "Scraper", create a proxy with URI "socks5://user:pass@1.2.3.4:1080", assign the proxy to the profile, create a thread, then start a browser instance for the profile using that thread.
Bulk operations:
List all profiles in my default workspace and delete any that haven't been used in the last 30 days.
Cookie management:
Export cookies from profile "Session A" and import them into profile "Session B".
Troubleshooting
Error: Missing required environment variable ZB_API_TOKEN
Set the ZB_API_TOKEN environment variable to your ZennoBrowser API token.
Error: connect ECONNREFUSED 127.0.0.1:8160
ZennoBrowser is not running or the Public API is not working. If the API runs on a different port, set ZB_API_BASE_URL=http://localhost:<port>.
Tool calls return errors with "Unauthenticated"
Your API token is invalid or expired. Generate a new token in personal account on ZennoLab.
npx downloads the package every time
Install globally with npm install -g @zennolab/zennobrowser-mcp-server@latest to avoid re-downloading on each start.
Related
ZennoBrowser — the antidetect browser this server controls
ZennoLab documentation — product guides (in Russian)
ZennoBrowser community forum — questions, bug reports and feature requests
zennoposter-mcp — MCP servers for ZennoPoster and ZennoDroid
License
Available Tools
63 toolsbulk_continue_use_threadContinues work of multiple execution threads.BDestructiveIdempotent
This method is used to update the specified execution threads, allowing them to continue working. The threadTokens parameter should contain the array of valid tokens with existing workspace IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Array of thread tokens representing the execution threads to update. Cannot be null or empty. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (destructiveHint=true, idempotentHint=true, readOnlyHint=false, openWorldHint=false), so the bar is lower. The description adds a genuine behavioral fact beyond them — that the operation resumes thread execution — plus a token-validity precondition, but it does not explain what is disrupted by the destructive mutation or the failure mode for invalid tokens.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no filler, and the action is front-loaded before the parameter note. The minor cost is that the second sentence spends its space on a parameter naming mismatch rather than a sharper usage rule.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with full schema coverage and no output schema, the description covers the core action and one precondition. It is adequate but leaves an agent guessing about batch limits, partial-failure behavior, and what the destructive update does to currently running thread state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both 'body' and 'workspaceId', which sets the baseline at 3. The description adds a validity constraint ('valid tokens with existing workspace IDs') beyond the schema's 'cannot be null or empty', but it refers to the parameter as 'threadTokens', a name that does not match the schema's 'body', which introduces mild confusion rather than clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('update the specified execution threads, allowing them to continue working'), and the plural scope plus the bulk_ name separates it from the single-thread continue_use_thread sibling. The phrasing 'update ... allowing them to continue' is slightly indirect about the real action (resuming threads), but still unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a precondition — tokens must be valid and belong to existing workspace IDs — which implies the contexts in which the tool will succeed. It never says when to prefer this over continue_use_thread or bulk_stop_thread, and there is no explicit exclusion or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_create_profileCreates multiple browser profiles in the specified workspace and folder.C
This method is used to create new multiple browser profiles in the specified workspace and the folder. Each profile can have its own configuration, including screen size, hardware emulation, language, timezone, proxy, and other parameters. All fields are optional if another is not specified.
| Name | Required | Description | Default |
|---|---|---|---|
| cpu | No | CPU configuration settings. Allowed values: "auto" to use value from fingerprint, "ignore" to use system value, or one of the specific core/thread strings: "2/4", "4/8", "6/12", "8/16", "10/20", "12/24", "14/28", "16/32", "32/64", "64/128". Use the exact string including the slash, e.g. "4/8" not "4". | |
| tags | No | Tags to assign to all created profiles. Example: '"tag 1" "ta g2"'. | |
| audio | No | Audio configuration settings. Allowed values: "on" to enable or "off" to disable. | |
| count | No | Number of profiles to create (required). | |
| fonts | No | Font configuration settings. Allowed values: "on" to enable or "off" to disable. | |
| webGl | No | WebGL configuration settings. Allowed values: "auto" to use value from fingerprint, "ignore" to use system value. | |
| canvas | No | Canvas settings. The allowed values are: "Ignore" to disable this feature or "Noise" to use noising. | |
| memory | No | Memory configuration settings. Allowed values: "auto" to use value from fingerprint, "ignore" to use system value, or one of the specific GB values as a string: "2", "4", "8", "16", "32", "64", "128". | |
| screen | No | Screen configuration settings. Allowed values: "auto" to use value from fingerprint, "ignore" to use system value, or one of the named resolution IDs: "SVGA" (800×600), "WSVGA" (1024×600), "XGA" (1024×768), "HD" (1280×720), "WXGA" (1280×768), "WXGA+" (1280×800), "SXGA" (1280×1024), "WXGA HD" (1366×768), "WSXGA" (1440×900), "HD+" (1600×900), "UXGA" (1600×1200), "WSXGA+" (1680×1050), "FHD" (1920×1080), "WUXGA" (1920×1200), "WQHD" (2560×1440), "4K UHD-1" (3840×2160), "5K" (5120×2880), "8K UHD-2" (7680×4320), and others such as "XGA+", "SXGA-", "SXGA+", "1360×768", "1536×864", "QWXGA", "QXGA", "WQXGA". Use the exact named ID string, not pixel dimensions directly. | |
| webGpu | No | WebGPU configuration settings. Allowed values: "on" to enable or "off" to disable. | |
| webRtc | No | WebRTC configuration settings. Allowed values: "Emulate" to use value from fingerprint, "Real" to use system value, or "Hide" to disable. | |
| battery | No | Battery configuration settings. Allowed values: "on" to enable or "off" to disable. | |
| domRect | No | DOM Rectangle configuration settings. Allowed values: "Ignore" to disable or "Noise" to use dom rect noising. | |
| plugins | No | Browser plugins configuration. Allowed values: "on" to enable or "off" to disable. | |
| folderId | No | Identifier of the folder to associate with the profiles (optional). | |
| language | No | Browser language settings. Allowed values: "auto" to use value from fingerprint, "ignore" to use system value, or one of the supported locale codes: "ru" (Russian), "en-US" (English US), "de" (German), "fr" (French), "es" (Spanish), "en-GB" (English UK). | |
| presetId | No | Preset identifier to apply (optional). | |
| timeZone | No | Time zone settings. Allowed values: "auto" to use value from fingerprint, "system" to use system value, or custom timezone value (e.g., Europe/Moscow). | |
| osVersion | No | OS version for fingerprint selection. Allowed values: "win10" or "win11". If empty, the server auto-detects the host OS. | |
| geoLocation | No | Geographic location settings. Allowed values: "auto" to use value from fingerprint, or from one to seven comma-separated numbers for coordinates (Latitude, Longitude, Altitude, Accuracy, AltitudeAccuracy, Heading, Speed, Radius). Numbers can be skipped (e.g., "10, , 40, , 60, 70"). Note: "ignore" is not supported for this field and will cause an error. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. | |
| mediaDevices | No | Media devices settings. The allowed values are: "auto" to use value from fingerprint, "ignore" to use real values or custom location values. You can specify from one to three integer numbers that represent the following values: AudioInput, AudioOutput and VideoInput. The numbers can be skipped. For example, the following values are valid: 1,,5 - means AudioInput = 1, AudioOutput = random, VideoInput = 5 | |
| speechVoices | No | Speech voices configuration. Allowed values: "on" to enable or "off" to disable. | |
| proxyServerId | No | Proxy server identifier to assign (optional). | |
| commandLineArguments | No | Custom command line arguments to pass to the browser on startup |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-idempotent, non-destructive mutation, so the safety profile is covered. Beyond that the description adds almost nothing behavioral: no statement about what happens on partial failure, whether count has an upper bound, or whether created profiles can be rolled back. 'Each profile can have its own configuration' also conflicts with the fact that only one flat parameter set is accepted, which muddies rather than clarifies behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, but the opening 'This method is used to create new multiple browser profiles' is wordy and grammatically awkward, burying the verb behind filler. The trailing optionality sentence is vague and low-value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 25-parameter bulk mutation with no output schema and no annotations beyond safety hints, the description should say at minimum whether all created profiles share the same configuration, what 'count' constraints exist, and what a caller gets back. Instead it claims each profile can differ while exposing only one parameter set, leaving the agent's expectations wrong about the tool's actual behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 25 parameters in detail, establishing the baseline of 3. The description names a handful of them (screen size, hardware emulation, language, timezone, proxy) but adds no format or constraint guidance beyond what the schema enumerates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (create) and resource (multiple browser profiles) scoped to a workspace and folder. The plural 'multiple' implicitly distinguishes it from the sibling create_profile, but that contrast is never made explicit. A reader can tell what it does, though not clearly why to pick it over the single-profile sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance relative to create_profile or the bulk_update_* siblings, and no prerequisites, count limits, or workspace/folder requirements. The only usage hint is the vague 'All fields are optional if another is not specified,' which does not tell an agent when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_create_proxyCreates multiple proxies in a single operation and returns their unique identifiers.A
This method processes an array of proxy data and creates all specified proxies. Errors during creation of individual proxies are ignored.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Array of proxy data containing URI, name, and optional IP change URL for each proxy. | |
| folderId | No | Optional folder ID to associate with all created proxies. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare non-readonly, non-destructive, non-idempotent, and closed-world behavior. The description adds a crucial behavioral trait: errors during individual proxy creation are ignored, implying partial success. This is useful context beyond annotations, though atomicity and batch limits are not covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and then the error-handling note. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition covers purpose and a key failure mode, and annotations supply the safety profile. However, with no output schema, the description does not explain return values (though the title does) and omits batch size limits or atomicity guarantees, which matter for a bulk operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters (body, folderId, workspaceId) are documented in the schema. The description only mentions 'array of proxy data' which adds no semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool creates proxies from an array, clearly indicating a bulk creation operation. It distinguishes from create_proxy through 'array' and 'all specified proxies', though it does not explicitly name the single-create sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this bulk tool versus create_proxy or other alternatives, nor any prerequisites. The bulk context is implied by 'array' but not stated as a decision rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_create_threadRuns multiple execution threads.B
This method can be used to start execution threads in bulk for the specified workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of threads to create (required). | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, and openWorldHint=false, so the mutation/non-idempotent profile is covered structurally. The description adds only the bulk scope and workspace targeting; it does not say whether created threads begin running immediately, whether there is a creation cap, or whether partial failure is possible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the bulk scope front-loaded. Minor padding in the opener 'This method can be used to', which could be trimmed to 'Starts execution threads in bulk...'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no output schema and full schema coverage, the essentials are present. Still missing: what is returned (thread objects? IDs?), the effect of omitting count (declared required in the schema text but absent from the required list), and any limit on how many threads can be created at once.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (count, workspaceId) are already documented, including the -1 default-workspace convention. The description's 'for the specified workspace' adds no information beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('start execution threads in bulk') and scopes it to 'the specified workspace', which distinguishes it from the singular create_thread and other bulk thread tools. However, the verb 'start' differs from the name's 'create', leaving slight ambiguity about whether threads are merely created or immediately launched.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to prefer this over create_thread for a single thread, nor any prerequisites (e.g., a valid workspace, existing profiles). The sibling create_thread and bulk_continue_use_thread are never referenced, so the agent must infer the choice from names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_delete_profileDeletes multiple existing browser profiles.CDestructiveIdempotent
This method is used to delete several existing browser profiles at once.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Target browser profile IDs (array of UUID). | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is fully covered structurally. The description adds nothing beyond that — it does not say deletion is permanent, what happens to profiles in use, or any auth/rate-limit constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with no wasted clauses. It is slightly padded by the 'This method is used to' opener but otherwise front-loads the action and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive bulk mutation with no output schema, the description omits whether deletion is irreversible, how partial failures are handled, and whether target profiles must be unlocked — meaningful gaps even though annotations cover the basic destructive flag.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for both parameters (body array of UUIDs, workspaceId with default -1), so the schema carries full meaning. The description adds no syntax or format detail beyond what the schema provides, which is the baseline-3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('delete several existing browser profiles at once'), and the 'several...at once' phrasing conveys the bulk scope that separates it from the single-profile delete_profile sibling. It is clear but never names or contrasts with any alternative tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus delete_profile or any other tool, no prerequisites, and no mention of workspace context needed to run it. The agent must infer the bulk-vs-single distinction from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_delete_proxyDeletes multiple proxies in a single operation.BDestructiveIdempotent
This method sends a bulk delete request to the API to remove the specified proxies. Ensure that the provided proxy IDs are valid and exist in the specified workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The array of UUIDs containing the proxies to be deleted. Must not be null or empty. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false and openWorldHint=false, so the safety profile is covered. The description adds the bulk-request nature and workspace scoping, but says nothing about whether deletion is reversible, whether invalid IDs abort the whole batch, or how partial failures are reported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the purpose front-loaded and the precondition second. No filler, though the second sentence is generic advice that could be more specific about failure handling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive bulk mutation with no output schema, the description covers the basic contract and the annotations cover safety, but it omits batch-size limits, error semantics for invalid/nonexistent IDs, and whether partial deletion is possible. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the body array (non-null, non-empty UUIDs) and workspaceId (-1 = default) are fully documented in the schema. The description only restates that IDs must be valid and exist in the workspace, adding no syntax, size-limit, or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource with scope: 'sends a bulk delete request to the API to remove the specified proxies.' It is clearly distinguishable in kind from delete_proxy, but it never explicitly says it is the batched counterpart to the single-delete sibling, so sibling differentiation is only implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is a validation precondition ('ensure that the provided proxy IDs are valid and exist in the specified workspace'). There is no statement of when to prefer this over delete_proxy or bulk_delete_profile, and no warning about irreversibility or what to do on partial failure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_start_browser_instanceCreates multiple browser instances for the specified profiles.B
This method is used to create browser instances in bulk for the specified profiles. Ensure that the provided profile IDs are valid and that the specified workspace ID exists.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Array of profile UUIDs for which browser instances will be created. Each ID must correspond to an existing profile. | |
| keepAlive | No | Indicates if the browser instances should remain active after creation. true to keep active; otherwise false. Defaults to true. | |
| desktopName | No | The name of the desktop environment (optional). Defaults to empty. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. | |
| customFeatures | No | Optional JSON object of browser feature overrides. Overrides environment-read features. | |
| environmentTags | No | Tags to configure the environment for the browser instance. | |
| commandLineArguments | No | Custom additional command line arguments to pass to the browser on startup |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the safety profile is covered. The description adds no behavioral detail beyond the action itself—nothing about what happens to existing instances, partial failures, or the effect of keepAlive—so it does little beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with the primary action front-loaded and no wasted words. It could be slightly better structured by separating purpose from validation, but it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a bulk mutation tool with 7 parameters and 100% schema coverage, the description covers the primary action and a key prerequisite. However, it omits bulk-operation failure semantics (e.g., what happens if some profile IDs are invalid) and does not address the keepAlive or feature-override behaviors, leaving notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents every parameter in detail. The description mentions profile IDs and workspace ID but adds no syntax, format, or meaning beyond what the schema provides, making 3 the appropriate baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: 'create browser instances in bulk for the specified profiles.' The word 'bulk' distinguishes it from the single-instance sibling start_browser_instance, but the alternative is not named explicitly, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It offers prerequisite guidance ('Ensure that the provided profile IDs are valid and that the specified workspace ID exists') but does not say when to use this tool versus start_browser_instance or bulk_stop_browser_instance. Usage is implied by 'in bulk' but not made explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_stop_browser_instanceStopping browser instances (bulk).ADestructiveIdempotent
This method stops multiple existing browser instances associated with the specified profiles. This operation permanently closes all specified browser instances and releases their resources.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The array of profile UUIDs of those browser instances which should be deleted. For example: ["uuid1", "uuid2"]. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=true, so the safety profile is covered. The description adds real value beyond them by explaining the effect: instances are permanently closed and their resources released. It does not say what happens to the underlying profiles or to partial failures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action front-loaded and no filler. The second sentence slightly restates the first ('stops' / 'permanently closes') but earns its place by adding the destructiveness and resource-release detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two parameters, full schema coverage, and annotations carrying the safety semantics, the description supplies what is needed: bulk scope, target selection by profile UUID, and the permanent-close effect. Missing only edge-case behavior (nonexistent UUIDs, already-stopped instances), which is minor for a bulk stop.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the body array (profile UUIDs) and workspaceId semantics are fully documented in the schema itself. The description only loosely maps to 'the specified profiles' and adds no new parameter meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('stops'), resource ('browser instances'), and scope ('multiple ... associated with the specified profiles'). The bulk scope implicitly separates it from the singular stop_browser_instance sibling, but no sibling or contrast is named explicitly, so it falls short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and description: use this when several profiles' instances must be stopped at once. However, there is no explicit when-to-use vs. stop_browser_instance guidance, no stated prerequisites (e.g., instances must be running), and no handling guidance for invalid or non-running profiles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_stop_threadStopping Multiple Threads.CDestructiveIdempotent
This method stops multiple execution threads.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Target execution thread tokens Example: ["uuid1", "uuid2"]. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds nothing beyond that: it does not say what happens to associated browser instances or profiles, whether partial failures are possible, or whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste, but also no added substance. Sized appropriately for a simple bulk operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive bulk mutation with no output schema, the description is too thin. It omits what a stopped thread means for any running browser instance, error behavior on invalid tokens, and whether the action can be undone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the thread-token array and the workspaceId default are already documented in the schema. The description adds no additional meaning about token format or batching limits; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('stops multiple execution threads'), and the plural 'multiple' implicitly distinguishes it from the sibling stop_thread. It does not, however, explicitly name or contrast with that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this bulk variant versus stop_thread, nor any prerequisites or conditions for batching. The agent must infer the usage pattern entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_update_profile_presetUpdates the preset for multiple browser profiles.C
This method updates the preset configuration for one or more browser profiles at once.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Array of profile IDs to update. | |
| presetId | No | The preset identifier to assign. Pass null to remove the preset. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=false, idempotent=false, openWorld=false, so the safety profile is covered. The description adds nothing beyond that: no batch atomicity semantics (all-or-nothing vs. partial failure), no note that assigning a preset overwrites existing preset assignments, and no permission/auth context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficient, though it is essentially a restatement of the title rather than a substantive expansion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a bulk mutation tool with no output schema and no annotations covering batch behavior, the description should address partial-failure handling, batch size limits, or what 'update the preset' actually changes on each profile. None of this is present, leaving the agent under-informed about the operation's consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (body, presetId, workspaceId, including the null-removes-preset semantics) are documented in the schema itself. The description adds no parameter meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (updates), resource (preset configuration for browser profiles), and bulk scope (one or more profiles at once), which distinguishes it from single-profile and non-preset siblings. It does not explicitly name its closest siblings (bulk_update_profile_proxy, bulk_update_profile_tags), but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance. With three near-identical bulk_update_profile_* siblings, an agent gets no help choosing between preset, proxy, and tags variants, nor any prerequisites (e.g., preset must exist, profiles must be accessible).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_update_profile_proxyUpdates the proxy configuration for multiple browser profiles.B
This method updates the proxy settings for one or more browser profiles at once. You can either set a specific proxy server or assign proxies from a container.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Array of profile IDs to update. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. | |
| proxyServerId | No | The proxy server identifier to assign. Pass null to remove proxy or use proxiesFromContainer. | |
| proxyContainerId | No | Container-based proxy assignment configuration. Pass null to use proxyServerId instead. | |
| maxProfilesPerProxy | No | Maximum number of profiles to assign per proxy when using container-based assignment. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=false, so the safety profile is covered structurally. The description adds the dual-mode assignment behavior, but it does not disclose permission requirements, whether running browsers are affected, partial-failure behavior across many profiles, or rate limits — meaningful gaps for a bulk mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the bulk scope front-loaded and no filler. The second sentence largely re-expresses what the schema already says about the two proxy modes, so it is useful framing rather than strictly additive, keeping it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so return values need not be explained, and annotations cover the non-destructive read/write profile. However, for a 5-parameter bulk mutation the description omits what happens on invalid profile IDs, whether the operation is atomic across profiles, and whether the bulk update affects other proxy settings — leaving the agent with only the minimum viable picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents profile IDs, workspace, proxyServerId, proxyContainerId, and maxProfilesPerProxy. The description restates the two proxy-assignment modes at a high level without adding format, precedence, or mutual-exclusivity detail beyond what the schema's own descriptions say — the baseline 3 for full coverage is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (updates), resource (proxy settings), and scope (one or more browser profiles at once), so an agent can distinguish it from siblings like bulk_update_profile_preset and bulk_update_profile_tags. It is clear, but it never names those siblings or explicitly contrasts itself with them, which is what a 5 would require.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the two assignment modes ('set a specific proxy server' vs 'assign proxies from a container') hint at when each path applies, but there is no explicit when-to-use, when-not-to-use, prerequisite, or alternative-tool guidance (e.g. update_proxy vs this bulk variant).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_update_profile_tagsUpdates tags for multiple browser profiles.C
This method updates the tags for one or more browser profiles at once.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Array of profile IDs to update. | |
| tags | No | The new tags to assign. Pass null to retain current tags, an empty array to clear all tags, or an array of strings to replace them. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that - no mention of replace-vs-merge semantics, permission requirements, or what happens to profiles not matched by an ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single, front-loaded sentence with no filler or redundancy in structure. It is arguably too thin for the operation, but on the conciseness axis itself it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a bulk mutation tool the description is thin, but annotations carry the safety profile and the schema is fully documented, so an agent can still call it correctly. The missing usage/context layer keeps it at minimum-viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 100%, the schema already documents all three parameters (profile ID array, the null/empty/array tag semantics, and workspaceId with its -1 default). The description provides no additional parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb (updates) and resource (tags for browser profiles) plus scope (one or more at once), so the purpose is decipherable. However, it is essentially a restatement of the title ('Updates tags for multiple browser profiles') with 'at once' added, and it never distinguishes itself from tag-adjacent siblings like update_profile or bulk_update_profile_preset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives such as update_profile (single) or the other bulk_update_profile_* variants. The agent is left to infer all usage context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_mobile_proxy_ipChanges the IP address of a mobile proxy by invoking the configured IP change URL.A
This endpoint triggers an IP change for the specified mobile proxy. The proxy must have a valid IP change URL configured.
| Name | Required | Description | Default |
|---|---|---|---|
| proxyId | Yes | The unique identifier of the proxy for which to change the IP address. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, openWorldHint=false, and destructiveHint=false, so the mutation and non-idempotent nature are covered structurally. The description adds useful context about the required IP-change URL, but says nothing about expected latency, whether the new IP is returned, or failure behavior — a gap for an operation whose whole purpose is a side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action front-loaded and the precondition immediately after; nothing is padded. The lead-in 'This endpoint' is minor filler, but overall it is efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations about results, the description should ideally state what the agent gets back (e.g., new IP, async status) and roughly how long the change takes. It covers the prerequisite but leaves the post-call expectations undefined for a non-idempotent mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (proxyId, workspaceId) are documented in the schema, so the baseline is 3. The description only alludes to 'the specified mobile proxy' and never mentions workspaceId, so it adds no semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('triggers an IP change for the specified mobile proxy'), which is an action no sibling tool performs, so the agent can distinguish it immediately. The scope is bounded to mobile proxies and to a single named target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides one real prerequisite ('The proxy must have a valid IP change URL configured'), which is the key precondition for the call to succeed. However, it gives no guidance on when to use this versus other proxy tools (e.g., update_proxy) or what happens when the precondition is unmet, leaving usage only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cleanup_profileCleans up browser profile cacheB
This method can be used to clean up cached data for a browser profile in the specified workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| profileId | Yes | The unique identifier of the profile to clean up. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the safety profile is partly covered. The description adds the workspace scoping of the cleanup but does not say which cached artifacts are removed, whether the profile itself is preserved, or whether the operation is repeatable. Note: removing cached data arguably conflicts with destructiveHint=false, but cache regeneration is a defensible exemption, so this is borderline rather than a clear contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and target. It is slightly padded by the "This method can be used to" construction, which could be trimmed without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should ideally indicate what the caller gets back or what state the profile is left in. It covers the scope but leaves the effect of the cleanup, and the identity of the "cached data," unspecified for a mutating tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both profileId and workspaceId (including the -1 default) are fully documented in the schema. The description's reference to "the specified workspace" merely paraphrases 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb and resource: cleaning cached data for a browser profile, scoped to a workspace. It is distinguishable from delete_profile or update_profile at a glance, though it does not explicitly name or contrast with any sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"This method can be used to..." gives no when-to-use guidance, no prerequisites, and no mention of alternatives such as delete_profile or recover_profile. The only usage signal is implicit in the word "clean up".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
continue_use_threadContinues work of the execution thread associated with the thread token.CDestructiveIdempotent
This method is used to continue work of the execution thread associated with the thread token.
| Name | Required | Description | Default |
|---|---|---|---|
| threadToken | Yes | The unique token of the thread to continue (required). | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is carried structurally. The description adds nothing on top — it never explains what state is destroyed, whether the thread must exist, or what 'continue work' actually mutates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no padding, but that sentence is pure duplication of the title and conveys no information an agent did not already have, so concision buys nothing here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent-looking thread mutation with no output schema and no annotations explaining return or error behavior, the description leaves core questions unanswered: what continuing a thread does, what happens to an expired or running thread, and what the result is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: threadToken and workspaceId are both documented in the schema, including the -1 default semantics. The description adds no syntax, format, or constraint beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The sentence restates the title almost verbatim: 'continue work of the execution thread associated with the thread token.' It does name a verb (continue) and a resource (execution thread), but offers no differentiation from siblings like bulk_continue_use_thread, create_thread, or stop_thread, and 'continue work' is never defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, prerequisites, or alternatives are given. An agent cannot tell from this text whether to call this versus bulk_continue_use_thread, create_thread, or start_browser_instance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_cookiesCopies cookies from source profile to target profile.A
Copies cookies from source profile to target profile. Cookies in the target profile will be overwritten.
| Name | Required | Description | Default |
|---|---|---|---|
| profileId | Yes | The unique identifier of the source profile to copy cookies from. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. | |
| targetProfileId | No | The unique identifier of the target profile to copy cookies into. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the write nature is covered. The description adds a genuinely useful side-effect disclosure beyond the annotations: existing cookies in the target profile are overwritten. It omits prerequisites (locked/running profile behavior) and what happens when the source has no cookies, so it is not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, action first and the important side effect second. Every sentence earns its place and there is no bloat or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a small mutation tool with no output schema and full schema coverage, the essential operation and its overwrite side effect are covered. However, prerequisites and edge-case behavior (missing source cookies, locked profiles) are absent, leaving the definition only minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so profileId, workspaceId, and targetProfileId are already documented in the schema, including the -1 default for workspaceId. The description adds nothing about parameter usage or constraints, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (copies) and resource (cookies) plus the direction (source profile to target profile), so the core action is unambiguous. It does not explicitly distinguish itself from the adjacent import_cookies/export_cookies siblings, which an agent might otherwise confuse with it, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the obvious alternatives (import_cookies, export_cookies, run_cookie_robot). No prerequisites are stated, such as whether source/target profiles must be stopped or unlocked. The agent gets no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_extension_from_fileAdds a file extension to the specified preset.C
Adds a file extension to the specified preset.
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | No | Path to the extension file. For example, "/path/to/extension.crx". | |
| presetId | Yes | Target preset ID | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, non-idempotent, non-destructive, closed-world mutation, so the safety profile is covered. The description adds nothing beyond that: it doesn't say whether an existing extension with the same ID is replaced, whether the file must exist on disk, what errors occur on failure, or what permissions are needed. For a write tool it carries no extra behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no wasted words, which is structurally fine. But the sentence merely mirrors the title, so its brevity reflects under-specification rather than efficient communication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description should at least note that only presetId is required and filePath is optional, and what happens to pre-existing extensions. None of that is present, and the description never mentions the file input at all despite 'from_file' in the name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: filePath, presetId, and workspaceId all carry inline descriptions and the workspaceId default (-1) is documented. The description adds no formatting or constraint detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of create_extension_from_web as the alternative for web-sourced extensions. Usage is only weakly inferable from the phrase 'file extension', so this is essentially 'no guidance'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_extension_from_webAdds a web extension to the specified preset.C
Adds a web extension to the specified preset.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Web extension URL. For example, the Chrome web store URL of the extension. | |
| presetId | Yes | Target preset ID | |
| workspaceId | No | Workspace ID. Use -1 for the default workspace |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the mutation profile is covered by structured data. The description adds nothing on top of that: it does not say whether the URL is fetched server-side, what happens when the same extension is added twice, or whether the preset is mutated in place.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no padding, so it is not bloated. However, because it merely echoes the title, the sentence does not really earn its place as a separate description field.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation tool with no output schema, the description leaves the agent without the return shape, error behavior, or the distinction from create_extension_from_file. Annotations cover safety hints, but the functional context is essentially absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema documents url, presetId, and workspaceId (including the -1 default convention) clearly. The description contributes no additional parameter meaning, so the baseline 3 applies when the schema carries the full load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no statement of prerequisites (e.g. whether the preset must exist), and no mention of the alternative create_extension_from_file for local packages. The agent must infer the choice between web-based and file-based extension creation entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_presetCreates a new preset.A
Creates a new preset. Presets are used to group extensions, bookmarks, manage them together and assign them to profiles. All presets are cloud-based.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Preset name | |
| iconName | No | Preset icon name. Example: "like", "dislike", "star", "ai", etc. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false), so the bar is lower. The description adds one useful behavioral fact — 'All presets are cloud-based' — but says nothing about required auth, whether the new preset is auto-assigned to a profile, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the action front-loaded and no filler. The middle sentence is slightly run-on ('group extensions, bookmarks, manage them together and assign them to profiles'), but overall it is tight and earns its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with full annotation coverage, 100% schema coverage, and no output schema, the description supplies adequate domain context about what presets are and that they live in the cloud. It stops short of explaining creation side effects or profile assignment behavior, which would have made it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so name, iconName, and workspaceId are already documented by the schema itself. The description adds no additional parameter meaning — the 'cloud-based' note does not clarify workspaceId semantics — so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb+resource ('Creates a new preset') and the following sentences explain what a preset actually is, which helps an agent understand the object being created. Differentiation from siblings is implicit rather than stated; there is only one create_preset among the siblings, but the description never contrasts it with get_presets or delete_preset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the concept of presets (group extensions/bookmarks, assign to profiles) which implies the usage context, but gives no explicit when-to-use or when-not guidance and names no alternatives. An agent can infer it is the creation entry point for the preset family, but nothing is spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_profileCreates a new browser profile in the specified workspace and folder.B
This method creates a new browser profile in the specified workspace and the folder. It is possible to customize various parameters such as screen size, hardware emulation, language, timezone, proxy, and others. All parameters are optional if another is not specified. Browser profile is a set of parameters for browser configuration that can be used to create browser instances with different fingerprints and settings. Each profile has a unique identifier that is returned upon creation and can be used for subsequent operations on the profile, such as updating or deleting.
| Name | Required | Description | Default |
|---|---|---|---|
| cpu | No | CPU configuration settings. Allowed values: "auto" to use value from fingerprint, "ignore" to use system value, or one of the specific core/thread strings: "2/4", "4/8", "6/12", "8/16", "10/20", "12/24", "14/28", "16/32", "32/64", "64/128". Use the exact string including the slash, e.g. "4/8" not "4". | |
| name | No | The profile name. | |
| tags | No | Profile tags separated by spaces (optional). | |
| audio | No | Audio configuration settings. Allowed values: "on" to enable or "off" to disable. | |
| fonts | No | Font configuration settings. Allowed values: "on" to enable or "off" to disable. | |
| notes | No | Additional notes for the profile. | |
| webGl | No | WebGL configuration settings. Allowed values: "auto" to use value from fingerprint, "ignore" to use system value. | |
| canvas | No | Canvas settings. The allowed values are: "Ignore" to disable this feature or "Noise" to use noising. | |
| memory | No | Memory configuration settings. Allowed values: "auto" to use value from fingerprint, "ignore" to use system value, or one of the specific GB values as a string: "2", "4", "8", "16", "32", "64", "128". | |
| screen | No | Screen configuration settings. Allowed values: "auto" to use value from fingerprint, "ignore" to use system value, or one of the named resolution IDs: "SVGA" (800×600), "WSVGA" (1024×600), "XGA" (1024×768), "HD" (1280×720), "WXGA" (1280×768), "WXGA+" (1280×800), "SXGA" (1280×1024), "WXGA HD" (1366×768), "WSXGA" (1440×900), "HD+" (1600×900), "UXGA" (1600×1200), "WSXGA+" (1680×1050), "FHD" (1920×1080), "WUXGA" (1920×1200), "WQHD" (2560×1440), "4K UHD-1" (3840×2160), "5K" (5120×2880), "8K UHD-2" (7680×4320), and others such as "XGA+", "SXGA-", "SXGA+", "1360×768", "1536×864", "QWXGA", "QXGA", "WQXGA". Use the exact named ID string, not pixel dimensions directly. | |
| webGpu | No | WebGPU configuration settings. Allowed values: "on" to enable or "off" to disable. | |
| webRtc | No | WebRTC configuration settings. Allowed values: "Emulate" to use value from fingerprint, "Real" to use system value, or "Hide" to disable. | |
| battery | No | Battery configuration settings. Allowed values: "on" to enable or "off" to disable. | |
| domRect | No | DOM Rectangle configuration settings. Allowed values: "Ignore" to disable or "Noise" to use dom rect noising. | |
| plugins | No | Browser plugins configuration. Allowed values: "on" to enable or "off" to disable. | |
| folderId | No | Folder identifier (optional). | |
| language | No | Browser language settings. Allowed values: "auto" to use value from fingerprint, "ignore" to use system value, or one of the supported locale codes: "ru" (Russian), "en-US" (English US), "de" (German), "fr" (French), "es" (Spanish), "en-GB" (English UK). | |
| presetId | No | Optional preset identifier used to initialize the profile configuration. | |
| timeZone | No | Time zone settings. Allowed values: "auto" to use value from fingerprint, "system" to use system value, or custom timezone value (e.g., Europe/Moscow). | |
| osVersion | No | OS version for fingerprint selection. Allowed values: "win10" or "win11". If empty, the server auto-detects the host OS. | |
| geoLocation | No | Geographic location settings. Allowed values: "auto" to use value from fingerprint, or from one to seven comma-separated numbers for coordinates (Latitude, Longitude, Altitude, Accuracy, AltitudeAccuracy, Heading, Speed, Radius). Numbers can be skipped (e.g., "10, , 40, , 60, 70"). Note: "ignore" is not supported for this field and will cause an error. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. | |
| mediaDevices | No | Media devices settings. The allowed values are: "auto" to use value from fingerprint, "ignore" to use real values or custom location values. You can specify from one to three integer numbers that represent the following values: AudioInput, AudioOutput and VideoInput. The numbers can be skipped. For example, the following values are valid: 1,,5 - means AudioInput = 1, AudioOutput = random, VideoInput = 5 | |
| speechVoices | No | Speech voices configuration. Allowed values: "on" to enable or "off" to disable. | |
| proxyServerId | No | Proxy server identifier (optional). | |
| commandLineArguments | No | Custom command line arguments to pass to the browser on startup |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the safety profile is covered. The description adds useful context beyond annotations: what a browser profile conceptually is ('a set of parameters for browser configuration ... with different fingerprints'), and that a unique identifier is returned for updating or deleting. It does not disclose any permission requirements, rate limits, or side effects of creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded correctly, but the description runs to four sentences and includes a somewhat generic definitional aside ('Browser profile is a set of parameters...'). The statement 'All parameters are optional if another is not specified' is awkward and marginally wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 26-parameter tool with no output schema, the description partially compensates by explaining that a unique profile identifier is returned upon creation. However, it leaves significant gaps: how defaults interact across dozens of optional fingerprint fields, whether creation requires/consumes a license or proxy, and how it relates to bulk or preset-based creation are all unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every one of the 26 parameters is thoroughly documented in the schema itself, so the baseline is 3. The description only names a few example categories (screen size, hardware emulation, language, timezone, proxy) without adding syntax, defaults, or interaction rules beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'creates a new browser profile in the specified workspace and the folder.' It is clear what the tool does, but it does not differentiate itself from siblings like bulk_create_profile or create_preset, which an agent could confuse with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no named alternative (e.g. bulk_create_profile for multiple profiles, or create_preset to reuse config). The sentence 'All parameters are optional if another is not specified' is vague and reads more like a caveat than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_profile_folderCreates a new profile folder in the specified workspace.A
This method creates a profile folder. The caller must ensure that the specified workspace ID and location are valid. Profile folders are contained within workspaces and can be used to organize browser profiles. Each folder has a unique identifier, a name, a location (Local or Cloud), and a quantity representing the number of profiles it contains. Profile folders count is limited by tariff.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name of the profile folder. Cannot be null or empty. | |
| location | No | Folder location: "Local" or "Cloud". Defaults to "Local". | Local |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-idempotent, non-destructive creation. The description goes beyond them by disclosing the tariff/quota ceiling on folder count and the validity preconditions on workspace ID and location, which are real operational constraints. It still omits what happens on failure or whether the call is safe to retry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and precondition are correctly front-loaded, but the middle sentences describing a folder's identifier, name, location and profile quantity are largely expository filler already covered by the schema and don't help an agent invoke the tool. Four sentences for a simple three-parameter create is longer than needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description never says what the call returns (presumably the new folder's identifier), which an agent would need for chaining. Annotations cover the safety profile and parameters are fully documented, so the remaining gap is the return value and the absence of alternative-routing context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines name, location (with the Local/Cloud enum and default) and workspaceId (-1 for default). The description restates location values and the folder's attributes without adding format, length, or uniqueness rules for the name parameter, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a clear verb+resource ('creates a profile folder'), and the name plus surrounding description distinguishes it from create_proxy_folder and create_profile. However, it never explicitly names or contrasts with the sibling 'create_proxy_folder', so sibling differentiation is only implied by the noun.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies a precondition ('caller must ensure that the specified workspace ID and location are valid') and a quota constraint ('profile folders count is limited by tariff'), which implies when the call is appropriate. But there is no explicit when-to-use/when-not guidance and no routing to alternatives such as create_proxy_folder or the bulk/update variants.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_proxyAdds a new proxy entry using the provided configuration parameters.B
This method is used to add a new proxy entry using the provided configuration parameters. It returns the generated unique identifier.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name of the added proxy. This value cannot be null or empty. | |
| folderId | No | Identifier of the folder to associate with the proxy (optional). Defaults to null. When null, the proxy will be associated with default local folder. | |
| proxyUri | No | URL-address of the proxy. Must be a valid URL (e.g., http://login:pass@host:port). | |
| ipChangeUrl | No | URL to trigger IP change for the proxy (optional). Defaults to empty. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the safety burden is largely covered. The description does add one piece of behavioral value that no structured field supplies: it returns the generated unique identifier, which matters since there is no output schema. It says nothing about whether duplicate names are allowed or what happens on invalid proxyUri.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, but the first opens with the filler phrase 'This method is used to' and pushes the actual verb back, and it largely repeats the title. The second sentence (return value) earns its place; the first is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter mutation tool the description covers the essentials only because the schema is fully annotated and annotations declare the safety profile. The genuinely useful addition is the return-value note, but required-parameter reality (name cannot be null or empty while the schema lists zero required fields) and failure behavior are left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (name, folderId, proxyUri, ipChangeUrl, workspaceId) are already documented with defaults and constraints in the schema. The description adds no syntax, format, or inter-parameter semantics beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (add) and resource (a new proxy entry), so an agent can tell what the tool produces. However, it offers no differentiation from close siblings such as bulk_create_proxy (multi-create) or update_proxy (modification), leaving the agent to infer the boundary from the names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus bulk_create_proxy, update_proxy, or the folder-creation siblings, and no prerequisites or preconditions are mentioned. The sentence 'using the provided configuration parameters' restates the schema rather than saying anything about when this call is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_proxy_folderCreates a new proxy folder.A
This method creates a new proxy folder. The caller must ensure that the specified workspace ID and location are valid. Proxy folder is container for proxies and is used for better organization. Each folder has a unique identifier that is returned upon creation and can be used for subsequent operations on the folder, such as updating or deleting.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The name of the new folder (required). | |
| location | No | Storage location ("Local" or "Cloud"). Defaults to "Local". | Local |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is a non-read-only, non-destructive, non-idempotent write. The description adds value beyond them by disclosing that a unique identifier is returned at creation and is reused for update/delete, which is important since no output schema exists. It does not discuss naming conflicts or permissions, but the annotation bar is already met.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, which is good, but the second sentence about proxy folders being a container "used for better organization" is explanatory filler that does not help an agent call the tool. The remaining content is reasonably tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully covers the creation result (the returned folder identifier) and the prerequisite validation of workspace ID and location, and annotations cover the safety profile. It omits only secondary concerns such as duplicate-name behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so name, location (with enum and default) and workspaceId (-1 = default workspace) are fully documented in the schema. The description only echoes that workspace ID and location must be valid, adding no syntax or constraint detail. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("creates a new proxy folder") and additionally explains what a proxy folder is, so the agent knows the entity is a container for proxies. It is distinguishable from siblings like create_profile_folder. It does not, however, explicitly contrast itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one prerequisite ("The caller must ensure that the specified workspace ID and location are valid") but never says when to create a folder versus using an existing one, or what happens on duplicate names. Usage is only implied by the create verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_threadRuns a new execution thread.A
This method runs a new execution thread in the specified workspace. Execution threads are used to start, work with a browser instance. They can be manually continued with the continue_use_thread method or stopped with the stop_thread method.
| Name | Required | Description | Default |
|---|---|---|---|
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-idempotent, non-destructive, closed-world write, so the safety profile is covered. The description usefully adds lifecycle context (threads can be continued or stopped), but omits what happens on repeated invocation and, importantly, never says a thread identifier is produced for later use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and followed by lifecycle context; nothing is padded. The middle sentence is slightly garbled ('used to start, work with a browser instance'), a minor polish issue rather than bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-parameter tool with no output schema, the description covers purpose and lifecycle adequately. However, because no output schema exists, the description carries the burden of telling the caller that a thread handle is returned for continue/stop, and it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the only parameter's semantics (workspaceId, -1 = default) are fully documented in the schema. The description's phrase 'in the specified workspace' adds nothing beyond the schema and documents no format or constraint details, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('runs a new execution thread in the specified workspace'), which separates it from continue_use_thread and stop_thread. It does not distinguish itself from bulk_create_thread or start_browser_instance, which are the closest siblings an agent could confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the thread's role (start/work with a browser instance) and explicitly routes to continue_use_thread and stop_thread for the follow-up lifecycle steps. It stops short of saying when to prefer this over bulk_create_thread or why a thread is needed instead of start_browser_instance directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_extensionDeletes an extension.CDestructiveIdempotent
Deletes an extension.
| Name | Required | Description | Default |
|---|---|---|---|
| presetId | Yes | Target preset ID | |
| extensionId | Yes | Target extension ID | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered externally. The description adds zero behavioral context beyond that – it does not say what is destroyed, whether the removal is permanent, or whether the extension is detached from all presets or only the referenced one.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence is not conciseness here – it is under-specification. There is no front-loaded substance because there is no substance at all.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, three-parameter mutation with no output schema, the description should at minimum explain scope and irreversibility. It instead repeats the title, leaving the agent to rely entirely on annotations and schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with presetId, extensionId and workspaceId all documented in the schema, so the baseline of 3 applies. The description contributes no additional parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g. must the extension be removed from a preset first?), and no mention of alternatives such as delete_preset. The agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_presetDeletes a preset.CDestructiveIdempotent
Deletes a preset.
| Name | Required | Description | Default |
|---|---|---|---|
| presetId | Yes | Target preset ID | |
| workspaceId | No | Workspace ID. Use -1 for the default workspace |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, and openWorldHint=false, so the safety profile is covered structurally. The description adds nothing beyond that — no statement of irreversible loss, no cascade effects, no confirmation requirements — so it exceeds the minimum but contributes no behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is short and front-loaded, but it restates the name rather than conveying information, so it does not earn its place. This is under-specification rather than genuine conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive delete tool with no output schema, the description omits what an agent needs: whether deletion is recoverable, whether the preset must be unused, and how workspaceId scopes the target. Annotations cover the write/destructive profile but not the operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: presetId and workspaceId are both documented in the schema, including the -1 default workspace convention. The description adds no parameter meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no reference to alternatives such as create_preset, get_presets, or bulk_update_profile_preset. The agent must infer entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_profileDeletes an existing browser profile.CDestructiveIdempotent
This method deletes an existing browser profile.
| Name | Required | Description | Default |
|---|---|---|---|
| profileId | Yes | Unique identifier of the profile to delete (required). | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds nothing beyond them: it does not say whether deleted profile data (cookies, extensions, fingerprints) is unrecoverable, whether recover_profile can undo it, or what happens to associated resources.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no padding, which is good, but it merely duplicates the title word for word and therefore does not earn its place as added information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no output schema, the description should at minimum cover consequences and recovery options. With annotations covering only the generic safety hints, an agent is left without the deletion semantics it needs to call this responsibly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both profileId and workspaceId (including the -1 default meaning) documented in the schema. The description contributes no additional parameter meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('deletes an existing browser profile'), so the purpose is not vague. However, it is a verbatim restatement of the title and offers no differentiation from siblings such as bulk_delete_profile, delete_profile_folder, or recover_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus bulk_delete_profile for multiple profiles, nor any prerequisites such as required permissions or whether the profile must be stopped first. The agent must infer all usage context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_profile_folderDeletes the specified profile folder.CDestructiveIdempotent
This method is used for deleting a profile folder. The profileFolderId value must match the existing folder in the specified workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| workspaceId | No | Workspace identifier. -1 means the default workspace. | |
| profileFolderId | Yes | Unique identifier of the profile folder to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so safety and idempotency are covered. The description only restates a generic precondition ('must match the existing folder') and never discloses what happens to the profiles contained in the folder — the single most important behavior for a destructive delete that has a '..._with_contents' counterpart.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded, but the opening sentence ('This method is used for deleting a profile folder') largely restates the title and wastes the space that could have carried the missing behavioral detail. Not verbose, but not efficient either.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with several overlapping delete siblings and no output schema, the description is too thin. It omits the folder-contents semantics and the alternative-tool routing an agent needs to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both workspaceId (default -1) and profileFolderId (uuid) are fully documented in the schema. The description adds only a light existence precondition for profileFolderId and nothing about workspaceId, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (deleting) and resource (a profile folder), so the basic operation is unambiguous. However, it fails to distinguish itself from the near-identical sibling delete_profile_folder_with_contents, leaving the agent unable to tell the two apart from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternatives are given. The critical question of when to pick this over delete_profile_folder_with_contents or delete_profile is never addressed, and no conditions or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_profile_folder_with_contentsDeletes the specified profile folder together with all its profiles.ADestructiveIdempotent
This method deletes a profile folder and all profiles it contains. The profileFolderId value must match the existing folder in the specified workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| workspaceId | No | The identifier of the workspace containing the profile folder. Defaults to -1 if not specified. | |
| profileFolderId | Yes | Unique identifier of the profile folder to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description still adds real value beyond them by disclosing the cascade scope (profiles inside the folder are destroyed) and the precondition that the ID must match an existing folder in the given workspace. It stops short of saying whether the deletion is recoverable, despite a recover_profile sibling existing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the destructive scope and with zero filler. The second sentence is slightly awkwardly worded ('must match the existing folder in the specified workspace') but remains compact and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 100% schema coverage, full annotation coverage of the safety profile, and no output schema, the description supplies the one thing structured data cannot: what actually gets destroyed. The main residual gap is recoverability/irreversibility, which is relevant given the recover_profile sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (including the -1 workspaceId default) are already fully documented in the schema, establishing the baseline of 3. The sentence about profileFolderId needing to match an existing folder adds a validation precondition, but it is framed as a general constraint rather than clarifying parameter behavior or format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('deletes a profile folder') and adds the critical scope detail that all contained profiles are deleted too, which distinguishes it in substance from the sibling delete_profile_folder. However, it never names that sibling explicitly, so the differentiation must be inferred from the 'and all profiles it contains' clause.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'and all profiles it contains' implies the use case (delete folder plus contents rather than folder alone), but there is no explicit when-to-use guidance, no mention of delete_profile_folder as the non-cascading alternative, and no note about prerequisites such as stopping running browser instances first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_proxyDeletes a proxy from the list by its identifier.BDestructiveIdempotent
This method deletes a proxy from the list by the specified ID. The proxyId value must match an existing proxy in the specified workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| proxyId | Yes | Unique identifier of the proxy to delete (required). | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds the precondition that the ID must match an existing proxy in the given workspace, which is useful context, but it says nothing about failure behavior or what happens to profiles bound to the deleted proxy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences that are front-loaded with the action and scope. It is slightly redundant, restating the 'by the specified ID' idea from the title, but nothing is padded or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive delete tool with annotations covering safety and no output schema, the description is adequate: it names the resource, the key parameter, and the existence precondition. It stops short of covering side effects (e.g., effect on profiles referencing the proxy) or error behavior, which a delete operation would benefit from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, establishing the baseline of 3. The description's note that proxyId must exist in the specified workspace adds mild semantic value about the workspaceId relationship but no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('deletes a proxy from the list by the specified ID'), so the operation is unambiguous. It does not, however, explicitly differentiate itself from the closely named sibling bulk_delete_proxy, leaving the agent to infer singular vs. bulk from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance or alternatives, even though bulk_delete_proxy and delete_proxy_folder sit in the same sibling set. The stated precondition ('must match an existing proxy') is a constraint, not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_proxy_folderDeletes the specified proxy folder.BDestructiveIdempotent
This method deletes a proxy folder. The parameter proxyFolderId must match the existing folder within the specified workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| workspaceId | No | Workspace identifier. -1 means the default workspace. | |
| proxyFolderId | Yes | The identifier of the proxy folder to be deleted (required). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered structurally. The description adds that the folder must exist within the specified workspace, but it does not explain what happens to folder contents, permissions, or failure behavior for non-empty folders.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences and front-loads the deletion action. It is efficient overall, though "This method" is mild filler and the second sentence could more directly state the prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive folder-deletion tool, the description covers the basic action and the existence prerequisite, and annotations carry the destructive/idempotent safety context. However, it omits the critical distinction from delete_proxy_folder_with_contents and does not clarify whether a non-empty folder will be rejected or what happens to contents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both workspaceId and proxyFolderId. The description reinforces that proxyFolderId must reference an existing folder within the workspace, but adds little parameter detail beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it deletes a proxy folder. It does not distinguish this tool from the sibling delete_proxy_folder_with_contents, which is an important nearby alternative, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a prerequisite that proxyFolderId must match an existing folder in the workspace, but it does not say when to use this tool rather than delete_proxy_folder_with_contents or other deletion tools. The usage is only implied by the tool name and operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_proxy_folder_with_contentsDeletes the specified proxy folder together with all its proxies.ADestructiveIdempotent
This method deletes a proxy folder and all proxies it contains. The parameter proxyFolderId must match the existing folder within the specified workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| workspaceId | No | Workspace identifier. -1 means the default workspace. | |
| proxyFolderId | Yes | The identifier of the proxy folder to be deleted (required). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the base safety profile is covered. The description adds valuable scope detail—that all contained proxies are deleted—which goes beyond the generic destructive flag, though it does not mention irreversibility, permissions, or behavior on a missing folder.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the action and its scope, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with full annotation coverage and no output schema, the description covers what gets deleted and the required parameter. It omits, however, the crucial routing guidance against delete_proxy_folder, so an agent could choose the wrong tool and cause unintended data loss.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds a meaningful validity constraint not present in the schema: proxyFolderId must reference an existing folder within the specified workspace, implying failure otherwise.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('deletes a proxy folder and all proxies it contains') and defines the 'with contents' behavior, which implicitly separates it from delete_proxy_folder. However, it never names or explicitly contrasts the sibling tool, leaving some differentiation to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the many alternatives, notably delete_proxy_folder, which is a critical distinction given the destructive scope. The only contextual statement is a parameter precondition ('proxyFolderId must match the existing folder'), not a when-to-use rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_cookiesExports cookies associated with a specified profile.B
This method allows exporting cookies from an existing profile in JSON format. The exported cookies can be used for backup or transfer purposes.
| Name | Required | Description | Default |
|---|---|---|---|
| profileId | Yes | The unique identifier of the profile to export cookies from. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the safety profile is covered. The description adds the JSON output format, but never clarifies whether cookies are returned inline or written to a file, nor what happens for an unknown profileId — a notable omission given readOnlyHint=false is unusual for what reads like a pure export.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action front-loaded and no filler. The second sentence is mildly redundant with the title's framing but still carries the intended-consuming use cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining the return, and 'JSON format' is only a partial answer — it does not say whether cookie data, a file path, or a download token comes back. Adequate for a two-parameter tool but leaves a real question open.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, so profileId and workspaceId (including the -1 default) are already fully documented in the schema. The description adds no extra semantics beyond 'existing profile', so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: exporting cookies from an existing profile, with the output format (JSON) stated. It does not, however, distinguish itself from the sibling cookie tools (import_cookies, copy_cookies), so an agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Can be used for backup or transfer purposes' describes the value of the output, not when to select this tool over import_cookies or copy_cookies, which are the obvious confusable siblings. No prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
focus_browser_instanceBring the browser window of the specified profile to the foregroundC
Bring the browser window of the specified profile to the foreground
| Name | Required | Description | Default |
|---|---|---|---|
| profileId | Yes | The unique identifier of the profile whose browser window should be focused. | |
| workspaceId | No | Workspace ID. Use -1 for the default workspace |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and non-idempotent behavior, but the description adds no context beyond the title. It does not explain whether focusing requires a running instance, whether it changes browser state, or what happens if the profile is not active.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words, but it merely repeats the title and is under-specified for the tool's operational context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter UI action with full schema coverage and annotations, the description is adequate but incomplete. The key missing context is that this focuses an existing browser window rather than starting one, and what happens if no window is running.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema fully documents profileId and workspaceId including the default workspace convention. The description adds no parameter-level meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like start_browser_instance or set_browser_instance_visibility. It also does not state the prerequisite that the browser instance must already be running.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
force_unlock_profileForces unlock of a cloud browser profile that is currently locked by another machineA
This method can be used to force unlock a cloud browser profile that is currently locked by another machine in the specified workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| profileId | Yes | The unique identifier of the profile to force-unlock. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the safety profile is covered by structured data. The description adds the useful condition that the lock is held by another machine, but omits the consequence for that other machine (session termination, whether the other machine must be stopped first).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the key qualifier (locked by another machine) front-loaded and no redundant restatement. The lead-in 'This method can be used to' is slightly padded but negligible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with full schema coverage, no output schema, and a clear mutation intent, the description gives enough to invoke it correctly. Only the side effect on the currently holding machine is left unstated, which is a minor gap rather than a blocker.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two simple parameters, so the schema already documents profileId and workspaceId fully. The description's mention of 'specified workspace' matches the schema but adds no new syntax or format detail; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (force unlock) and resource (cloud browser profile) with a clear pre-condition (currently locked by another machine) and scope (specified workspace). It is not, however, differentiated from the nearby recover_profile sibling, so an agent cannot tell which to prefer from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'currently locked by another machine' implies when this tool is applicable, so usage is inferable. But there is no explicit guidance on when to choose this over recover_profile, nor on prerequisites such as permissions or the state the profile must be in.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_browser_instancesRetrieves the list of browser instances available for the current user with filtering and pagination options.ARead-onlyIdempotent
This method returns the list of browser processes available for the current user with detailed information. Results can be filtered by profile ID or process ID, optionally sorted, and limited by the number of returned entries. Important: these actions are applied only to browser instances launched via the API.
| Name | Required | Description | Default |
|---|---|---|---|
| start | No | Starting index for pagination. | |
| total | No | Maximum number of results to return. | |
| sorting | No | Sorting parameters: ConnectionString, ProcessId, ProfileId (optional). | |
| processId | No | Filter by browser process ID (optional). | |
| profileId | No | Filter by profile ID (optional). | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile, so the bar is lower. The description nonetheless adds a genuinely non-derivable constraint: results apply only to browser instances launched via the API. It does not, however, describe the returned payload or pagination behavior beyond what the schema states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the purpose and ending on the high-value scope caveat. Mostly tight, with minor redundancy in 'with detailed information' that adds little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing what is returned, yet 'detailed information' is vague and the pagination semantics (start/total interplay, default 1000) are left to the schema. For a 6-parameter list tool with no output schema, this is adequate but leaves a real gap in return-value expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented with defaults and types (start, total, sorting, processId, profileId, workspaceId). The description's mention of profile/process filtering, sorting, and limiting simply restates the schema and adds no syntax or format detail. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('returns the list') and resource ('browser processes available for the current user'), so the core purpose is unambiguous. However, it never distinguishes itself from the singular sibling get_running_browser_instance, and it drifts between 'browser processes' and the tool name 'browser instances', which muddies the boundary with that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage by enumerating the filtering, sorting, and limiting options, which suggests a list/query scenario. But there is no explicit guidance on when to call this versus get_running_browser_instance in the sibling set, and no prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_browser_versionRetrieves the browser version.BRead-onlyIdempotent
This method returns the current version of the browser engine.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, covering the full safety profile. The description adds nothing beyond the annotations - no return format, no auth or rate-limit context - and effectively restates the title.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with zero filler, appropriate for a trivially simple no-parameter read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should ideally state what is returned (bare version string vs structured object) and how it relates to get_product_version. The safety and simplicity are covered by annotations, so the gap is modest but real.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline is 4 for a no-param tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('returns') and resource ('the current version of the browser engine'), so an agent knows exactly what it fetches. However, it does nothing to distinguish itself from the close sibling get_product_version, which could plausibly be confused with a browser-engine version lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of the near-identical sibling get_product_version. Usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_extensionsRetrieves extensions accessible to the current user.CRead-onlyIdempotent
Retrieves extensions accessible to the current user.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Optional extension ID filter | |
| name | No | Optional extension name filter | |
| start | No | Zero based start index for pagination. | |
| total | No | Maximum number of results to return. | |
| presetId | No | Optional extension preset ID filter | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered elsewhere. The description adds nothing on top of that — no mention of pagination defaults, result caps, or that filtering is optional — so it contributes no behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short, front-loaded sentence with no filler, which is structurally fine. But the sentence is an exact restatement of the title, so it earns its place only marginally — brevity here comes from under-specification rather than discipline.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter paginated list tool with no output schema and no required parameters, the description should at least explain filtering and paging behavior or what the returned collection contains. Instead it repeats the title, leaving the agent to infer everything about scope, defaults, and return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all six parameters (id, name, start, total, presetId, workspaceId), so the schema carries parameter semantics entirely. The description adds no filter syntax, default behavior for workspaceId=-1, or pagination details, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no indication of pruning/filtering intent, and no prerequisites (e.g., whether a workspace context is required). Nothing in the text routes the agent among the many sibling read tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_limitsRetrieves the workspace limits.CRead-onlyIdempotent
This method returns the current limits for the specified workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds nothing beyond that: it does not say what the limits represent, whether they change over time, or what happens when workspaceId is omitted (the schema default -1 handles that instead).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler or repetition. It is economical, though its brevity contributes to the under-specification noted in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only, single-optional-parameter tool with full annotation coverage and no output schema, little is strictly required. However, the central ambiguity — what 'current limits' actually contains — is left unresolved, which is the one thing the description should have clarified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented in the schema, including the -1 default meaning. The description only echoes 'specified workspace', adding no syntax or semantic detail beyond 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb and resource ('returns the current limits'), but 'limits' is undefined — it could mean plan/tariff quotas, proxy limits, or profile limits, especially with get_tariff in the sibling set. There is no differentiation from siblings that might also surface quota-like data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no alternatives (e.g., get_tariff for plan-level information). The agent must infer the use case entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_presetsRetrieves presets accessible to the current user.CRead-onlyIdempotent
Retrieves presets accessible to the current user.
| Name | Required | Description | Default |
|---|---|---|---|
| workspaceId | No | Workspace ID. Use -1 for the default workspace |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The description does add one piece of non-annotation context — that results are scoped to the current user's accessibility — but says nothing about pagination, ordering, or result shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short, front-loaded sentence with no padding. But the sentence duplicates the title almost exactly, so it is under-informative rather than economical — brevity without added value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only, zero-required-parameter tool this is close to adequate, and annotations carry the safety profile. With no output schema, however, the description leaves the return values (preset fields, filtering, pagination) entirely unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the single workspaceId parameter is fully documented in the schema, including the -1 default-workspace convention. The description adds no parameter meaning of its own, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of the alternative siblings (create_preset, delete_preset), and no stated prerequisites. The 'current user' scope is the only hint about when this applies, which is weak guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_versionRetrieves the product version.CRead-onlyIdempotent
This method returns the current version of the product.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds nothing beyond that — no mention of what the returned version string looks like or whether it reflects the API/server vs client.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no padding, front-loaded with the resource and action. It is efficiently sized for a trivial no-arg tool, though that efficiency comes at the cost of substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and rich annotations, the only remaining gap is what 'product version' actually denotes and how it differs from get_browser_version. The definition is adequate to invoke but thin on disambiguation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to document; baseline 4 applies. The schema is empty and correctly so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a near-verbatim restatement of the title/name: 'returns the current version of the product' under a tool called get_product_version. It gives no distinguishing detail versus the sibling get_browser_version, leaving the agent to infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this instead of get_browser_version, get_limits, or get_tariff. The only implicit cue is the word 'product,' which is not explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profileRetrieves detailed information about a specific Browser ProfileCRead-onlyIdempotent
Retrieves detailed information about a specific Browser Profile
| Name | Required | Description | Default |
|---|---|---|---|
| profileId | Yes | The unique identifier of the profile to retrieve. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered structurally. The description contributes nothing beyond that—no note on what 'detailed information' includes, whether a missing profile errors, or any rate/permission context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no wasted words, but that brevity comes from under-specification rather than economy—the sentence carries no information beyond the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should indicate what is returned; 'detailed information' is too vague for an agent to know the shape of the response. For a read tool with no return-value documentation, this leaves a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two parameters, both fully documented in-schema (profileId as UUID, workspaceId defaulting to -1). The description adds no additional meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: nothing tells the agent to prefer this over get_profiles for a single lookup, or how it relates to update_profile/delete_profile. No prerequisites (e.g., needing a valid profileId or workspace context) are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profile_foldersRetrieves the list of profile folders available in the specified workspace.ARead-onlyIdempotent
This method retrieves a list of folders available in the specified workspace. Optionally, it is possible to limit the number of results, specify filters, or define sorting conditions. If no parameters are specified, the method returns the first page of profile folders in the default order.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Unique folder identifier (optional filter). | |
| name | No | Folder name (optional filter). | |
| start | No | Zero based start index for pagination. | |
| total | No | Maximum number of folders to retrieve, page size. | |
| sorting | No | Sorting condition: Id, Name, FolderType, Quantity (optional). Sorting string format: "propertyName ASC" for ascending order or "propertyName DESC" for descending order. For example, "name ASC" or "createdAt DESC". | |
| location | No | Folder location: "Local" or "Cloud". Defaults to null. When null is specified, folders of all locations will be returned. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful default behavior (first page, default order) but says nothing about permission requirements, maximum result bounds, or response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and followed by the optional behaviors and default. Slightly redundant with the title but free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with no output schema and fully documented parameters, the description gives an agent enough to invoke it correctly, including the default paging behavior. It could mention permissions or result caps but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 7 parameters (id, name, start, total, sorting, location, workspaceId) is documented in the schema with defaults and format guidance. The description adds no parameter details beyond noting that filtering, sorting, and limiting exist, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('retrieves a list of folders available in the specified workspace'), and the name/title scope it to profile folders. It does not explicitly distinguish itself from the similar sibling get_proxy_folders, but the resource is otherwise clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It describes that the filters, sorting, and result limiting are optional and what happens by default ('returns the first page of profile folders in the default order'). However, it never says when to prefer this over get_profiles or get_proxy_folders, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profilesRetrieves accessible browser profiles with optional filters and sorting.ARead-onlyIdempotent
This method retrieves a list of profiles with their attributes from the specified workspace and the folder. It is possible to optionally filter results by ID, name, tags, and sorting.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Optional profile ID to filter. Pass null to ignore this filter. | |
| name | No | Optional name for filtering profiles. Pass empty string to ignore this filter. | |
| tags | No | Optional list of tags to filter profiles by. Example: '"tag 1" "ta g2"'. | |
| start | No | Zero based start index for pagination. | |
| total | No | Maximum number of profiles to retrieve, page size. | |
| sorting | No | Optional sorting string to determine the order of the returned profiles. Pass an empty string for default sorting. Sorting string format: "propertyName ASC" for ascending order or "propertyName DESC" for descending order. For example, "name ASC" or "createdAt DESC". | |
| folderId | No | Optional folder ID for filtering profiles. Pass null to ignore this filter. | |
| tagOperator | No | Tag filter operator: Or returns profiles with any of the tags, And returns profiles with all tags. Default value is And. | And |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered without the description. The description adds that attributes are returned and that filtering is optional, but says nothing about pagination behavior or result limits, which are relevant for a 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler, and the core purpose is front-loaded. Slightly verbose framing ('This method retrieves...') costs it the top score but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description indicates that profile attributes are returned, and the schema fully documents all nine parameters including pagination and tag-operator semantics. For a filtered-list tool this is close to complete, though pagination defaults and page-size behavior go unmentioned in prose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all nine parameters are already documented in the schema, including enum values, defaults, and sorting string format. The description only names the filterable fields (ID, name, tags, sorting) and adds no syntax, default, or interaction detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (retrieves a list of profiles with their attributes) and scopes it to a workspace and folder. It does not explicitly distinguish itself from the sibling get_profile (singular) or explain why an agent would pick this over that, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'It is possible to optionally filter results by ID, name, tags, and sorting' suggests a filtered-list use case. There is no explicit when-to-use, when-not-to-use, or routing to alternatives such as get_profile for a single record.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_proxiesRetrieves a list of proxies with filtering, sorting, and pagination options.ARead-onlyIdempotent
This method provides functionality for filtering, sorting, and paginating proxies. It can filter results by workspace ID, folder ID, proxy ID, name, and sorting criteria. If parameters are not specified, the response returns the default page of proxies in standard order.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Optional proxy ID to filter. Pass null to ignore this filter. | |
| name | No | Optional name for filtering proxies. Pass empty string to ignore this filter. | |
| start | No | Zero based start index for pagination. | |
| total | No | Maximum number of results to return, page size. | |
| sorting | No | Optional sorting string to determine the order of the returned proxies. Pass an empty string for default sorting. Sorting string format: "propertyName ASC" for ascending order or "propertyName DESC" for descending order. For example, "name ASC" or "createdAt DESC". | |
| folderId | No | Optional folder ID for filtering proxies. Pass null to ignore this filter. | |
| proxyUri | No | Optional proxy Uri address to filter proxies by. Pass empty string to ignore this filter. Proxy uri is normalized before filtering. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior. The description adds only the default-paging behavior, which is marginally useful but lacks detail on result limits, total counts, or ordering guarantees beyond what the schema defaults imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core capability and ending on default behavior. The phrase "provides functionality for" is mild filler, but there is no real bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paginated list tool with full schema coverage, complete annotations, and no output schema, the description covers purpose, filterable dimensions, and default behavior adequately. Minor gaps around result limits are already handled by schema defaults.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema fully documents all 8 parameters, making baseline 3 appropriate. The description aggregates the filterable fields (workspace ID, folder ID, proxy ID, name, sorting) but notably omits proxyUri, so it adds little beyond the schema and is slightly incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear resource (proxies) and the operations applied (filtering, sorting, pagination), so an agent knows this is a listing tool. It does not explicitly contrast itself with siblings like get_proxy_folders or the single-proxy mutations, but the read/list intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence describes default behavior when no parameters are supplied ("default page of proxies in standard order"), which is genuinely useful context. However, there is no explicit when-to-use vs alternatives guidance and no named alternative for retrieving a single proxy.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_proxy_foldersRetrieves a list of proxy folders with filtering, sorting, and pagination options.ARead-onlyIdempotent
This method is used to get the list of proxy folders. It supports filtering, sorting, and pagination in returned results. Optional query parameters can be used to refine the result set. If parameters are not specified, the method returns the first page of proxy folders in the default sorting order.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Filter by certain folder identifier (optional). | |
| name | No | Filter by folder name (optional). | |
| start | No | Zero based start index for pagination. | |
| total | No | Maximum number of results to return, page size. | |
| sorting | No | Result sorting condition (optional). Sorting string format: "propertyName ASC" for ascending order or "propertyName DESC" for descending order. For example, "name ASC" or "createdAt DESC". | |
| location | No | Proxy type filter (Local or Cloud). | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds one non-obvious behavior -- default pagination and sorting when parameters are omitted -- but says nothing about return volume limits or filter interaction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core purpose. There is mild redundancy between the title's 'filtering, sorting, and pagination options' and the body's restatement of the same capabilities, but nothing is bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full schema coverage and no output schema, the description covers purpose, optional refinement, and default behavior. Missing only differentiation from sibling list tools, which is the main residual gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (id, name, start, total, sorting, location, workspaceId) is already documented, including the sorting string format and the -1 workspace convention. The description adds no parameter meaning beyond 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('get the list of proxy folders'), which is clearer than the bare name. However, it never distinguishes itself from near-identical siblings like get_profile_folders or get_proxies, leaving the agent to infer the resource boundary from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It describes how optional parameters refine results and what happens when none are supplied ('first page ... default sorting order'), which gives useful invocation context. But it offers no when-to-use guidance relative to the sibling folder/proxy list tools and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_running_browser_instanceReturns the running browser instance for the specified profile.C
Throws if no browser instance is currently running for the given profile.
| Name | Required | Description | Default |
|---|---|---|---|
| profileId | No | Unique identifier of the profile (required). | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations do not cover error behavior, and the description usefully discloses that the call throws when no instance is running — a genuinely additive detail. However, it says nothing about the error type/message, what the returned instance object contains, or why a getter carries readOnlyHint=false. The annotation/description pairing is odd but not directly contradictory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no waste, but it is not front-loaded with the primary behavior — it leads with the exception case and omits the success path entirely, which is the wrong emphasis for a getter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations describing the return value, the description is the agent's only source for what this call produces, and it is silent on that. Nothing explains the payload shape or how it differs from the sibling list-style browser instance tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both profileId and workspaceId (including the -1 default meaning) are already fully documented in the schema. The description adds no parameter-level semantics beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description only states the failure mode ('Throws if no browser instance is currently running for the given profile') and never says what the tool does on success or what it returns. The actual purpose is carried entirely by the title, and the description does not distinguish this tool from the sibling get_browser_instances (plural).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus get_browser_instances, focus_browser_instance, or start_browser_instance. The only usage signal is implicit: the tool is meant for profiles that already have a browser running, but that is left for the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_script_run_statusRetrieves per-profile status of a previously started script run.C
Retrieves per-profile status of a previously started script run.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Identifier of the run to query, as returned by RunCookieRobot. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says the tool "Retrieves" status, which is unambiguously a read operation, while the annotations declare readOnlyHint=false. This is a direct semantic conflict on the read/write axis and warrants the annotation-contradiction flag. No other behavioral context (polling behavior, what happens on an unknown run ID, auth needs) is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no filler, so it is not bloated. But it duplicates the title verbatim, meaning the sentence does not earn its place by adding information; concision here reflects under-specification rather than discipline.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description is the only place an agent could learn what "per-profile status" returns (per-profile objects, state fields, terminal vs running states) and it says nothing. For a status-query tool with no return documentation and no usage guidance, the definition is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the body UUID and workspaceId (with -1 default meaning default workspace) are both fully documented in the schema, including the pointer back to RunCookieRobot. The description adds nothing about parameters, but with full schema coverage the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tautological: description restates name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or named alternative. The phrase "previously started script run" weakly implies this is a polling tool that requires a run created by run_cookie_robot, but the agent must infer that. No guidance on polling cadence or terminal states.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tariffRetrieves the workspace tariff.BRead-onlyIdempotent
This method returns the current tariff for the specified workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds only that the tariff is 'current' and scoped to a specified workspace, which is minimal but useful context beyond the annotations and schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and resource, no redundant clauses. Appropriately sized for a simple getter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only getter, the annotations and schema cover invocation adequately. However, with no output schema, the description does not explain what the tariff response contains, leaving a small gap for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the sole parameter is fully documented in the schema, including the default -1 meaning default workspace. The description references workspace scoping but adds no format or syntax detail beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('returns') and resource ('the current tariff') scoped to a workspace. It is clear enough to distinguish from siblings like get_limits because no other tool returns tariff data, though it does not explicitly name any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to prefer this tool, what prerequisites exist, or what alternatives exist. An agent must infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_threadsRetrieves execution threads for the specified workspace with optional filters and sorting.CRead-onlyIdempotent
This method retrieves the list of execution threads for the specified workspace. Threads can be filtered by token or type, limited by the number of results, and sorted using the provided parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Optional thread type filter. Pass null to return all types. | |
| start | No | Zero based start index for pagination. | |
| total | No | Maximum number of results to return, page size. | |
| sorting | No | Optional sorting string to determine the order of the returned threads. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. | |
| thread_token | No | Optional thread token to filter by. Pass null to ignore this filter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds no behavioral context beyond that - no pagination behavior, no note about the default 1000 result cap or performance implications, no description of what the returned thread entries contain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with no padding, and the primary purpose comes first. It is efficient but so terse that it carries little information for its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Six optional parameters, no output schema and no indication of the returned thread shape or pagination semantics. Workspace scoping is mentioned but the -1 default-workspace convention and the large default page size are left entirely to the schema, making this only minimally sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description touches on token/type filtering, result limiting and sorting, but adds no meaning beyond the schema - it never clarifies the vague sorting string format, and it omits workspaceId and pagination start entirely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('retrieves') and resource ('list of execution threads') scoped to a workspace, which is clear. It does not, however, contrast itself with nearby siblings like get_browser_instances or get_running_browser_instance, leaving a small ambiguity for an agent picking among retrieval tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence only restates available filters, limits and sorting rather than saying when to choose this tool over alternatives such as get_browser_instances. No prerequisites, no exclusions, no alternative routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workspacesRetrieves the list of workspaces accessible to the current user.ARead-onlyIdempotent
The operation retrieves the list of workspaces accessible to the current user. This information is required to execute most subsequent queries.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Optional workspace ID filter. | |
| name | No | Optional workspace name filter. | |
| roles | No | Optional roles filter. | |
| start | No | Zero based start index for pagination. | |
| total | No | Maximum number of results to return, page size. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds the prerequisite-for-subsequent-queries context, but says nothing about pagination behavior or result size despite having start/total parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words, and the core purpose is front-loaded. The first sentence is a near-verbatim restatement of the title, which is mildly redundant but not harmful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full schema coverage and no output schema, the description covers what is returned and why it matters (prerequisite for later queries). It is sufficient to call the tool correctly, though it could note that filters are optional and results are paginated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (id, name, roles, start, total) are already documented in the schema. The description adds no filtering or pagination semantics beyond what the schema provides, which is the expected baseline of 3 when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('retrieves') and resource ('list of workspaces') with the scope qualifier 'accessible to the current user', so an agent knows exactly what it returns. It does not need to differentiate from siblings since no other workspace-list tool exists in the sibling set, but it also does not explicitly say so.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'This information is required to execute most subsequent queries' gives a useful ordering hint (call this before other queries), which is more than nothing. However, there are no explicit when-not conditions and no named alternative, so it stays at implied usage rather than clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_cookiesImports cookies into the specified profile.B
This method allows importing cookies into an existing profile in JSON format. Ensure that the cookies parameter is a valid JSON value representing the cookies to be imported. Cookies will overwrite existing cookies in the profile.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Cookies in JSON format to import. | |
| profileId | Yes | The unique identifier of the profile to import cookies into. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Cookies will overwrite existing cookies in the profile,' which is a non-additive, data-replacing update, yet the annotation declares destructiveHint=false (defined as additive-only updates). This directly contradicts the annotation, so per the rubric it scores 1 and is flagged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler; the purpose is front-loaded and the overwrite warning is placed where it matters. The middle sentence re-states the format already given in sentence one, which is minor redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation with no output schema, the description covers purpose, format, and the overwrite side effect. It omits error/permission behavior and what is returned, and the misleading 'cookies parameter' naming leaves an agent to reconcile it against the 'body' property.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents profileId, body, and workspaceId, giving a baseline of 3. The description adds a JSON-validity requirement but refers to a 'cookies parameter' that does not exist in the schema (the actual parameter is 'body'), which is slightly confusing rather than clarifying.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('importing cookies into an existing profile in JSON format'), which is clear enough to separate it from export_cookies and copy_cookies. It does not name or contrast any sibling explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (import cookies into an existing profile) and it adds one relevant caution — existing cookies will be overwritten — but there is no explicit 'use this instead of copy_cookies/export_cookies when...' guidance or stated prerequisites (e.g., profile must exist/be unlocked).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_profileMoves multiple browser profiles to a target folder.B
This method moves one or more browser profiles to the specified target folder within the workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Array of profile IDs to move. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. | |
| targetFolderId | No | The unique identifier of the destination folder (required). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, non-idempotent). The description adds one genuinely useful behavior detail: the move is scoped 'within the workspace,' which implies cross-workspace moves are impossible. It says nothing about what happens if targetFolderId does not exist, whether the operation is atomic across multiple profile IDs, or what happens to profiles already in the folder.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, and the action and destination are front-loaded. It is slightly redundant with the title but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation with full schema coverage and annotations carrying the safety profile, the definition covers the essential who/what/where. Remaining gaps (failure behavior for invalid folder IDs, partial-move semantics) are modest, and no output schema means return values need not be explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains body (array of profile IDs), workspaceId (-1 = default), and targetFolderId (destination). The description only restates 'one or more browser profiles' and 'specified target folder,' adding no format, constraint, or default information beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (moves) and resource (browser profiles) plus the destination (target folder), so it is clearly differentiated from read-only siblings like get_profiles and from update_profile, which changes profile attributes rather than location. It does not explicitly name or contrast with any sibling, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives (e.g., update_profile for attribute changes, or folder-creation siblings to ensure the target exists). An agent must infer that this is the reorganization tool purely from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recover_profileRecovers a browser profile that is in an invalid stateA
This method can be used to recover a browser profile that is in an invalid state in the specified workspace. Most common use case is to recover a profile that is crashed or corrupted due to a machine failure.
| Name | Required | Description | Default |
|---|---|---|---|
| profileId | Yes | The unique identifier of the profile to recover. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false). The description adds useful context that the target profile must be in an invalid/corrupted state, but says nothing about permissions, what state changes, or whether the call is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and scope, with the use case following immediately. Efficient, though 'this method can be used to' is slightly padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with full schema coverage and no output schema, the definition covers what it does, where it applies, and when to reach for it. Only the relationship to other repair tools is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two parameters, so the schema already documents profileId and workspaceId (including the -1 default). The description adds no syntax, format, or naming guidance beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (recover) and resource (browser profile) plus the scoping constraint (specified workspace), so an agent can tell what the tool does. It does not distinguish itself from adjacent siblings such as force_unlock_profile or cleanup_profile, which also target a broken profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete trigger condition: 'recover a profile that is crashed or corrupted due to a machine failure.' That is real when-to-use guidance, but it offers no exclusions or routing to the neighbouring repair tools (force_unlock_profile, cleanup_profile).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_cookie_robotRuns cookie robot for specified browser profiles.B
This method starts the cookie robot for the specified browser profiles. The robot opens each profile's browser and visits the provided URLs to collect cookies.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Array of profile IDs to run the cookie robot for. | |
| urls | No | List of URLs for the cookie robot to visit. | |
| loadImages | No | Whether to load images while visiting pages. | |
| shuffleUrls | No | Whether to shuffle the list of URLs before visiting. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. | |
| maxVisitTimeSeconds | No | Maximum time in seconds to spend on each URL. | |
| minVisitTimeSeconds | No | Minimum time in seconds to spend on each URL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=false, destructive=false, so the safety profile is covered. The description adds real value by disclosing the side effect that a browser instance is launched per profile and pages are actually visited, but it omits that this is a long-running/async job, whether profiles must be idle first, and whether it blocks. There is also tension with openWorldHint=false, since visiting caller-supplied URLs reaches external sites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the mechanism; nothing is redundant. The 'This method starts' opener is slightly padded but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and 7 parameters, the description should say more about outcome and lifecycle for a job that launches browsers (e.g., that it runs asynchronously and how to check progress). It never tells the agent what to expect back or how to know the run finished, and does not point at status-related siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the seven parameters (profile IDs, urls, loadImages, shuffleUrls, workspaceId, min/maxVisitTimeSeconds) are fully documented in the schema. The description only restates 'specified browser profiles' and 'provided URLs' and adds no extra meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (starts) and resource (the cookie robot) and explains the mechanism: it opens each profile's browser and visits the given URLs to collect cookies. That is enough to separate it from cookie-file siblings like import_cookies/export_cookies, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies when to use it (when you want cookies harvested by browsing rather than by importing a cookie file), but there is no explicit when/when-not statement and no mention of the alternative route import_cookies. Usage is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_browser_instance_visibilitySet browser instance visibilityA
Set browser instance window visibility (show or hide). This method works only for browser instances launched via the API with reveal or conceal options.
| Name | Required | Description | Default |
|---|---|---|---|
| isVisible | No | Visibility value, true - to show, false - to hide | |
| profileId | Yes | The unique identifier of the profile to associate with the browser instance. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false, so the safety profile is already covered. The description adds a useful non-obvious constraint (API-launched instances only, requires reveal/conceal options), but says nothing about what happens on an unsupported instance or whether the change persists across sessions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the purpose comes first and the eligibility constraint second. Every clause carries information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description need not explain returns, and all three parameters are covered by the schema. It supplies the key precondition for a niche operation, but leaves the failure mode for ineligible instances (error vs. silent no-op) unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with isVisible, profileId and workspaceId all documented inline, including the -1 default for workspaceId. The description's '(show or hide)' merely restates the boolean semantics already 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Set') and resource ('browser instance window visibility') with an immediate gloss of the two states (show or hide). It is distinguishable from the nearest sibling, focus_browser_instance, though the description never explicitly contrasts them, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives a real precondition for use — only instances launched via the API with reveal or conceal options are supported — which is genuine when-to-use guidance. However, it offers no routing against alternatives such as focus_browser_instance or start_browser_instance, and no explicit 'do not use for X' framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_browser_instanceCreates a new browser instance for the specified profile.C
This method creates the new browser instance using the specified profile with optional workspace and desktop settings.
| Name | Required | Description | Default |
|---|---|---|---|
| profileId | No | Unique identifier of the profile to associate with the browser instance (required). | |
| desktopName | No | The name of the desktop environment (optional). Defaults to empty. | |
| threadToken | No | Thread token for the browser instance. To create a new execution thread, pass an empty string (default). | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. | |
| customFeatures | No | Optional JSON object of browser feature overrides. Overrides environment-read features. | |
| environmentTags | No | Tags to configure the environment for the browser instance. | |
| commandLineArguments | No | Custom command line arguments to pass to the browser on startup |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the write/non-idempotent profile is known. The description adds nothing beyond that: it never says a browser process is launched, what happens if the profile is already running, whether the instance persists after the call, or which permissions/limits apply. For a process-spawning tool this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, no filler, and the core action is front-loaded. It is slightly redundant in restating 'the new browser instance' from the title, but nothing is bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, non-idempotent creation tool with no output schema and no annotations covering side effects, the description should say what the call produces (an instance handle/id?) and what can go wrong. None of that is present, so an agent cannot anticipate the result or failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each of the 7 parameters is already documented, including defaults for threadToken and workspaceId. The description only loosely gestures at 'profile, workspace and desktop settings' and adds no syntax or interaction detail (e.g., how customFeatures overrides environmentTags). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('creates the new browser instance using the specified profile'), so an agent knows this spins up a browser tied to a profile. It does not, however, distinguish itself from the sibling bulk_start_browser_instance or explain the singular-vs-bulk split. Clear purpose, but no sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this rather than bulk_start_browser_instance, nor any stated prerequisites (profile must exist, whether the profile can be locked/in use, whether a thread or proxy is needed). The optional parameters are mentioned but never framed as usage conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_browser_instanceStopping Browser Instance.ADestructiveIdempotent
This method stops the existing browser instance associated with the specified profile. This operation permanently closes the browser instance and releases all associated resources.
| Name | Required | Description | Default |
|---|---|---|---|
| profileId | Yes | The target browser instance ID (profileId). | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds meaningful context beyond that: the operation permanently closes the browser instance and releases all associated resources, clarifying what gets destroyed. It does not cover auth requirements or error behavior, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with zero waste. The core action is front-loaded, and the consequence sentence adds necessary weight without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive operation with rich annotations and no output schema, the description is nearly complete: it explains what the tool does and what happens to resources. It could still note whether the call fails if no instance is running or what error state to expect, which leaves a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both profileId and workspaceId. The description refers to the 'specified profile' but adds no syntax, format, or workspace-specific meaning beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (stops) and resource (the existing browser instance associated with the specified profile), making the core purpose clear. It implicitly distinguishes from bulk_stop_browser_instance (singular vs bulk) and stop_thread (browser instance vs thread), but does not explicitly name any sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use or when-not-to-use guidance. It does not mention prerequisites (e.g., the instance must be running), nor does it point to alternatives like bulk_stop_browser_instance for multiple profiles or stop_thread for threads.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_threadStopping Execution Thread.ADestructiveIdempotent
This method can be used to stop an existing execution thread. Stopping a thread will also stop the associated browser instance, if it exists.
| Name | Required | Description | Default |
|---|---|---|---|
| threadToken | Yes | The unique token of the thread to stop (required). | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new behavioral context beyond them: stopping a thread cascades to stop its associated browser instance, which is not derivable from the annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the core action is front-loaded ahead of the side-effect disclosure. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description covers the key side effect an agent must anticipate (the cascading browser-instance stop). It omits auth/permission requirements and what happens when the thread is already stopped, but the idempotentHint annotation partially covers the latter, so the gap is small.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so threadToken and workspaceId (including the -1 default) are fully documented in the schema. The description adds no extra meaning about parameter format or constraints, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('stop an existing execution thread'), so an agent immediately knows what the tool does. It does not explicitly distinguish itself from the sibling bulk_stop_thread, leaving the singular/plural distinction to be inferred from the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use or when-not-to-use guidance, and never names bulk_stop_thread or stop_browser_instance as alternatives for related needs. The only usable context is implicit in the tool name itself, which is insufficient routing guidance for a tool family with several stop-style siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_profileUpdates an existing browser profile.CDestructiveIdempotent
This method updates an existing browser profile.
| Name | Required | Description | Default |
|---|---|---|---|
| cpu | No | CPU configuration settings. Allowed values: "auto" to use value from fingerprint, "ignore" to use system value, or one of the specific core/thread strings: "2/4", "4/8", "6/12", "8/16", "10/20", "12/24", "14/28", "16/32", "32/64", "64/128". Use the exact string including the slash, e.g. "4/8" not "4". | |
| name | No | New profile name. | |
| tags | No | New profile tags separated by spaces (optional). | |
| audio | No | Audio configuration settings. Allowed values: "on" to enable or "off" to disable. | |
| fonts | No | Font configuration settings. Allowed values: "on" to enable or "off" to disable. | |
| notes | No | New profile notes (optional). | |
| webGl | No | WebGL configuration settings. Allowed values: "auto" to use value from fingerprint, "ignore" to use system value. | |
| canvas | No | Canvas settings. The allowed values are: "Ignore" to disable this feature or "Noise" to use noising. | |
| memory | No | Memory configuration settings. Allowed values: "auto" to use value from fingerprint, "ignore" to use system value, or one of the specific GB values as a string: "2", "4", "8", "16", "32", "64", "128". | |
| screen | No | Screen configuration settings. Allowed values: "auto" to use value from fingerprint, "ignore" to use system value, or one of the named resolution IDs: "SVGA" (800×600), "WSVGA" (1024×600), "XGA" (1024×768), "HD" (1280×720), "WXGA" (1280×768), "WXGA+" (1280×800), "SXGA" (1280×1024), "WXGA HD" (1366×768), "WSXGA" (1440×900), "HD+" (1600×900), "UXGA" (1600×1200), "WSXGA+" (1680×1050), "FHD" (1920×1080), "WUXGA" (1920×1200), "WQHD" (2560×1440), "4K UHD-1" (3840×2160), "5K" (5120×2880), "8K UHD-2" (7680×4320), and others such as "XGA+", "SXGA-", "SXGA+", "1360×768", "1536×864", "QWXGA", "QXGA", "WQXGA". Use the exact named ID string, not pixel dimensions directly. | |
| webGpu | No | WebGPU configuration settings. Allowed values: "on" to enable or "off" to disable. | |
| webRtc | No | WebRTC configuration settings. Allowed values: "Emulate" to use value from fingerprint, "Real" to use system value, or "Hide" to disable. | |
| battery | No | Battery configuration settings. Allowed values: "on" to enable or "off" to disable. | |
| domRect | No | DOM Rectangle configuration settings. Allowed values: "Ignore" to disable or "Noise" to use dom rect noising. | |
| plugins | No | Browser plugins configuration. Allowed values: "on" to enable or "off" to disable. | |
| folderId | No | New folder which the profile will be moved to (optional). | |
| language | No | Browser language settings. Allowed values: "auto" to use value from fingerprint, "ignore" to use system value, or one of the supported locale codes: "ru" (Russian), "en-US" (English US), "de" (German), "fr" (French), "es" (Spanish), "en-GB" (English UK). | |
| presetId | No | Preset identifier to apply. Use null to keep unchanged, empty string to remove the preset, or a GUID to set a new preset. | |
| timeZone | No | Time zone settings. Allowed values: "auto" to use value from fingerprint, "ignore" to use system value, or custom timezone value (e.g., Europe/Moscow). | |
| profileId | Yes | Unique identifier of the edited profile (required). | |
| geoLocation | No | Geographic location settings. Allowed values: "auto" to use value from fingerprint, or from one to seven comma-separated numbers for coordinates (Latitude, Longitude, Altitude, Accuracy, AltitudeAccuracy, Heading, Speed, Radius). Numbers can be skipped (e.g., "10, , 40, , 60, 70"). Note: "ignore" is not supported for this field and will cause an error. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. | |
| mediaDevices | No | Media devices settings. The allowed values are: "auto" to use value from fingerprint, "ignore" to use real values or custom location values. You can specify from one to three integer numbers that represent the following values: AudioInput, AudioOutput and VideoInput. The numbers can be skipped. For example, the following values are valid: 1,,5 - means AudioInput = 1, AudioOutput = random, VideoInput = 5 | |
| speechVoices | No | Speech voices configuration. Allowed values: "on" to enable or "off" to disable. | |
| proxyServerId | No | Proxy server ID configuration. Use null to keep unchanged, empty string to clear the proxy, or provide a valid GUID to set a new proxy server | |
| commandLineArguments | No | Custom command line arguments to pass to the browser on startup |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=true, so the mutation/safety profile is covered structurally. The description adds nothing beyond that — it does not explain partial-update semantics, whether omitted fields are preserved, the meaning of empty-string vs null values, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, so there is no bloat, but it is under-specified rather than concise: it repeats the title and conveys no information the agent could not already derive from the name. Brevity here is a symptom of missing content, not efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool with 26 optional fields, one required ID, and no output schema, so the description carries the burden of explaining update semantics — which fields are actually changed, what happens to fields left unspecified, and how null/empty-string sentinels behave. None of that is present; only the schema's per-field docs partially compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the 26 parameters is documented in-schema with allowed values, so the baseline is 3. The description contributes no parameter meaning at all, but the schema fully compensates, so no penalty below baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description ("This method updates an existing browser profile") is a near-verbatim restatement of the title and tool name, adding no distinguishing information. It never mentions that this is a partial update over 26 fingerprint/identity fields, nor how it differs from siblings like bulk_update_profile_preset, bulk_update_profile_proxy, move_profile, or bulk_update_profile_tags.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. With a large sibling set including several narrow bulk update tools (bulk_update_profile_preset, bulk_update_profile_proxy, bulk_update_profile_tags) and move_profile, the agent is given no cue for when this general updater is the right choice versus those specialized tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_profile_folderUpdates the name of the specified profile folder.CDestructiveIdempotent
This method can be used to update the profile folder name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The new name for the profile folder. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. | |
| profileFolderId | Yes | Unique identifier of the profile folder to update. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=true, so the safety profile is covered there. The description adds nothing on top: it never explains that the rename overwrites the existing folder name, what happens if 'name' is omitted, or what permissions are needed — notable given the destructiveHint flag on a simple rename.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no padding, so it is not verbose. However, the brevity reflects under-specification rather than efficiency — the one sentence carries no actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 3 params, full schema coverage and annotations present, the structured data covers most invocation mechanics. But the description asserts the tool updates the folder name while the schema marks 'name' as optional (only profileFolderId is required), leaving an unresolved ambiguity about a no-name call that the description should have clarified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (name, workspaceId, profileFolderId) are already documented with meanings and defaults. The description adds no syntax, format, or constraint detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description restates the title almost verbatim ('update the profile folder name'), adding no scope, no constraints, and no differentiation from siblings such as update_profile_folder, update_proxy_folder, or update_profile. An agent learns nothing beyond the tool name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no reference to any alternative tool. The near-identical sibling name update_profile_folder (proxy folders) makes the omission of disambiguation a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_proxyModifies the configuration of an existing proxy server.BDestructiveIdempotent
This method modifies configuration of an existing proxy server based on specified parameters. Any parameters set to null will leave the corresponding property of the proxy unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name for the proxy. Set to null to retain the current name. | |
| proxyId | Yes | Unique identifier of the proxy (required). | |
| folderId | No | New folder for the proxy. Set to null to leave the current value unchanged. | |
| proxyUri | No | New URL for the proxy. Set to null to retain the current URL. | |
| ipChangeUrl | No | New URL for IP rotation. Set to null to retain the current URL. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is partially covered. The description adds the partial-update convention (null leaves properties unchanged), which is the key behavioral trait, but it does not explain what is destroyed, whether changes are reversible, or any auth/rate-limit constraints for a destructive write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the value-add (null semantics) front and center after the purpose statement. The first sentence is largely a restatement of the title, which costs a point on efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter destructive mutation with no output schema, the description covers purpose and null semantics, and the schema plus annotations carry the rest. It is adequate but silent on side effects of changing workspaceId/folderId and on what the call returns on success or failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter, including the null-retention convention, is already documented in the schema. The description restates the null rule at a higher level but adds no per-parameter meaning (e.g., what workspaceId=-1 implies for ownership or side effects) beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('modifies configuration') and resource ('an existing proxy server'), which cleanly separates it from create_proxy, delete_proxy, and bulk_delete_proxy in the sibling list. It does not explicitly name which sibling to use instead in a given situation, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like bulk_update_profile_proxy, bulk_update_profile_proxy, or the folder/profile update tools. There is also no mention of prerequisites such as permissions or whether the proxy must be stopped before modification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_proxy_folderUpdates the name of the specified proxy folder.BDestructiveIdempotent
This method updates the name of the specified proxy folder. This is the only editable property.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The new folder name. | |
| workspaceId | No | Workspace identifier. -1 means the default workspace. | |
| proxyFolderId | Yes | The folder identifier (required). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=true, so the safety profile is largely covered. The description adds the useful scoping fact that name is the only editable property, but it omits error behavior, required permissions, and whether the folder identity/members are preserved on rename. A 3 reflects that the annotations do the heavy lifting while the description contributes only a modest extra fact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the operation and followed by the scoping constraint. The first sentence largely restates the title, so a small amount is redundant, but the second sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-field rename mutation with full schema coverage and annotations covering safety, the description is adequate but thin. No output schema exists, so the description could have described the response or failure modes; instead it stops after stating the editable property. Usable but leaves behavioral gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents name, workspaceId, and proxyFolderId with formats/defaults. The description adds the single nuance that name is the sole editable field, reinforcing the mutation target, but provides no syntax, length, or uniqueness constraints. Baseline 3 is appropriate when the schema carries parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('updates the name') and resource ('proxy folder'), so an agent knows this is a rename operation rather than a general update. It narrows scope further by asserting name is the only editable property, which implicitly contrasts it with broader mutation tools. It does not name any sibling tool, so differentiation from create_proxy_folder/delete_proxy_folder is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites, and no alternatives named among the many sibling folder tools. The only usable signal is the implied constraint that this tool is for renaming, with get_proxy_folders/create_proxy_folder/delete_proxy_folder left unmentioned. Usage is inferred, not guided.
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.
63 tool updates
v0.1.0- First observed
bulk_continue_use_thread - First observed
bulk_create_profile - First observed
bulk_create_proxy - First observed
bulk_create_thread - First observed
bulk_delete_profile - First observed
bulk_delete_proxy - First observed
bulk_start_browser_instance - First observed
bulk_stop_browser_instance - First observed
bulk_stop_thread - First observed
bulk_update_profile_preset - First observed
bulk_update_profile_proxy - First observed
bulk_update_profile_tags - First observed
change_mobile_proxy_ip - First observed
cleanup_profile - First observed
continue_use_thread - First observed
copy_cookies - First observed
create_extension_from_file - First observed
create_extension_from_web - First observed
create_preset - First observed
create_profile - First observed
create_profile_folder - First observed
create_proxy - First observed
create_proxy_folder - First observed
create_thread - First observed
delete_extension - First observed
delete_preset - First observed
delete_profile - First observed
delete_profile_folder - First observed
delete_profile_folder_with_contents - First observed
delete_proxy - First observed
delete_proxy_folder - First observed
delete_proxy_folder_with_contents - First observed
export_cookies - First observed
focus_browser_instance - First observed
force_unlock_profile - First observed
get_browser_instances - First observed
get_browser_version - First observed
get_extensions - First observed
get_limits - First observed
get_presets - First observed
get_product_version - First observed
get_profile - First observed
get_profile_folders - First observed
get_profiles - First observed
get_proxies - First observed
get_proxy_folders - First observed
get_running_browser_instance - First observed
get_script_run_status - First observed
get_tariff - First observed
get_threads - First observed
get_workspaces - First observed
import_cookies - First observed
move_profile - First observed
recover_profile - First observed
run_cookie_robot - First observed
set_browser_instance_visibility - First observed
start_browser_instance - First observed
stop_browser_instance - First observed
stop_thread - First observed
update_profile - First observed
update_profile_folder - First observed
update_proxy - First observed
update_proxy_folder
TDQS
Scored across 63 tools
Core resources are separated (profiles, proxies, folders, threads, browser instances), but boundaries blur between create_thread/start_browser_instance and between update_profile and bulk_update_profile_proxy/tags. Bulk prefixes help, yet an agent must still decide whether to operate on threads or browser instances to open a browser.
All names use snake_case and almost all follow a verb_noun form (get_profiles, create_proxy, bulk_delete_profile, stop_thread). Variants like change_mobile_proxy_ip and get_running_browser_instance are more specific but still fit the same readable pattern.
63 tools is far beyond the 3-15 well-scoped range and exceeds the 50+ extreme threshold, including many single/bulk CRUD pairs and ancillary endpoints. While the platform is broad, this surface imposes heavy selection and context overhead.
Major entities have CRUD/lifecycle coverage, including bulk operations. However presets lack update_preset/get_preset, extensions lack update, and get_script_run_status has no corresponding script-run/start tool, leaving notable dead ends.
Maintenance
Related MCP Connectors
Zenrows MCP server: Fetch, Extract, Batch, and Browser Sessions for AI agents
Official Browserless MCP server: browser automation, scraping, screenshots and PDFs for AI agents.
Web scraping, browser automation, screenshots and AI data extraction for AI agents via MCP.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- AlicenseCqualityDmaintenanceMCP server for HotLogin Local API that enables AI agents to manage browser environments, groups, and proxies, and perform browser automation tasks like page interaction and cookie management through a standardized interface.237 npmMIT
- AlicenseAqualityBmaintenanceMCP server for AI browser automation with tools for navigation, actions, data extraction, and scripting, supporting local and cloud execution.14237 npm3Apache 2.0

@meshbrow/mcp-serverofficial
AlicenseNot gradedqualityBmaintenanceMCP server for Meshbrow that gives AI agents full browser automation capabilities with stealth anti-detection, enabling natural language control of browser sessions, data extraction, and multi-browser fleets.MIT
flashid-mcpofficial
AlicenseAqualityBmaintenanceMCP server for FlashID client that lets AI agents manage browser profiles, proxies, and folders, and control browser automation endpoints via natural language.2630 npmMIT