Skip to main content
Glama

proxy-mcp

proxy-mcp is an MCP server that runs an explicit HTTP/HTTPS MITM proxy (L7). It captures requests/responses, lets you modify traffic in-flight (headers/bodies/mock/forward/drop), supports upstream proxy chaining, and records TLS fingerprints for connections to the proxy (JA3/JA4) plus optional upstream server JA3S. Ships "interceptors" to route the cloakbrowser stealth browser, CLI tools, and Docker containers through the proxy, plus Playwright-driven browser automation with locator-based click, typing, scroll, and ARIA snapshots.

72 tools + 7 resources + 3 resource templates. Built on mockttp and cloakbrowser.

IMPORTANT

proxy-mcp is no longer published to npmjs. npm's publishing system has become too annoying to be worth it — expiring tokens that silently break releases, and a mandatory passkey/2FA enrollment maze just to change a package setting. Distribution now happens directly from this repository:

npx -y "github:yfe404/proxy-mcp#semver:^3"

Versions ≤ 3.3.2 remain on npmjs but will never be updated — npx -y proxy-mcp@latest silently stays stale. Update your MCP config to the GitHub form above. See Setup.

Table of Contents

Related MCP server: Android Proxy MCP

Setup

Quick install (Claude Code)

claude mcp add proxy-mcp -- npx -y "github:yfe404/proxy-mcp#semver:^3"

This installs proxy-mcp as an MCP server using stdio transport, straight from GitHub — no registry involved. The #semver:^3 range resolves against this repo's version tags, so new releases are picked up automatically.

Note: the first install compiles from source (a prepare build), so it takes a few seconds longer than a registry tarball — subsequent launches use the npx cache. Why not npmjs anymore? See the announcement at the top: their publishing system got too annoying.

Scopes:

# Per-user (available in all projects)
claude mcp add --scope user proxy-mcp -- npx -y "github:yfe404/proxy-mcp#semver:^3"

# Per-project (shared via .mcp.json, commit to repo)
claude mcp add --scope project proxy-mcp -- npx -y "github:yfe404/proxy-mcp#semver:^3"

To pin an exact release instead, use github:yfe404/proxy-mcp#v3.4.0.

Prerequisites

  • Node.js 20+

From source (development)

git clone https://github.com/yfe404/proxy-mcp.git
cd proxy-mcp
npm install
npm run build
# stdio transport (default) — used by MCP clients like Claude Code
node dist/index.js

# Streamable HTTP transport — exposes /mcp endpoint for scripting
node dist/index.js --transport http --port 3001

--transport and --port also accept env vars TRANSPORT and PORT.

PROXY_MCP_DEBUG=1 adds debug lines to stderr, one per request the client cancels: request aborted by client: <method> <url>.

PROXY_MCP_UPSTREAM_PASSWORD and PROXY_MCP_UPSTREAM_HOST keep an upstream proxy password out of the transcript — see Keeping the upstream password out of the transcript.

Manual MCP configuration

The configured server alias controls Claude's generated tool prefix. The examples below use proxy-mcp, so Claude Code exposes tools as mcp__proxy-mcp__<tool_name>. If you rename the server key to proxy, use mcp__proxy__<tool_name> instead.

Claude Code CLI:

# stdio (default)
claude mcp add proxy-mcp -- npx -y "github:yfe404/proxy-mcp#semver:^3"

# From local clone
claude mcp add proxy-mcp -- node /path/to/proxy-mcp/dist/index.js

# HTTP transport for scripting
claude mcp add --transport http proxy-mcp http://127.0.0.1:3001/mcp

.mcp.json (project-level, commit to repo):

{
  "mcpServers": {
    "proxy-mcp": {
      "command": "npx",
      "args": ["-y", "github:yfe404/proxy-mcp#semver:^3"]
    }
  }
}

Streamable HTTP transport:

{
  "mcpServers": {
    "proxy-mcp": {
      "type": "streamable-http",
      "url": "http://127.0.0.1:3001/mcp"
    }
  }
}

HTTP Proxy Configuration

1) Start proxy and get endpoint

proxy_start

Use the returned port and endpoint http://127.0.0.1:<port>.

Use the browser interceptor so proxy flags and cert trust are configured automatically. Launches cloakbrowser — a stealth-patched Chromium with source-level C++ fingerprint patches and humanize mode on by default:

interceptor_browser_launch --url "https://example.com"

Drive the page with Playwright-backed tools (no CDP, no sidecar — target_id is all you need):

interceptor_browser_navigate --target_id "browser_<id>" --url "https://apify.com"
interceptor_browser_snapshot  --target_id "browser_<id>"
interceptor_browser_screenshot --target_id "browser_<id>" --file_path "/tmp/shot.png"

3) Browser setup (manual fallback)

If launching a browser manually, pass the proxy flag yourself:

google-chrome --proxy-server="http://127.0.0.1:<port>"

4) CLI/process setup

Route any process through proxy-mcp by setting proxy env vars:

export HTTP_PROXY="http://127.0.0.1:<port>"
export HTTPS_PROXY="http://127.0.0.1:<port>"
export NO_PROXY="localhost,127.0.0.1"

If the client verifies TLS, trust the proxy-mcp CA certificate (see proxy_get_ca_cert) or use the Terminal interceptor (interceptor_spawn) which sets proxy env vars plus common CA env vars (curl, Node, Python requests, Git, npm/yarn, etc.):

interceptor_spawn --command curl --args '["-s","https://example.com"]'

Explicit curl examples:

curl --proxy http://127.0.0.1:<port> http://example.com
curl --proxy http://127.0.0.1:<port> https://example.com

5) Upstream proxy chaining

Set optional proxy chaining from proxy-mcp to another upstream proxy (for geolocation, auth, or IP reputation):

Client/app  →  proxy-mcp (local explicit proxy)  →  upstream proxy (optional chaining layer)
proxy_set_upstream --proxy_url "socks5://user:pass@upstream.example:1080"

Supported upstream URL schemes: socks4://, socks5://, http://, https://, pac+http://.

Keeping the upstream password out of the transcript

Tool calls and tool results are both persisted by the MCP client. To avoid writing an upstream password there on every call, set it in the server's environment and pass a URL with a username but no password.

Two variables are required, and both have to be in the environment of the server process, which the MCP client spawns. Exporting them in the shell you launch the client from may reach it — CLI clients pass their own environment through — but that depends on the client and is lost the moment the server is started any other way. Put them in the client's server config:

variable

meaning

PROXY_MCP_UPSTREAM_PASSWORD

the password to fill in

PROXY_MCP_UPSTREAM_HOST

the only hostname it may be sent to — a bare hostname, no scheme, port or path

claude mcp add proxy-mcp \
  -e PROXY_MCP_UPSTREAM_PASSWORD=s3cret \
  -e PROXY_MCP_UPSTREAM_HOST=upstream.example \
  -- npx -y "github:yfe404/proxy-mcp#semver:^3"
{
  "mcpServers": {
    "proxy-mcp": {
      "command": "npx",
      "args": ["-y", "github:yfe404/proxy-mcp#semver:^3"],
      "env": {
        "PROXY_MCP_UPSTREAM_PASSWORD": "s3cret",
        "PROXY_MCP_UPSTREAM_HOST": "upstream.example"
      }
    }
  }
}

Then omit the password from the call:

proxy_set_upstream --proxy_url "http://user@upstream.example:1080"
# routes as http://user:s3cret@upstream.example:1080

Why the host variable exists. Without it, a caller who cannot read the password could still name any host and have the password delivered there — the proxy sends it on the first request, and the transcript would show only ***. The hostname is matched case-insensitively and exactly, with no wildcards; the port is not part of the match, so one variable covers a provider offering several. A URL naming any other host is left alone. If PROXY_MCP_UPSTREAM_PASSWORD is set and PROXY_MCP_UPSTREAM_HOST is not, nothing is merged at all: a half-configuration fails closed rather than becoming an unbound credential.

This keeps the password out of tool arguments and responses, not out of reach. interceptor_spawn runs an arbitrary command as the server user, so a caller can read the client config file the password is configured in — and on Linux /proc/<pid>/environ. The variable removes the routine exposure of writing a credential into every tool call; it is not a sandbox, and anyone who can call interceptor_spawn should be treated as able to obtain the password.

The response reports which credential was used — passwordSource is env, url or none. none means no password was applied to a URL that names a user: either the credential is genuinely username-only, or the server does not have both variables set for this host. The field is omitted for a URL with no username, where the question does not arise.

Applies to proxy_set_upstream and proxy_set_host_upstream. A URL that already carries a password is used as-is, so existing calls are unaffected. One credential covers all upstreams at the pinned host; a URL without a username is left alone.

Username-only credentials at the pinned host cannot be expressed. A URL with a username and no password is exactly the syntax that requests the merge, and user:@host cannot signal otherwise — the URL parser erases the empty password before the server sees it. If the pinned host authenticates on the username alone, unset PROXY_MCP_UPSTREAM_PASSWORD for that server.

socks*:// upstreams: no : in the password. socks-proxy-agent splits the credential on the first : and keeps only what follows, so pa:ss would authenticate as pa. Rather than deliver half a password silently, a socks upstream is refused with an error when PROXY_MCP_UPSTREAM_PASSWORD contains :. The truncation itself is a toolchain limitation, not something this introduces — a literal socks5://user:pa%3Ass@host:1080 truncates the same way, and nothing can guard that. http://, https:// and pac+http:// upstreams take the whole password.

A : in the username is refused on every scheme. Basic auth splits the decoded pair at the first colon (RFC 7617), and socks-proxy-agent does the same, so a username of gro:ups with password s3cret reaches the proxy as user gro, password ups:s3cret — the merged password silently discarded. No scheme can carry it, so the merge refuses rather than guess. Put the whole credential in proxy_url instead.

Responses redact credentials — the password in userinfo, with path segments masked and the query and fragment dropped, since a pac+http:// token may live in any of those:

Global upstream set to http://user:***@upstream.example:1080/
Global upstream set to pac+http://pac.example.com/***

proxy_status and the proxy://status resource are redacted the same way. A PAC URL's filename is masked along with the rest of the path, so a confirmation message shows the host and nothing else.

The username is not redacted. For several providers it is configuration rather than a secret — Apify Proxy encodes proxy group, country and sticky-session id there — and showing it is what makes the confirmation useful. If your provider puts a secret in the username field, do not rely on these messages being safe to share.

Typical geo-routing examples:

# Route ALL outgoing traffic from proxy-mcp via a geo proxy
proxy_set_upstream --proxy_url "socks5://user:pass@fr-exit.example.net:1080"

# Bypass upstream for local/internal hosts
proxy_set_upstream --proxy_url "http://user:pass@proxy.example.net:8080" --no_proxy '["localhost","127.0.0.1",".corp.local"]'

# Route only one hostname via a dedicated upstream (overrides global)
proxy_set_host_upstream --hostname "api.example.com" --proxy_url "https://user:pass@us-exit.example.net:443"

# Remove overrides when done
proxy_remove_host_upstream --hostname "api.example.com"
proxy_clear_upstream

For HTTPS MITM, the proxy CA must be trusted in the target environment (proxy_get_ca_cert).

6) Validate and troubleshoot quickly

proxy_list_traffic --limit 20
proxy_search_traffic --query "example.com"

Common issues:

  • Traffic from the wrong browser instance (fix: always pass target_id from interceptor_browser_launch)

  • HTTPS cert trust missing on target

  • NO_PROXY bypassing expected hosts

  • First launch is slow: cloakbrowser downloads a ~200 MB stealth Chromium binary on first use (cached afterwards)

7) HAR import + replay

Import HAR into a persisted session, then analyze with existing session query/findings tools:

proxy_import_har --har_file "/path/to/capture.har" --session_name "imported-run"
proxy_list_sessions
proxy_query_session --session_id SESSION_ID --hostname_contains "api.example.com"
proxy_get_session_handshakes --session_id SESSION_ID

Replay defaults to dry-run (preview only). Execute requires explicit mode:

# Preview what would be replayed
proxy_replay_session --session_id SESSION_ID --mode dry_run --limit 20

# Execute replay against original hosts
proxy_replay_session --session_id SESSION_ID --mode execute --limit 20

# Optional: override target host/base URL while preserving path+query
proxy_replay_session --session_id SESSION_ID --mode execute --target_base_url "http://127.0.0.1:8081"

Note: imported HAR entries (and entries created by proxy_replay_session) do not carry JA3/JA4/JA3S handshake metadata. Use live proxy-captured traffic to analyze handshake fingerprints.

Boundaries

  • Only sees traffic configured to route through it (not a network tap or packet sniffer)

  • Spoofs outgoing JA3 + HTTP/2 fingerprint + header order (via impit — native Rust TLS impersonation), not JA4 (JA4 is capture-only)

  • Can add, overwrite, or delete HTTP headers; outgoing header order can be controlled via fingerprint spoofing

  • Returns its own CA certificate — does not expose upstream server certificate chains

TLS ClientHello Passthrough (browser via interceptor)

When cloakbrowser is launched via interceptor_browser_launch, proxy-mcp forwards the browser's original TLS ClientHello to the upstream server for document loads and same-origin sub-resource requests. The target server sees an authentic Chrome TLS fingerprint — not the proxy's.

This is a key difference from typical MITM proxies (mitmproxy, Charles, Fiddler) which re-terminate TLS with their own fingerprint, making MITM trivially detectable by anti-bot systems via JA3/JA4 analysis.

How to verify passthrough is working:

proxy_list_tls_fingerprints --hostname_filter "example.com"
  • JA3 varies across requests to the same host — this is expected; Chrome randomizes cipher suite order per-connection (feature since Chrome 110+)

  • JA4 stays stable — same cipher/extension set, just different ordering

  • JA3 variation + JA4 stability = authentic Chrome TLS passthrough confirmed

When passthrough applies vs. when spoofing is needed:

Traffic source

TLS behavior

Action needed

cloakbrowser via interceptor_browser_launch (document loads, same-origin)

Browser's native ClientHello forwarded (passthrough)

None — fingerprint is authentic

cloakbrowser via interceptor_browser_launch (cross-origin sub-resources, when spoof active)

Re-issued via impit with spoofed TLS

proxy_set_fingerprint_spoof with a browser preset

Non-browser clients (curl, Python, interceptor_spawn)

Proxy's own TLS

proxy_set_fingerprint_spoof or proxy_set_ja3_spoof required

HAR replay (proxy_replay_session)

Proxy's own TLS

proxy_set_fingerprint_spoof required

Built on stealth browsers + Playwright

Browser automation uses cloakbrowser for stealth-patched Chromium, driven through Playwright. There is no CDP sidecar or hand-rolled stealth script in proxy-mcp. Downstream tools take a browser_* target from interceptor_browser_launch.

Capability

proxy-mcp

See/modify DOM, run JS in page

interceptor_browser_evaluate (run JS file, return value), interceptor_browser_inject_init_script (pre-document hook, every navigation), interceptor_browser_add_script_tag (DOM-visible — avoid for stealth); plus interceptor_browser_snapshot for ARIA reads

Read cookies, localStorage, sessionStorage

Yes — interceptor_browser_list_cookies, interceptor_browser_list_storage_keys

Capture HTTP request/response bodies

Via the MITM proxy (4 KB preview cap by default; full capture profile on persisted sessions stores complete bodies)

Modify requests in-flight (headers, body, mock, drop)

Yes (declarative rules, hot-reload)

Upstream proxy chaining (geo, auth)

Global + per-host upstreams across all clients (SOCKS4/5, HTTP, HTTPS, PAC)

TLS fingerprint capture (JA3/JA4/JA3S)

Yes

JA3 + HTTP/2 fingerprint spoofing

Proxy-side (impit re-issues matching requests with spoofed TLS 1.3, HTTP/2 frames, and header order)

Intercept non-browser traffic (curl, Python, Docker containers)

Yes (interceptors)

Human-like mouse/keyboard/scroll input

humanizer_* tools call Playwright mouse/keyboard primitives on browser_* targets. Cloakbrowser's own humanize patches apply when enabled at launch.

Locator-based interaction

humanizer_click accepts CSS/XPath selector, ARIA role + name, visible text, or form label — no pixel guessing

Standard flow:

  1. Call proxy_start

  2. Optionally enable outbound fingerprint spoofing for cross-origin sub-resources: proxy_set_fingerprint_spoof --preset chrome_136

  3. Call interceptor_browser_launch --url "https://example.com"

  4. Drive the page: interceptor_browser_navigate, interceptor_browser_snapshot, humanizer_click --selector "...", humanizer_type --text "..."

  5. Inspect traffic: proxy_search_traffic --query "<hostname>"

Tools Reference

Lifecycle (4)

Tool

Description

proxy_start

Start MITM proxy, auto-generate CA cert

proxy_stop

Stop proxy (traffic/cert retained). Deactivates this MCP session's interceptor targets; all: true deactivates every session's

proxy_status

Running state, port, rule/traffic counts

proxy_get_ca_cert

CA certificate PEM + SPKI fingerprint

Upstream Proxy (4)

Tool

Description

proxy_set_upstream

Set global upstream proxy

proxy_clear_upstream

Remove global upstream

proxy_set_host_upstream

Per-host upstream override

proxy_remove_host_upstream

Remove per-host override

Interception Rules (7)

Tool

Description

proxy_add_rule

Add rule with matcher + handler

proxy_update_rule

Modify existing rule

proxy_remove_rule

Delete rule

proxy_list_rules

List all rules by priority

proxy_test_rule_match

Test which rules would match a simulated request or captured exchange, with detailed diagnostics

proxy_enable_rule

Enable a disabled rule

proxy_disable_rule

Disable without removing

Quick debugging examples:

# Simulate a request and see which rule would win
proxy_test_rule_match --mode simulate --request '{"method":"GET","url":"https://example.com/api/v1/items","headers":{"accept":"application/json"}}'

# Evaluate a real captured exchange by ID
proxy_test_rule_match --mode exchange --exchange_id "ex_abc123"

Traffic Capture (4)

Tool

Description

proxy_list_traffic

Paginated traffic list with filters

proxy_get_exchange

Full exchange details by ID

proxy_search_traffic

Full-text search across traffic

proxy_clear_traffic

Clear capture buffer

Modification Shortcuts (3)

Tool

Description

proxy_inject_headers

Add/overwrite/delete headers on matching traffic (set value to null to remove a header)

proxy_rewrite_url

Rewrite request URLs

proxy_mock_response

Return mock response for matched requests

TLS Fingerprinting (9)

Tool

Description

proxy_get_tls_fingerprints

Get JA3/JA4 client fingerprints + JA3S for a single exchange

proxy_list_tls_fingerprints

List unique JA3/JA4 fingerprints across all traffic with counts

proxy_set_ja3_spoof

Legacy: enable JA3 spoofing (deprecated, use proxy_set_fingerprint_spoof)

proxy_clear_ja3_spoof

Disable fingerprint spoofing

proxy_get_tls_config

Return current TLS config (server capture, JA3 spoof state)

proxy_enable_server_tls_capture

Toggle server-side JA3S capture (monkey-patches tls.connect)

proxy_set_fingerprint_spoof

Enable full TLS + HTTP/2 fingerprint spoofing via impit. Supports browser presets.

proxy_list_fingerprint_presets

List available browser fingerprint presets (e.g. chrome_131, chrome_136, chrome_136_linux, firefox_133)

proxy_check_fingerprint_runtime

Check fingerprint spoofing backend readiness

Fingerprint spoofing works by re-issuing the request from the proxy via impit (native Rust TLS/HTTP2 impersonation via rustls). TLS 1.3 and HTTP/2 fingerprints (SETTINGS, WINDOW_UPDATE, PRIORITY frames) match real browsers by construction. The origin server sees the proxy's spoofed TLS, HTTP/2, and header order — not the original client's. When a user_agent is set (including via presets), proxy-mcp also normalizes Chromium UA Client Hints headers (sec-ch-ua*) to match the spoofed User-Agent (forwarding contradictory hints is a common bot signal). Browser exception: when cloakbrowser is launched via interceptor_browser_launch, document loads and same-origin requests use the browser's native TLS (no impit), preserving fingerprint consistency for bot detection challenges. Only cross-origin sub-resource requests are re-issued with spoofed TLS. Non-browser clients (curl, spawn, HAR replay) get full TLS + UA spoofing on all requests. Use proxy_set_fingerprint_spoof with a browser preset for one-command setup. proxy_set_ja3_spoof is kept for backward compatibility but custom JA3 strings are ignored (the preset's impit browser target is used instead). JA4 fingerprints are captured (read-only) but spoofing is not supported.

Interceptors (10)

Interceptors configure targets (browsers, processes, containers) to route their traffic through the proxy automatically.

Discovery (3)

Tool

Description

interceptor_list

List all interceptors with availability and active target counts

interceptor_status

Detailed status of a specific interceptor

interceptor_deactivate_all

Emergency cleanup: kill all active interceptors across all types

Browser (3)

Tool

Description

interceptor_browser_launch

Launch cloakbrowser (stealth Chromium) with proxy flags, SPKI cert trust, built-in humanize mode

interceptor_browser_navigate

Navigate the bound page via Playwright page.goto and verify proxy capture

interceptor_browser_close

Close a browser instance by target ID

Stealth is source-level: cloakbrowser ships 48+ C++ patches so ja3n/ja4/akamai match real Chrome, navigator.webdriver is false, audio/canvas/WebGL fingerprints match real hardware. No JS stealth injection needed. First launch downloads a ~200 MB Chromium binary (cached afterwards).

Terminal / Process (2)

Tool

Description

interceptor_spawn

Spawn a command with proxy env vars pre-configured (HTTP_PROXY, SSL certs, etc.)

interceptor_kill

Kill a spawned process and retrieve stdout/stderr

Sets 18+ env vars covering curl, Node.js, Python requests, Deno, Git, npm/yarn.

Docker (2)

Tool

Description

interceptor_docker_attach

Inject proxy env vars and CA cert into running container

interceptor_docker_detach

Remove proxy config from container

Two modes: exec (live injection, existing processes need restart) and restart (stop + restart container). Uses host.docker.internal for proxy URL.

Browser DevTools-equivalents (12)

Playwright-driven tools for the browser target. Each takes a target_id directly — no session binding, no sidecar.

Tool

Description

interceptor_browser_snapshot

ARIA/role YAML snapshot of the page (or selector subtree) — optimized for LLM page reasoning

interceptor_browser_screenshot

Screenshot. Writes to file_path if provided; otherwise reports byte count only

interceptor_browser_list_console

Buffered console messages since launch, with type/text filters and pagination

interceptor_browser_list_cookies

Cookie listing with filters, pagination, truncated value previews

interceptor_browser_get_cookie

Get one cookie by cookie_id (value is capped to keep output bounded)

interceptor_browser_list_storage_keys

localStorage/sessionStorage key listing with value previews

interceptor_browser_get_storage_value

Get one storage value by item_id

interceptor_browser_list_network_fields

Header field listing from proxy-captured traffic since the browser was launched

interceptor_browser_get_network_field

Get one full header field value by field_id

interceptor_browser_evaluate

Run a JS file in the page (file body wrapped as (__args) => { ... }); returns the result. Runs in the isolated utility world

interceptor_browser_inject_init_script

Inject a JS file as page.addInitScript — runs before every page script on the next navigation. Injected into the isolated utility world

interceptor_browser_add_script_tag

Append a <script> to the current page. DOM-visible — avoid for stealth. Use for benign payloads where main-world execution + page visibility is intentional

Network data is sourced from the MITM proxy rather than a browser-side protocol — the proxy sees every wire request regardless of what the browser reported.

Stealth tradeoffs for JS injection:

Method

Cloakbrowser

evaluate

Safe (isolated utility world) — rate-limit before reCAPTCHA, each call is CDP traffic

inject_init_script

Best for stealth — pre-document, no DOM artifact

add_script_tag

Detectable (DOM node, MutationObserver, CSP)

References: Playwright evaluate, Playwright addInitScript.

Worlds and isolation — what your JS can and can't see

Playwright's evaluate runs in an isolated "utility" world that shares globals with the page's main world. An addInitScript patch to navigator.webdriver is visible to (a) your subsequent evaluate probes AND (b) anti-bot code the site loads. This is the model most "stealth playbooks" assume. Detection vectors are CDP-side (Runtime.evaluate chatter) — cloakbrowser's C++ patches mitigate those.

Practical rules:

Use case

Tool

Read DOM / extract data

interceptor_browser_evaluate

Modify page state, click via JS

interceptor_browser_evaluate (globals are shared with the page)

Spoof navigator / window fingerprints

interceptor_browser_inject_init_script

Load a 3rd-party JS lib into the page

interceptor_browser_add_script_tag (page sees it — usually OK if intentional)

Sessions (14)

Persistent, queryable on-disk capture for long runs and post-crash analysis.

Tool

Description

proxy_session_start

Start persistent session capture (preview or full-body mode)

proxy_session_stop

Stop and finalize the active persistent session

proxy_session_status

Runtime status for persistence (active session, bytes, disk cap errors)

proxy_import_har

Import a HAR file from disk into a new persisted session

proxy_list_sessions

List recorded sessions from disk

proxy_get_session

Get manifest/details for one session

proxy_query_session

Indexed query over recorded exchanges

proxy_search_session_bodies

Search request/response bodies stored in a persistent session, with context snippets

proxy_get_session_handshakes

Report JA3/JA4/JA3S handshake metadata availability for session entries

proxy_get_session_exchange

Fetch one exchange from a session (with optional full bodies)

proxy_replay_session

Dry-run or execute replay of selected session requests

proxy_export_har

Export full session or filtered subset to HAR

proxy_delete_session

Delete a stored session

proxy_session_recover

Rebuild indexes from records after unclean shutdown

proxy_get_session_exchange and proxy_export_har automatically decompress response bodies (gzip, deflate, brotli) based on the stored content-encoding header. The returned responseBodyText and responseBodyBase64 contain the decompressed content. Raw compressed bytes are preserved on disk for exact replay fidelity.

Note on proxy_start with persistence_enabled: true: this auto-creates a session. A subsequent proxy_session_start() call returns the existing active session instead of failing — no need to stop and re-start.

Humanizer — Playwright Input (5)

Human-like browser input via Playwright page.mouse / page.keyboard. Works with browser_* targets from interceptor_browser_launch. Cloakbrowser's own humanize patches apply when enabled at launch.

Tool

Description

humanizer_move

Move the mouse to x,y through the backend Playwright page

humanizer_click

Click a locator (selector / role + name / text / label) or raw x,y. Auto-waits for visible + enabled + stable + in-view before clicking

humanizer_type

Type text into the focused element via page.keyboard.type; optional delay_ms passes through to Playwright

humanizer_scroll

Dispatch one Playwright page.mouse.wheel event

humanizer_idle

Simulate idle behavior with mouse micro-jitter and occasional micro-scrolls to defeat idle detection

All tools require target_id from a prior interceptor_browser_launch. The engine maintains tracked mouse position across calls for coordinate-based move/click/idle behavior.

Behavioral details:

  • Mouse: humanizer_move calls page.mouse.move; locator clicks call Playwright locators and raw-coordinate clicks call page.mouse.click

  • Typing: humanizer_type calls page.keyboard.type(text, { delay }) when delay_ms is provided; no WPM, typo, or bigram model is implemented in proxy-mcp

  • Scrolling: humanizer_scroll sends one wheel event with the requested delta

  • Idle: Periodic micro-jitter (±3px subtle / ±8px normal) and random micro-scrolls at configurable intensity

Resources

URI

Description

proxy://status

Proxy running state and config

proxy://ca-cert

CA certificate PEM

proxy://traffic/summary

Traffic stats: method/status breakdown, top hostnames, TLS fingerprint stats

proxy://interceptors

All interceptor metadata and activation status

proxy://sessions

Persistent session catalog + runtime persistence status

proxy://browser/primary

Current page URL/title for the most recently launched browser instance

proxy://browser/targets

Current page state for all active browser instances

proxy://sessions/{session_id}/summary

Aggregate stats for one recorded session (resource template)

proxy://sessions/{session_id}/timeline

Time-bucketed request/error timeline (resource template)

proxy://sessions/{session_id}/findings

Top errors/slow exchanges/host error rates (resource template)

Usage Example

# Start the proxy
proxy_start

# Optional: start persistent session recording
proxy_session_start --capture_profile full --session_name "reverse-run-1"

# Use interceptors to auto-configure targets:
interceptor_browser_launch                    # Launch stealth browser with proxy
interceptor_spawn --command curl --args '["https://example.com"]'  # Spawn proxied process

# Set upstream proxy for geolocation
proxy_set_upstream --proxy_url socks5://user:pass@geo-proxy:1080

# Mock an API response
proxy_mock_response --url_pattern "/api/v1/config" --status 200 --body '{"feature": true}'

# Inject auth headers (set value to null to delete a header)
proxy_inject_headers --hostname "api.example.com" --headers '{"Authorization": "Bearer token123"}'

# View captured traffic
proxy_list_traffic --hostname_filter "api.example.com"
proxy_search_traffic --query "error"

# TLS fingerprinting
proxy_list_tls_fingerprints                # See unique JA3/JA4 fingerprints
proxy_set_ja3_spoof --ja3 "771,4865-..."   # Spoof outgoing JA3 (for non-browser clients)
proxy_set_fingerprint_spoof --preset chrome_136 --host_patterns '["example.com"]'  # Full fingerprint spoof
proxy_list_fingerprint_presets                  # Available browser presets

# Human-like browser interaction (browser_* target)
humanizer_move   --target_id "browser_<id>" --x 500 --y 300
humanizer_click  --target_id "browser_<id>" --selector "#login-button"
humanizer_click  --target_id "browser_<id>" --role "button" --name "Sign in"
humanizer_type   --target_id "browser_<id>" --text "user@example.com" --delay_ms 45
humanizer_scroll --target_id "browser_<id>" --delta_y 300
humanizer_idle   --target_id "browser_<id>" --duration_ms 2000 --intensity subtle

# Run / inject JS in the page
interceptor_browser_evaluate           --target_id "browser_<id>" --script_path /tmp/probe.js
interceptor_browser_inject_init_script --target_id "browser_<id>" --script_path /tmp/hook.js   # applies on next navigation
interceptor_browser_add_script_tag     --target_id "browser_<id>" --script_path /tmp/lib.js    # DOM-visible — avoid for stealth

# Query/export recorded session
proxy_list_sessions
proxy_query_session --session_id SESSION_ID --hostname_contains "api.example.com"
proxy_export_har --session_id SESSION_ID

Architecture

  • State: ProxyManager singleton manages mockttp server, rules, traffic

  • Rule rebuild: Rules must be set before mockttp start(), so rule changes trigger stop/recreate/restart cycle

  • Traffic capture: on('request') + on('response') events, correlated by request ID

  • Ring buffer: 1000 entries max, body previews capped at 4KB

  • TLS capture: Client JA3/JA4 from mockttp socket metadata; server JA3S via tls.connect monkey-patch

  • TLS spoofing: impit (native Rust TLS/HTTP2 impersonation via rustls); in-process, no container needed

  • Interceptors: Managed by InterceptorManager, each type registers independently

  • Browser: cloakbrowser (stealth Chromium, ~200 MB binary auto-downloaded on first launch) driven via Playwright BrowserContext / Page

  • Humanizer: Singleton engine using Playwright's page.mouse / page.keyboard, plus local mouse-position tracking for idle jitter

Testing

npm test              # All tests (unit + integration)
npm run test:unit     # Unit tests only
npm run test:integration  # Integration tests
npm run test:e2e      # E2E fingerprint tests (requires cloakbrowser + internet)

Credits

Core Libraries

Project

Role

mockttp

MITM proxy engine, rule system, CA generation

impit

Native TLS/HTTP2 fingerprint impersonation (Rust via NAPI-RS)

cloakbrowser

Stealth-patched Chromium with source-level C++ fingerprint patches

playwright-core

Browser automation API driving cloakbrowser

@modelcontextprotocol/sdk

MCP server framework

Available Tools

72 tools
humanizer_clickA

Click an element. Pass one of: selector (CSS/XPath), role + optional name, text, label, or raw x+y coords as fallback. Locator-based calls auto-wait for visible.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoX coordinate fallback when no locator is given
yNoY coordinate fallback when no locator is given
nameNoAccessible name; used with role (e.g. 'Sign in')
roleNoARIA role (e.g. 'button', 'link', 'textbox')
textNoVisible text to match (e.g. 'Accept cookies')
labelNoForm-field label text (e.g. 'Email address')
buttonNoMouse button (default: left)left
selectorNoCSS or XPath selector (e.g. 'button.submit', '//button[@id="go"]')
target_idYesTarget ID from interceptor_browser_launch
timeout_msNoMax ms to wait for locator to be visible + actionable (default: 15000)
click_countNoNumber of clicks (default: 1, use 2 for double-click)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden, and it adds a genuinely useful trait: locator-based calls auto-wait for visibility while coordinate calls are a fallback. It doesn't describe timeout failure behavior or the 'humanized' nature implied by the name, but it does disclose the most important runtime distinction for an agent to invoke it correctly.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action, and every clause contributes information about target selection or waiting behavior. There is no duplication of schema fields or filler.

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

Completeness4/5

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

For an 11-parameter tool with no output schema, the combination of the description and the fully documented schema is sufficient to invoke the tool: target_id, timeout, button, click_count, and locator options are all described. The main remaining gap is non-critical behavioral detail (failure/return behavior), so it is complete rather than exhaustive.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real grouping semantics beyond the field descriptions: 'pass one of' establishes mutual exclusivity, 'role + optional name' defines a compound locator, and 'raw x+y coords as fallback' states precedence. This makes the parameter surface easier to reason about than the flat schema alone.

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

Purpose5/5

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

The description names a concrete action and object ('Click an element') and enumerates the accepted targeting strategies. That verb+resource statement is enough to tell it apart from sibling humanizer_type/move/scroll tools, and it is not a tautology.

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

Usage Guidelines4/5

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

The intended use is explicit: when a click is required, pass one of the listed locator forms or fall back to coordinates. It doesn't name sibling alternatives or exclusion cases, but the action is unambiguous and the locator-selection guidance is practical, meeting the 'clear context, no exclusions' bar.

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

humanizer_idleA

Simulate idle behavior with mouse micro-jitter and occasional micro-scrolls. Keeps the page 'alive' to avoid idle detection by bot-detection scripts.

ParametersJSON Schema
NameRequiredDescriptionDefault
intensityNoIdle intensity: 'subtle' (±3px jitter) or 'normal' (±8px jitter, more scrolls)subtle
target_idYesTarget ID from interceptor_browser_launch
duration_msYesHow long to simulate idle behavior in ms

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are present, so the description carries the transparency burden. It discloses the synthetic nature ('simulate'), the exact behaviors (micro-jitter, occasional micro-scrolls), and the intended effect (avoiding idle detection). It could add caveats about visible cursor movement or detection limits, but the core behavior is clear.

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

Conciseness5/5

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

Two short sentences with no wasted words. The first sentence front-loads the action and mechanism; the second gives the purpose. It is appropriately sized for the tool's complexity.

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

Completeness4/5

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

For a simple simulation tool, the description plus fully described schema is enough to select and invoke it correctly. The only minor gap is that with no output schema, it does not state whether the call blocks for duration_ms or returns immediately, but that is unlikely to block correct usage.

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

Parameters3/5

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

Schema coverage is 100% and each parameter already has a useful description, including the intensity enum's exact jitter ranges. The tool description adds no parameter-level meaning beyond restating the general behavior, so the baseline score applies.

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

Purpose5/5

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

The description states a specific verb and resource: simulate idle behavior, with concrete mechanisms (mouse micro-jitter and occasional micro-scrolls). This clearly separates it from sibling tools like humanizer_move or humanizer_scroll by framing the actions as idle-simulation rather than deliberate interaction.

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

Usage Guidelines4/5

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

The description gives an explicit context for use: keep the page 'alive' to avoid idle detection by bot-detection scripts. It does not, however, name alternatives or state when not to use it, so it stops short of full routing guidance.

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

humanizer_moveB

Move mouse to target coordinates via the backend Playwright page.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesDestination X coordinate
yYesDestination Y coordinate
target_idYesTarget ID from interceptor_browser_launch

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the movement happens 'via the backend Playwright page' but does not say whether the movement is humanized/animated, whether it blocks until complete, or what happens on invalid coordinates or a missing browser target.

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

Conciseness5/5

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

A single sentence with no filler; the action, object, and destination are all front-loaded. Every word contributes meaningfully.

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

Completeness3/5

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

For a straightforward pointer-move tool, the description plus fully documented schema is minimally viable. However, it leaves implicit the coordinate space (viewport vs page), the need for a previously launched browser, and any return/error behavior, which would be useful given there is no output schema or annotations.

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

Parameters3/5

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

Schema description coverage is 100%, so x, y, and target_id are already well documented. The description's 'target coordinates' phrase adds no new parameter detail beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('move') with a clear object ('mouse') and destination ('target coordinates'), making the action unambiguous. It is easily distinguishable from siblings like humanizer_click, humanizer_type, and humanizer_scroll, which involve different UI interactions.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives such as humanizer_click, which likely also involves mouse movement before clicking. Prerequisites, such as requiring an active Playwright page from interceptor_browser_launch, are not mentioned beyond the schema's target_id reference.

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

humanizer_scrollA

Dispatch a wheel event. Raw page.mouse.wheel — single event, not multi-step.

ParametersJSON Schema
NameRequiredDescriptionDefault
delta_xNoHorizontal scroll delta in pixels (default: 0)
delta_yYesVertical scroll delta in pixels (positive = scroll down)
target_idYesTarget ID from interceptor_browser_launch

TDQS

A3.6/5.0
Behavior4/5

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

No annotations are present, so the description carries the disclosure burden, and it does disclose the key behavior: exactly one raw wheel event is dispatched, not a smooth multi-step scroll. It is honest about the primitive nature and does not oversell humanization.

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

Conciseness5/5

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

Two short clauses with no filler; the core action is front-loaded and the 'raw ... single event' qualifier earns its place by setting expectations. It is appropriately sized for the tool's simplicity.

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

Completeness4/5

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

For a low-complexity event dispatcher with fully documented parameters, the description covers the essential context: what it sends, and that it is not a multi-step humanized sequence. It doesn't spell out return/error behavior, but that is minor at this complexity.

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

Parameters3/5

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

Schema coverage is 100%, with delta_x, delta_y, and target_id all described in the schema, so the description need not add parameter detail. The description itself adds no parameter-specific meaning beyond calling it a wheel event.

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

Purpose4/5

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

It states exactly what it does with a specific verb and resource ('Dispatch a wheel event') and adds that it is the raw page.mouse.wheel primitive rather than a multi-step action. This distinguishes it from the humanizer_move sibling, though it does not name the sibling explicitly.

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

Usage Guidelines2/5

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

There is no explicit guidance about when to use this tool instead of alternatives; 'single event, not multi-step' implies a contrast with higher-level scrolling but never names humanizer_move or states selection conditions. An agent is left to infer usage from the name and sibling list.

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

humanizer_typeB

Type text into the focused element via page.keyboard.type.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to type
delay_msNoOptional Playwright delay per character in ms.
target_idYesTarget ID from interceptor_browser_launch

TDQS

B3.3/5.0
Behavior3/5

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

The description adds a useful behavioral detail: typing targets whatever element currently has focus and uses keyboard events via page.keyboard.type. Since no annotations are provided, this helps, but it does not state what happens when nothing is focused, whether existing text is replaced or appended, or what side effects typing may cause.

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

Conciseness5/5

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

A single sentence that front-loads the action and no filler. It is minimal but every word contributes to the core behavior.

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

Completeness3/5

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

The tool is simple and the schema covers all parameters, so the basic call contract is visible. However, with no output schema and no annotations, the description omits return/error behavior and failure conditions such as missing focus or inactive browser.

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

Parameters3/5

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

Schema description coverage is 100%, so text, delay_ms, and target_id are already documented in the schema. The description adds only the 'focused element' context and no further parameter-level semantics.

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

Purpose4/5

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

States a concrete action ('type') and a resource ('focused element') plus the Playwright mechanism ('page.keyboard.type'). The verb distinguishes it from sibling humanizer_click/scroll/idle, though it doesn't explicitly name an alternative tool.

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

Usage Guidelines2/5

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

No guidance on when to choose this tool over humanizer_click/evaluate or how to prepare the element to receive focus. Use is only implied by the tool name and sibling set, not explicitly described.

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

interceptor_browser_add_script_tagA

Append a element to the current page (Playwright page.addScriptTag). WARNING: injects a real DOM node visible to MutationObserver, document.scripts, and CSP. Avoid for anti-bot stealth — prefer interceptor_browser_inject_init_script (no DOM node) when you need page-scope execution.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_idYesTarget ID from interceptor_browser_launch
script_pathYesAbsolute path to a .js file to inject as <script>.
script_typeNo`classic` (default) or `module`.classic

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so well. It explicitly warns that the tool injects a real DOM node visible to MutationObserver, document.scripts, and CSP, which is a critical behavioral trait an agent cannot infer from the schema.

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

Conciseness5/5

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

The description is compact and front-loaded: the core action and Playwright mapping come first, followed by a high-value warning and sibling alternative. Every sentence earns its place with no redundant wording.

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

Completeness5/5

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

For a relatively simple injection tool with fully documented parameters, the description provides the key behavioral warning and the main alternative. The absence of an output schema is acceptable here since the critical operational concern is the DOM-visible side effect, which is covered.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters and the enum values. The description adds little parameter-specific detail beyond identifying the underlying Playwright behavior, so the baseline 3 is appropriate.

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

Purpose5/5

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

The description begins with a specific verb and resource: 'Append a <script> element to the current page,' and grounds it in Playwright's page.addScriptTag. It clearly identifies what the tool does and distinguishes it from the sibling interceptor_browser_inject_init_script by highlighting the DOM-node difference.

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

Usage Guidelines5/5

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

It gives explicit usage guidance: avoid for anti-bot stealth and prefer interceptor_browser_inject_init_script when page-scope execution is needed. This directly routes an agent to the correct sibling tool and states the condition that should trigger the alternative.

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

interceptor_browser_closeA

Close a browser instance launched by interceptor_browser_launch.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_idYesTarget ID from interceptor_browser_launch

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, and the description only states the action without revealing side effects or permissions. For a close operation, this is adequate but could be more transparent.

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

Conciseness5/5

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

The description is a single concise sentence with no unnecessary words, effectively communicating the tool's purpose.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description provides all necessary context: what it closes and how to identify the instance.

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

Parameters4/5

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

The schema has 100% coverage, and the description adds context by specifying that target_id comes from interceptor_browser_launch, going beyond just repeating the schema.

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

Purpose5/5

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

The description clearly states the verb 'close' and the resource 'browser instance launched by interceptor_browser_launch'. It distinguishes from sibling tools by referencing the specific launch tool.

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

Usage Guidelines4/5

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

Implicitly indicates it is used to close a browser opened by interceptor_browser_launch, but no explicit alternatives or when-not-to-use guidance is provided.

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

interceptor_browser_evaluateA

Execute a JS file in the page and return its result. Source is loaded from script_path (absolute path). The file body is wrapped in an arrow function receiving __args (so the file may return value; directly and access the optional args object). Runs in Playwright's isolated utility world (different window, same DOM). Reads are invisible to the page; mutations to shared prototypes/globals are observable by page scripts. For main-world patching use interceptor_browser_inject_init_script. Rate-limit before reCAPTCHA: each call emits CDP traffic that behavioural scorers count.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoOptional JSON-serialisable args object, available inside the script as `__args`.
target_idYesTarget ID from interceptor_browser_launch
script_pathYesAbsolute path to a .js file. File body is the function body; use `return` to send a value back.
value_max_charsNoMax characters of the JSON-stringified return value (default: 20000, max 16000000).

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the isolated utility world, that reads are invisible, that mutations to shared prototypes/globals are observable, and that each call emits CDP traffic counted by behavioral scorers. It does not cover error handling or return format explicitly, but the schema hints at JSON-stringified results. This is above-average transparency.

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

Conciseness4/5

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

The description is concise and front-loaded with the core purpose. Each sentence adds value: execution, wrapping, isolation, visibility, alternative, and rate-limit caution. It could be slightly trimmed, but nothing is wasteful.

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

Completeness4/5

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

Given the complexity of browser JS execution and the lack of an output schema, the description covers key aspects: isolation, return mechanism, and an important usage constraint (rate limiting). It doesn't detail error scenarios or exact return formatting, but the schema for value_max_chars implies JSON-stringified output. Overall, sufficient for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful context beyond the schema: the file body is wrapped in an arrow function and can return a value via `return`, and args are available as `__args`. These details explain how the parameters are used, exceeding the schema's basic descriptions.

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

Purpose5/5

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

The description states a specific verb+resource ('Execute a JS file in the page and return its result') and distinguishes itself from the main-world patching tool by naming interceptor_browser_inject_init_script as the alternative for that use case. It clearly identifies what the tool does and what it is not for.

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

Usage Guidelines4/5

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

The description explicitly directs the agent to use interceptor_browser_inject_init_script for main-world patching, which implies this tool is for the isolated utility world. It also warns about rate-limiting before reCAPTCHA. It doesn't cover all alternative tools (like add_script_tag), but the most relevant distinction is made.

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

interceptor_browser_get_network_fieldB

Get one full header field value from proxy-captured traffic by field_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
field_idYesfield_id from interceptor_browser_list_network_fields
target_idYesTarget ID from interceptor_browser_launch
value_max_charsNoMax characters for returned value (default: 20000)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only states 'Get', implying a read operation, but does not mention whether it requires prior capture, what happens if the field_id is invalid, or any side effects. The default max_chars is in schema but not described. Missing critical 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.

Conciseness5/5

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

A single sentence that is concise and front-loaded with the core purpose. No redundant or irrelevant information. Every word contributes to understanding the tool's function.

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

Completeness3/5

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

Without an output schema, the description should clarify the return format (e.g., string value, JSON). It mentions 'full header field value' but doesn't specify if it's the raw header line or just the value. Error scenarios are not covered. Adequate for a simple getter but could be more thorough given the tool's role in a complex proxy workflow.

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

Parameters3/5

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

The input schema has 100% coverage with descriptions for all parameters. The description adds no additional meaning beyond the schema; it does not explain what constitutes a 'full header field value' or how to interpret the returned value. Baseline 3 is appropriate as the schema already defines the parameters.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'one full header field value from proxy-captured traffic', with the method 'by field_id'. This distinguishes it from sibling tools like interceptor_browser_list_network_fields which lists fields, and other tools that capture traffic. The purpose is specific and actionable.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., when to get a single field vs. listing all fields). No mention of prerequisites, such as having captured traffic first, or when not to use this tool. The description is purely declarative without usage context.

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

interceptor_browser_get_storage_valueB

Get one localStorage/sessionStorage value by item_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
originNoOptional origin override (must match current page origin)
item_idYesitem_id from interceptor_browser_list_storage_keys
target_idYesTarget ID from interceptor_browser_launch
storage_typeYesStorage type
value_max_charsNoMax characters for returned value (default: 20000)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided. The description does not disclose behavioral traits such as whether the tool returns null for missing keys, errors on invalid storage type, or has side effects. With no annotations, the description carries the full burden but offers minimal transparency.

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

Conciseness5/5

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

A single, front-loaded sentence that conveys the core action efficiently. No redundant words or filler. Every word contributes meaning.

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

Completeness3/5

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

Given 5 parameters and no output schema, the description is minimally adequate. It explains the resource and key parameter but omits return format, error conditions, or handling of optional parameters like origin or value_max_chars. Overall, functional but leaves room for exploration.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema; it only reiterates the item_id parameter. No parameter format, constraints, or dependencies are clarified beyond what the schema provides.

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

Purpose5/5

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

The description clearly specifies the verb 'Get', the resource 'one localStorage/sessionStorage value', and the key parameter 'item_id'. It distinguishes this tool from siblings like 'interceptor_browser_list_storage_keys' which lists keys rather than values.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., when needing all keys or bulk values). No mention of prerequisites like a launched browser or storage context. The description lacks contextual cues for appropriate invocation.

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

interceptor_browser_inject_init_scriptA

Inject a JS file as an init script (Playwright page.addInitScript). Runs before any page script on every subsequent navigation/frame. Runs in the isolated utility world — no DOM artifact; patches to shared prototypes/globals reach the page main world via utility-world sharing. Does NOT affect the currently loaded document — navigate again to apply.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_idYesTarget ID from interceptor_browser_launch
script_pathYesAbsolute path to a .js file to inject before page scripts on every load.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does it well. It discloses the isolated utility world execution, the absence of a DOM artifact, that prototype/global patches reach the main world via utility-world sharing, and the critical caveat that the current document is unaffected. This is rich, non-obvious behavior beyond what the schema reveals.

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

Conciseness5/5

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

Three dense sentences with zero filler. The core action and timing are front-loaded, followed by the isolated-world behavior and the navigation caveat. Every sentence earns its place.

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

Completeness5/5

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

For a two-parameter action with no output schema, the description provides everything an agent needs to invoke it correctly: target_id and script_path are covered by the schema, and the description explains when it runs, where it runs, and the key limitation about the current document. No critical operational detail is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description reinforces the meaning of script_path by explaining when it executes, but it does not add parameter-specific semantics beyond what the schema already states. target_id is adequately documented in the schema as coming from interceptor_browser_launch.

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

Purpose5/5

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

The description states a specific verb and resource ('Inject a JS file as an init script') and clarifies the exact execution timing. It effectively distinguishes this tool from one-off injection/evaluation tools like interceptor_browser_add_script_tag and interceptor_browser_evaluate by emphasizing it runs on every subsequent navigation/frame and not the current document.

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

Usage Guidelines4/5

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

The description clearly conveys when to use the tool: when a script must run before page scripts on every future navigation/frame. It also gives an exclusion by noting it does not affect the currently loaded document and instructs to navigate again to apply. It stops short of explicitly naming sibling alternatives, but the context is clear.

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

interceptor_browser_launchA

Launch cloakbrowser (stealth Chromium) with proxy flags and SPKI certificate trust. Built-in source-level fingerprint patches + humanize mode. Driven via Playwright — locator-based tools replace CDP.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to open (default: about:blank)
localeNoBCP 47 locale, e.g. 'en-US'
headlessNoRun headless (default: false)
humanizeNoEnable cloakbrowser's humanize mode (default: true)
timezoneNoIANA timezone, e.g. 'America/New_York'
human_presetNoHuman behavior presetdefault
viewport_widthNoViewport width in px
viewport_heightNoViewport height in px

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses behavioral aspects: launching with proxy and SPKI trust, source-level fingerprint patches, humanize mode, and Playwright driving. However, it lacks details on side effects, prerequisites (e.g., proxy setup), error conditions, or return value.

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

Conciseness5/5

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

The description is exceptionally concise: two sentences (40 words) with no filler. Every word adds value: first sentence states purpose and key features, second clarifies technical driver and subsequent tool usage. It is front-loaded and efficient.

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

Completeness3/5

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

Given the lack of output schema and annotations, the description should cover return values and setup dependencies. It mentions Playwright and locator tools but does not specify what the tool returns (e.g., browser session ID) or prerequisites (e.g., proxy configuration). This is adequate but has clear gaps.

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

Parameters3/5

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

Input schema has 100% description coverage for all 8 parameters, each with defaults and one enum. The description does not add additional meaning beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool 'launch[es] cloakbrowser (stealth Chromium)' with specific features (proxy flags, SPKI trust, fingerprint patches, humanize mode). It differentiates from sibling tools like interceptor_camoufox_launch by specifying the browser type and mentioning Playwright-driven locator tools.

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

Usage Guidelines3/5

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

The description implies the tool is for launching a stealth browser for tasks requiring fingerprint protection and humanization, but it does not explicitly state when to use this tool versus alternatives (e.g., interceptor_camoufox_launch) or mention scenarios where it should not be used.

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

interceptor_browser_list_consoleB

List console messages buffered since the browser was launched. Types: log, info, warning, error, debug, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax messages to return (default: 50, max: 500)
typesNoFilter by console message types
offsetNoOffset into results (default: 0)
target_idYesTarget ID from interceptor_browser_launch
text_filterNoFilter by text substring

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided. Description mentions 'buffered since browser launch' but does not disclose whether reading clears the buffer, any side effects, or other behavioral traits beyond listing. Full burden falls on description; significant gaps.

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

Conciseness5/5

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

Single sentence plus type enumeration. Extremely concise and front-loaded with purpose. Every piece of information earns its place.

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

Completeness3/5

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

Adequate for basic understanding of purpose. Missing return format details (no output schema) and no explanation of pagination or filtering behavior beyond parameter descriptions. Could be more complete given five parameters.

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

Parameters3/5

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

Schema coverage is 100%, and the description adds minor value by listing example console types (log, info, warning, debug) beyond schema. However, no additional semantics are provided for other parameters beyond schema descriptions.

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

Purpose4/5

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

Description clearly states it lists console messages buffered since browser launch and enumerates types. Name and description align well. Among siblings like interceptor_browser_list_cookies, it distinguishes by resource (console) but does not explicitly differentiate usage.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. No mention of prerequisites (e.g., needing a launched browser), when not to use, or relationship to other list tools. Usage context is only implied.

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

interceptor_browser_list_cookiesB

List cookies from the browser context with pagination and truncated value previews.

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNoReturn full cookie values instead of previews (capped at 20000 chars). Overrides value_max_chars.
sortNoSort order (default: name)name
limitNoMax cookies to return (default: 50, max: 500)
offsetNoOffset into results (default: 0)
target_idYesTarget ID from interceptor_browser_launch
url_filterNoFilter cookies by domain/path substring
name_filterNoFilter cookies by name substring
domain_filterNoFilter cookies by domain substring
value_max_charsNoMax characters for cookie value previews (default: 256)

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries full burden but only discloses pagination and truncated value previews. It does not explicitly state that the operation is read-only or that it requires an active browser context, though the target_id parameter implies the latter.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the core action and key features. It contains no unnecessary words, making it highly concise.

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

Completeness2/5

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

Given 9 parameters and no output schema, the description is insufficient. It omits details about filtering parameters (url_filter, domain_filter, name_filter), sorting, and any information about the response format. The agent would need to infer too much from the schema alone.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds context by mentioning pagination and truncated value previews, which relates to parameters like offset, limit, value_max_chars, and full. This provides meaning beyond the schema's individual parameter descriptions.

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

Purpose4/5

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

The description clearly states it lists cookies from the browser context, which is a specific verb+resource. It also mentions pagination and truncated value previews, but does not explicitly distinguish from the sibling tool 'interceptor_browser_get_cookie' which retrieves a single cookie.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'interceptor_browser_get_cookie' or other filtering tools. The description does not mention when to use this for bulk listing versus single retrieval.

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

interceptor_browser_list_network_fieldsA

List request/response header fields from proxy-captured traffic since the browser was launched, with pagination and truncation.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax fields to return (default: 50, max: 500)
offsetNoOffset into results (default: 0)
directionNoHeader direction (default: both)both
target_idYesTarget ID from interceptor_browser_launch
url_filterNoFilter by URL substring
method_filterNoFilter by HTTP method
status_filterNoFilter by response status code
hostname_filterNoFilter by hostname substring
value_max_charsNoMax characters for header value previews (default: 256)
header_name_filterNoFilter by header name substring

TDQS

A3.7/5.0
Behavior4/5

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

No annotations exist, so the description carries full burden. It discloses read-only behavior (listing), pagination, and value truncation. It does not mention side effects, but since it's a list operation, none are expected. The description is transparent about scope and features.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the core purpose and key features. No redundant words or information.

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

Completeness3/5

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

Given the tool's complexity (10 parameters, multiple filters, no output schema), the description provides a high-level summary but omits details like filter combination logic, result ordering, and behavior when no results match. Schema covers parameter semantics, but behavioral completeness could be improved.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are already well-documented. The description adds context about pagination and truncation, but does not significantly enhance understanding beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it lists request/response header fields from proxy-captured traffic since browser launch, with pagination and truncation. This distinguishes it from sibling tools like interceptor_browser_get_network_field and proxy_list_traffic.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like interceptor_browser_get_network_field or proxy_list_traffic. It does not mention prerequisites or exclusion criteria, leaving the agent to infer 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.

interceptor_browser_list_storage_keysA

List localStorage/sessionStorage keys for the current origin with pagination and truncated value previews.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax items to return (default: 50, max: 500)
offsetNoOffset into results (default: 0)
originNoOptional origin override (must match current page origin)
target_idYesTarget ID from interceptor_browser_launch
key_filterNoFilter by key substring
storage_typeYesStorage type
value_max_charsNoMax characters for storage value previews (default: 256)

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so the description must bear the full burden. It discloses read-only behavior and the truncation feature but omits potential errors, permission requirements, or performance impact. Schema already covers parameters.

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

Conciseness5/5

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

Single sentence that efficiently conveys the core purpose and key features. No redundant or extraneous information.

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

Completeness4/5

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

Given 7 parameters and no output schema, the description explains the main goal (list keys with truncated values) but does not specify the output format (e.g., list of key-value objects). However, the schema and inference from similar tools fill most gaps.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds a summary of pagination and truncation, but does not provide additional meaning beyond what the schema already describes for each parameter.

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

Purpose5/5

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

The description explicitly states the action (list), resource (localStorage/sessionStorage keys), context (current origin), and notable features (pagination, truncated value previews). It clearly distinguishes from sibling tools that get a single value or list other storage types.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like interceptor_browser_get_storage_value. The schema implies a prerequisite (target_id from interceptor_browser_launch) but the description does not mention it.

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

interceptor_browser_navigateB

Navigate the browser target's page via Playwright and optionally wait for matching host traffic to be captured by the proxy.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesDestination URL
target_idYesTarget ID from interceptor_browser_launch
timeout_msNoMax wait for navigation and proxy capture (default: 5000ms)
wait_untilNoPlaywright wait condition (default: domcontentloaded)domcontentloaded
poll_interval_msNoPolling interval while waiting for proxy capture (default: 200ms)
wait_for_proxy_captureNoWait for matching proxy traffic after navigate (default: true)

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the burden but only mentions navigation and optional proxy wait. It omits details on error handling, side effects, or idempotency.

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

Conciseness4/5

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

Single sentence, concise and front-loaded with the main action, but could benefit from slight restructuring to highlight key information.

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

Completeness2/5

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

Given 6 parameters and no output schema, the description lacks context on behavior, error handling, and parameter interplay, leaving gaps for the agent.

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

Parameters3/5

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

All parameters have schema descriptions (100% coverage), so the description adds little extra meaning beyond restating the tool's purpose.

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

Purpose5/5

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

Description clearly states the action (navigate) and resource (browser target's page) using Playwright, and distinguishes from sibling browser tools like close or screenshot.

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

Usage Guidelines3/5

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

Description implies usage context (after browser launch, using target_id) but does not explicitly state when to use vs. other tools or conditions that may affect behavior.

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

interceptor_browser_screenshotA

Take a screenshot of the bound page. Saves to file_path if provided; otherwise reports byte count without embedding the image.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoImage format (default: png)png
qualityNoJPEG quality 0-100 (ignored for png)
file_pathNoOptional path to save screenshot
full_pageNoCapture the full scrollable page
target_idYesTarget ID from interceptor_browser_launch

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses the key behavioral trait: saving to file or reporting byte count. However, it does not mention if the tool waits for page load, timeouts, or whether it is destructive (though screenshots are generally read-only). The term 'bound page' is somewhat ambiguous.

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

Conciseness5/5

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

Two sentences with no wasted words. The most important information (action, conditional behavior) is front-loaded. Every sentence adds value.

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

Completeness3/5

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

Given no output schema, the description covers the return behavior (byte count) but lacks details on error handling, page load waiting, or differentiation from sibling interceptor_browser_snapshot. The complexity is low, so it is adequate but not thorough.

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

Parameters3/5

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

Input schema has 100% coverage for all 5 parameters, so baseline is 3. The description adds value by explaining the conditional role of file_path, but does not elaborate on format, full_page, or quality beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the action ('take a screenshot'), resource ('bound page'), and conditional behavior (file path or byte count). It is specific and distinct from sibling tools like interceptor_browser_navigate or interceptor_browser_evaluate.

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

Usage Guidelines3/5

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

The description implies usage after launching a page but does not provide explicit guidance on when to use this tool versus similar alternatives like interceptor_browser_snapshot. No when-not-to-use or exclusion criteria are given.

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

interceptor_browser_snapshotA

Take an ARIA accessibility snapshot of the bound page (YAML-formatted role tree). Great for LLM-driven page understanding without parsing HTML.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoSnapshot mode — 'ai' adds ref attributes for locator reusedefault
selectorNoRoot selector to snapshot (default: 'body')body
target_idYesTarget ID from interceptor_browser_launch

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It describes the output format but does not mention any side effects, permissions required, rate limits, or potential destructiveness. The description implies a read-only operation but lacks explicit statements.

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

Conciseness5/5

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

The description is a single sentence that conveys the core purpose and value proposition without any fluff. It is appropriately sized and front-loaded with the key action and output format.

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

Completeness3/5

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

Given the low complexity (3 simple parameters, no nested objects, no output schema) and full parameter descriptions in the schema, the description is fairly complete for the tool's purpose. However, it lacks behavioral transparency and usage guidelines, leaving some gaps for an agent to fully understand context.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all parameters (target_id, selector, mode). The description adds no additional meaning beyond the schema; it only mentions the output format. Hence baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool takes an 'ARIA accessibility snapshot' and outputs a 'YAML-formatted role tree'. It distinguishes from sibling tools like interceptor_browser_screenshot (visual) and interceptor_browser_evaluate (JS execution) by specifying the accessibility focus and format.

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

Usage Guidelines3/5

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

The description provides usage context ('Great for LLM-driven page understanding without parsing HTML') but does not explicitly state when to use or when not to use this tool compared to alternatives. No exclusions or alternative recommendations are given.

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

interceptor_deactivate_allA

Kill ALL active interceptors across all types. Emergency cleanup — stops all browser instances, kills spawned processes, cleans Docker.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description fully carries the behavioral disclosure burden. It clearly states this is a destructive, broad-stroke operation: stopping all browser instances, killing spawned processes, and cleaning Docker. This is more transparent than most tool descriptions.

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

Conciseness5/5

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

The description is two sentences long, front-loads the critical action and scope, and contains no filler. Every phrase adds relevant information about what the tool does and its impact.

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

Completeness4/5

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

For a zero-parameter destructive cleanup tool, the description adequately covers what will be affected and why it should be used. It does not explain what happens after execution (e.g., whether state is recoverable), but that is a minor gap given the explicit emergency-cleanup framing.

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

Parameters4/5

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

The tool has zero parameters and the schema is empty, so there are no parameter semantics to clarify. The baseline of 4 applies because no parameter documentation is needed; the description's focus on scope and effects is sufficient.

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

Purpose5/5

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

The description states a specific verb ('Kill'), a clearly bounded resource ('ALL active interceptors across all types'), and the broader scope ('browser instances, spawned processes, Docker'). This distinguishes it from sibling tools like interceptor_kill and interceptor_status, which target individual interceptors or query state.

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

Usage Guidelines4/5

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

It identifies an explicit use case: 'Emergency cleanup', which signals the appropriate trigger for invoking this tool. It does not explicitly name alternatives or state when not to use it, but the context of an emergency cleanup is clear enough to guide selection.

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

interceptor_docker_attachA

Inject proxy env vars and CA certificate into a Docker container. Two modes: 'exec' (inject into running container) or 'restart' (stop + restart with proxy config).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoInjection mode: 'exec' (live injection) or 'restart' (stop + restart)exec
container_idYesDocker container ID or name

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosure. It correctly indicates the tool modifies the container (injecting env vars and CA cert), and the 'restart' mode stops and restarts the container. However, it doesn't mention potential side effects, permissions required, or success/failure signals, which would enhance transparency.

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

Conciseness5/5

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

The description is concise: two sentences that front-load the core purpose and then detail the two modes. No redundant or unnecessary text.

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

Completeness2/5

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

Despite having no output schema, the description does not mention return values, error conditions, or what happens after injection (e.g., container remains running?). This lack of contextual information for a mutation tool is a notable gap, reducing completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters. The description adds minimal value beyond schema: it rephrases the enum descriptions but does not explain what values to use or constraints. Baseline of 3 is appropriate as schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the tool's purpose: injecting proxy env vars and CA certificate into a Docker container. It distinguishes two modes ('exec' vs 'restart'), making it easy to understand the core operation and differentiate from siblings like interceptor_docker_detach.

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

Usage Guidelines3/5

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

The description explains the two modes and their basic behavior, but lacks guidance on when to choose one over the other or prerequisites (e.g., container must be running). No explicit 'when not to use' or alternative tools are mentioned, leaving some ambiguity.

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

interceptor_docker_detachA

Remove proxy configuration from a Docker container and clean up injected files.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_idYesTarget ID from interceptor_docker_attach

TDQS

A3.8/5.0
Behavior3/5

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

No annotations, so description carries burden. It discloses the removal and cleanup actions, but doesn't specify side effects, permissions, or prerequisites.

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

Conciseness5/5

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

Single sentence, no unnecessary words, front-loaded with action.

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

Completeness4/5

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

Given low complexity (one parameter, no output schema), the description is sufficient for understanding purpose and parameter origin. Minor omission: specifics of proxy configuration or files cleaned.

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

Parameters3/5

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

Schema coverage is 100% with description 'Target ID from interceptor_docker_attach'. Description does not add further meaning beyond the schema.

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

Purpose5/5

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

Description clearly states the tool removes proxy configuration and cleans up injected files from a Docker container, distinguishing it from sibling interceptor_docker_attach which presumably adds such configuration.

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

Usage Guidelines3/5

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

No explicit guidance on when to use or alternatives. Implies use after attach, but no exclusions or context provided.

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

interceptor_killA

Kill a spawned process by target ID. Also retrieves final stdout/stderr output.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_idYesTarget ID from interceptor_spawn

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so description bears full responsibility. It discloses the key behavioral trait of retrieving final stdout/stderr output, which goes beyond a simple kill. However, it does not mention error handling or what happens if the target ID is invalid.

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

Conciseness5/5

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

Two short, front-loaded sentences with no extraneous words. The first sentence states the primary action, the second adds important context. Excellent brevity.

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

Completeness4/5

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

Given the simplicity of the tool (one parameter, no output schema), the description covers the main functionality adequately. It mentions output retrieval. Minor gaps include no mention of return format or behavior on invalid target ID, but overall sufficient.

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

Parameters3/5

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

Schema coverage is 100% and the parameter 'target_id' already has a clear description. The description adds no further semantic value beyond restating 'by target ID.' Baseline score of 3 is appropriate.

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

Purpose5/5

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

Description clearly specifies the action: 'Kill a spawned process by target ID.' It also adds a side effect of retrieving final stdout/stderr. This distinguishes it from sibling tools like interceptor_spawn (creates) and interceptor_list (lists).

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

Usage Guidelines4/5

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

The description implies usage for terminating a process and retrieving its output. It references the target ID from interceptor_spawn, but does not explicitly state when not to use it or suggest alternatives. Still, the context is clear enough for an agent.

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

interceptor_listA

List all interceptors with their availability and active targets. Shows the Browser, Terminal and Docker interceptors.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It states it lists availability and active targets, which implies a read-only operation, but it does not explicitly confirm it is non-destructive or disclose any potential side effects, permissions, or output details. For a simple list tool, this is adequate but not thorough.

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

Conciseness5/5

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

Two concise sentences with no redundancy. The key information (lists all interceptors, shows availability and targets, names the interceptor types) is front-loaded. Every word earns its place.

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

Completeness4/5

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

For a zero-parameter listing tool with no output schema, the description is fairly complete: it names the tool's action, the scope (all interceptors), and the data shown. It could explicitly state the return format or confirm it is read-only, but given the simplicity, the gap is minor.

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

Parameters4/5

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

The tool has zero parameters, and the schema coverage is 100% (empty properties). The description adds value by specifying what will be listed (availability, active targets, and interceptor types), which compensates for the absence of parameter details. Since there are no parameters, the baseline is 4, and the description meets it.

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

Purpose4/5

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

The description clearly states the verb 'List', the resource 'all interceptors', and specifies what it shows (availability and active targets). It also names the specific interceptors (Browser, Terminal, Docker), which helps distinguish it from sibling tools like interceptor_status or interceptor_deactivate_all. However, it does not explicitly contrast with a close sibling, so it misses the top score.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of 'use for an overview' or 'instead of interceptor_status'. The description only explains what it does, not when to select it over other interceptor-related tools.

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

interceptor_spawnA

Spawn a command with proxy env vars pre-configured (HTTP_PROXY, HTTPS_PROXY, SSL_CERT_FILE, NODE_EXTRA_CA_CERTS, CURL_CA_BUNDLE, and 15+ more). Traffic automatically routes through the MITM proxy.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory (default: current)
envNoAdditional env vars to set
argsNoCommand arguments
commandYesCommand to run (e.g., 'curl', 'node', 'python')

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses that traffic routes through MITM proxy, but lacks details on command execution behavior (e.g., synchronous vs asynchronous, output handling) and required proxy state.

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

Conciseness5/5

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

Two sentences, no fluff. First sentence front-loads the core purpose; second adds key behavioral context. Highly efficient.

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

Completeness3/5

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

Given 4 parameters and no output schema, description covers the basic purpose and one behavioral aspect, but omits critical details like return value, error handling, and dependency on proxy being active. Adequate but incomplete.

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

Parameters4/5

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

Input schema provides full coverage for all parameters. Description adds value by listing specific env variables (HTTP_PROXY, HTTPS_PROXY, etc.) and indicating there are more, enhancing parameter understanding beyond schema.

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

Purpose5/5

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

Description clearly states it spawns a command with proxy env vars pre-configured. It distinguishes itself from sibling tools by focusing on running arbitrary commands with proxy settings, unlike browser or Android specific tools.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance. It implies usage for running commands through the proxy, but does not mention alternatives or prerequisites like ensuring the proxy is running.

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

interceptor_statusB

Get detailed status of a specific interceptor, including all active targets and their details.

ParametersJSON Schema
NameRequiredDescriptionDefault
interceptor_idYesInterceptor ID (e.g., 'browser', 'terminal', 'docker')

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses some return behavior ('including all active targets and their details'), which is genuinely useful. However, it does not address what happens for an unknown/inactive interceptor_id, whether the operation is read-only in practice, or any error/edge cases, so an agent cannot predict failure modes.

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

Conciseness5/5

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

One front-loaded sentence with zero filler. 'Get detailed status' leads immediately, and the 'including...' clause adds valuable return-content context without bloating the description.

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

Completeness4/5

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

For a simple one-parameter read-style tool with no output schema, the description covers the essentials: what it does and roughly what it returns. Minor gaps remain – behavior on invalid IDs, prerequisites such as the interceptor being active, and a richer description of the 'details' returned – but the core information an agent needs to invoke it correctly is present.

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

Parameters3/5

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

Schema description coverage is 100% – the single parameter interceptor_id is already documented with type and concrete examples ('browser', 'terminal', 'docker'). The tool description adds little beyond the schema, only reinforcing the 'specific interceptor' notion. Since the schema does the heavy lifting, the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb+resource ('Get detailed status of a specific interceptor') and clarifies scope via 'specific' and 'including all active targets and their details.' This distinguishes it from sibling tools like interceptor_list, but the differentiation is implicit rather than explicit – it never names an alternative tool, so an agent must infer the boundary from tool names.

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

Usage Guidelines2/5

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

No usage guidance is provided. The description does not say when to use this tool versus interceptor_list, interceptor_spawn, or the interceptor_browser_* actions, nor does it state any prerequisites (e.g., the interceptor must be active or spawned first). Usage context is only implied by the word 'specific.'

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

proxy_add_ruleB

Add an interception rule with a matcher and handler. Rules are evaluated by priority (ascending), first match wins.

ParametersJSON Schema
NameRequiredDescriptionDefault
handlerYesWhat to do with matched requests
matcherYesConditions to match requests
priorityNoPriority (lower = higher priority, default: 100)
descriptionYesHuman-readable description of this rule

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It mentions evaluation order (priority ascending, first match wins) which is useful. However, it does not discuss side effects, limits, or idempotency, which would be expected for a creation tool.

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

Conciseness4/5

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

The description is brief (two sentences) and front-loaded with the main action. However, it could be structured more clearly, perhaps listing the required components separately. Still, it is not verbose.

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

Completeness2/5

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

The tool has complex nested parameters and no output schema. The description is minimal and does not explain what the tool returns (e.g., rule ID) or how it handles duplicate descriptions or priority conflicts. More context is needed for an agent to use it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond the schema; it just mentions 'matcher and handler' which are already defined in detail in the schema.

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

Purpose5/5

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

The description clearly states the action (add), the resource (interception rule), and its components (matcher and handler). It also mentions evaluation order (priority ascending, first match wins), distinguishing it from sibling tools like proxy_update_rule or proxy_remove_rule.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. For example, it does not say to use proxy_update_rule for modifying existing rules or proxy_test_rule_match for testing. The description only states what the tool does, not when it is appropriate.

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

proxy_check_fingerprint_runtimeA

Check fingerprint spoofing backend readiness without sending traffic.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must fully convey behavioral traits. It states the tool checks readiness without sending traffic, indicating safety, but it omits details such as whether the check is idempotent, what 'readiness' entails, any required preconditions, or possible side effects. This is insufficient for a mutation-related backend feature.

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

Conciseness5/5

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

A single, front-loaded sentence that effectively communicates the tool's core function. No extraneous words; every part earns its place.

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

Completeness3/5

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

Given the tool has no parameters, no output schema, and no annotations, the description is minimal. It states the action but does not explain what 'readiness' means or how the result is structured. For a simple check tool, this is adequate but could be more helpful by clarifying the outcome.

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

Parameters4/5

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

The input schema has no parameters (0 params, 100% coverage). Per the baseline rule, a score of 4 is appropriate because the description adds no extra parameter information but does not need to compensate for schema gaps. The description could have explained the concept of 'fingerprint runtime' but is not required to.

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

Purpose5/5

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

The description clearly specifies the verb 'check', the resource 'fingerprint spoofing backend readiness', and adds the distinguishing detail 'without sending traffic'. This differentiates it from sibling tools like proxy_set_fingerprint_spoof or proxy_list_fingerprint_presets, which have different purposes.

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

Usage Guidelines3/5

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

The phrase 'without sending traffic' implies a non-disruptive read operation, but no explicit guidance is given on when to use this tool versus alternatives like proxy_set_fingerprint_spoof. It doesn't specify prerequisites or expected context, leaving the agent to infer usage.

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

proxy_clear_ja3_spoofB

Disable fingerprint spoofing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations present, the description carries the full burden of behavioral disclosure. It merely says 'disable' but does not explain side effects, reversibility, state changes, or whether it affects other proxy settings. This lack of detail is insufficient for a tool that modifies proxy behavior.

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

Conciseness4/5

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

The description is a single short sentence with no filler, making it very concise. However, it lacks any structure beyond that, such as separation of concerns or additional helpful context.

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

Completeness3/5

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

Given the tool has no parameters and no output schema, the description is adequate for a simple toggle action, but it does not address potential side effects or the broader context within the proxy toolset. It misses opportunities to explain what fingerprint spoofing is or how to revert the action.

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

Parameters4/5

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

There are no parameters (0 params, 100% schema coverage), so the description does not need to add parameter details. According to the rubric, 0 params yields a baseline score of 4.

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

Purpose5/5

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

The description 'Disable fingerprint spoofing' clearly states the action (disable) and the resource (fingerprint spoofing). The name includes 'ja3_spoof', which is a type of fingerprint, making the purpose very specific and distinguishable from sibling tools like proxy_set_ja3_spoof.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus its siblings, such as proxy_set_ja3_spoof or proxy_check_fingerprint_runtime. The description does not mention prerequisites, alternatives, or contextual triggers for disabling spoofing.

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

proxy_clear_trafficA

Clear all captured traffic from the buffer.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

Minimal disclosure beyond the verb 'clear', which implies destruction but lacks details on side effects, reversibility, or impact on other tool states. No annotations to supplement.

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

Conciseness5/5

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

Extremely concise single sentence that communicates the core function with no waste.

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

Completeness4/5

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

For a zero-parameter tool, the description is adequate, though it lacks behavioral nuance. Could mention that traffic is permanently cleared, but not necessary for basic understanding.

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

Parameters4/5

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

No parameters exist, so the description does not need to add parameter semantics. Baseline score of 4 is appropriate.

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

Purpose5/5

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

The description specifies a clear action ('clear') and resource ('captured traffic from the buffer'), distinguishing it from sibling tools like proxy_list_traffic or proxy_export_har.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Does not mention prerequisites, side effects, or when not to use it.

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

proxy_clear_upstreamA

Remove the global upstream proxy. Traffic will go directly to target servers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided. Description states effect (traffic goes directly) but no side effects or prerequisites. Adequate for a simple clear operation.

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

Conciseness5/5

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

Two concise sentences, front-loaded with action. No wasted words.

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

Completeness3/5

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

Minimal but covers primary action. Lacks mention of return value, error conditions, or relationship to proxy_set_upstream. Adequate for simple tool.

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

Parameters3/5

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

No parameters; schema coverage 100%. Description adds no parameter info, which is acceptable as no parameters exist.

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

Purpose5/5

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

Description uses clear verb 'Remove' and specifies 'global upstream proxy', distinguishing it from siblings like proxy_set_upstream and proxy_remove_host_upstream.

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

Usage Guidelines3/5

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

Implies usage when removing global upstream proxy, but no explicit guidance on when to use vs alternatives like proxy_remove_host_upstream.

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

proxy_delete_sessionA

Delete a recorded session from disk.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession ID

TDQS

A3.5/5.0
Behavior3/5

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

States deletion from disk, implying permanence, but lacks details about behavior if session is active, whether it's safe to call while proxy is running, or any side effects. No annotations to supplement, so description carries burden but is incomplete.

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

Conciseness5/5

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

Single sentence with no redundant or extraneous information. Efficiently communicates core action and resource.

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

Completeness3/5

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

While simple, the description omits preconditions (e.g., session must be stopped) and postconditions (e.g., session data cannot be recovered). For a destructive operation, more context would help an agent avoid errors. Output schema not present, so description could provide more return value context.

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

Parameters3/5

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

Input schema has 100% description coverage with 'Session ID' for the single parameter. The tool description adds no additional meaning beyond what the schema already provides, so baseline score of 3 applies.

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

Purpose5/5

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

Specific verb 'Delete' and resource 'recorded session from disk' clearly indicates purpose. Distinguishes from sibling tools like proxy_get_session, proxy_list_sessions, and proxy_session_start which perform different operations.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like proxy_session_stop (which stops but doesn't delete) or proxy_session_start (which creates). Does not mention prerequisites (e.g., session must be inactive) or that deletion is irreversible.

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

proxy_disable_ruleA

Disable an interception rule without removing it.

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_idYesRule ID to disable

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It correctly notes that the rule is not removed, implying nondestructive behavior. However, it does not specify side effects, reversibility, or whether the action affects active sessions. Basic transparency is present but could be richer.

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

Conciseness5/5

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

The description is a single, focused sentence that conveys the essential action without extraneous words. It is well-structured and front-loaded.

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

Completeness4/5

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

Given the low complexity, single parameter, and no output schema, the description covers the core functionality. However, it could benefit from slightly more context (e.g., relation to enable/remove) but is sufficient for the tool's simplicity.

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

Parameters3/5

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

Schema coverage is 100% with one parameter (rule_id) adequately described. The description adds no additional meaning beyond the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the verb 'disable' and the resource 'interception rule', and adds specificity 'without removing it' which distinguishes it from proxy_remove_rule. Sibling tools like proxy_enable_rule and proxy_remove_rule further differentiate the action.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives like proxy_remove_rule or proxy_enable_rule. While the context of sibling tools implies usage scenarios, the description itself lacks guidance on exclusions or prerequisites.

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

proxy_enable_ruleA

Enable a disabled interception rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_idYesRule ID to enable

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states the basic action without disclosing behavioral traits (e.g., reversibility, idempotence, what happens if already enabled). This is minimal disclosure.

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

Conciseness5/5

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

The description is a single sentence with no superfluous words, achieving maximum conciseness while conveying the core purpose.

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

Completeness3/5

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

For a simple one-parameter tool, the description is adequate but lacks contextual completeness. It does not mention that the rule must be disabled first, nor does it hint at the relationship with proxy_disable_rule.

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

Parameters3/5

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

The single parameter (rule_id) is already described in the input schema with 100% coverage. The description adds no additional meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the action 'enable' and the resource 'a disabled interception rule', making the tool's purpose immediately obvious. It distinguishes well from siblings like proxy_disable_rule and proxy_update_rule.

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

Usage Guidelines3/5

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

The description implies usage (enable a rule that is disabled) but provides no explicit context about when to use this tool versus alternatives. No mention of prerequisites or scenarios.

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

proxy_enable_server_tls_captureA

Toggle server-side JA3S capture. When enabled, outgoing TLS connections are intercepted to extract the server's negotiated TLS parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault
enabledYestrue to enable, false to disable

TDQS

A4/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It explains the effect (intercept outgoing TLS, extract negotiated parameters) but does not disclose potential side effects like performance impact or how captured data is stored/retrieved.

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

Conciseness5/5

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

Two concise sentences that front-load the action and then describe the effect. No unnecessary words; every sentence is informative.

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

Completeness4/5

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

For a simple toggle tool with one parameter, the description is nearly complete. It explains what capture does but could mention that extracted data is accessible via other proxy tools (e.g., proxy_get_tls_fingerprints). Minor gap.

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

Parameters3/5

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

Schema coverage is 100% with a well-described boolean parameter. The description adds the concept of 'toggling' but no additional meaning beyond what the schema already provides. Baseline score of 3 applies.

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

Purpose5/5

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

The description uses specific verb 'Toggle' and resource 'server-side JA3S capture', clearly distinguishing it from sibling tools like proxy_set_ja3_spoof. It states exactly what the tool does.

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

Usage Guidelines4/5

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

The description implies usage context (enable to intercept TLS connections) but does not explicitly state when not to use it or mention alternatives. It provides clear context for when to toggle capture.

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

proxy_export_harC

Export a recorded session (or filtered subset) to HAR format.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoasc
textNo
to_tsNo
methodNo
from_tsNo
session_idYesSession ID
output_fileNoOutput HAR file path
status_codeNo
url_containsNo
include_bodiesNoInclude body text when available
hostname_containsNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose important behavioral traits like whether it overwrites existing files, file size limits, or side effects on the session. This leaves the agent uninformed about critical behavior.

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

Conciseness3/5

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

The description is concise at one sentence, but it is too terse given the complexity of the tool. It could benefit from a brief additional sentence on the filtering capability.

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

Completeness2/5

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

Given the high parameter count and lack of output schema, the description is incomplete. It does not explain optional filters, output format details, or prerequisite steps, leaving gaps for the agent.

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

Parameters1/5

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

With schema description coverage at only 27%, the description should compensate but merely mentions 'filtered subset' without explaining any of the 11 parameters. It adds no value beyond what the minimal schema provides.

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

Purpose4/5

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

The description clearly states the tool exports a recorded session to HAR format. However, it does not explicitly differentiate from sibling tools like proxy_import_har beyond the direction (export vs import).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as proxy_import_har or proxy_list_traffic. The description lacks context for decision-making.

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

proxy_get_ca_certA

Get the CA certificate PEM and SPKI fingerprint for installing on the target device.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoWhat to return: 'pem', 'fingerprint', or 'both'both

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It describes a read operation ('Get'), which is transparent. But no mention of permissions, side effects, or error conditions, leaving some gaps.

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

Conciseness5/5

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

Single sentence, no redundant words, front-loaded with action and resource. Perfectly concise.

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

Completeness5/5

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

For a simple one-parameter getter with no output schema, the description is complete: it tells what, why, and the format options are clear from schema. Siblings indicate it fits into proxy setup workflow.

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

Parameters3/5

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

Schema covers format parameter 100% with enum and default. Description does not add extra meaning beyond 'PEM and SPKI fingerprint'. Baseline 3 applies due to high schema coverage.

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

Purpose5/5

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

The description clearly states the specific verb 'get' and the resource 'CA certificate PEM and SPKI fingerprint', with clear purpose 'for installing on the target device'. This distinguishes it from sibling tools like proxy_set_* or proxy_start.

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

Usage Guidelines4/5

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

The phrase 'for installing on the target device' provides usage context, indicating this is a setup step. However, no explicit guidance on when to use vs alternatives (e.g., proxy_check_fingerprint_runtime) is given.

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

proxy_get_exchangeB

Get full details of a captured HTTP exchange including headers and body previews.

ParametersJSON Schema
NameRequiredDescriptionDefault
exchange_idYesExchange ID from proxy_list_traffic

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It only states the tool returns full details with headers and body previews, but omits behavioral traits like whether the tool is read-only, any size limits, or response truncation.

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

Conciseness5/5

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

Single sentence, 12 words, front-loaded with key information. Every word contributes to the purpose.

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

Completeness3/5

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

Adequate for a simple retrieval tool with one parameter, but lacks details on what 'full details' entails (e.g., whether body previews are truncated) and no output schema is provided. Gaps remain.

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

Parameters3/5

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

Schema coverage is 100% with the parameter exchange_id described as 'Exchange ID from proxy_list_traffic'. Description adds 'full details' but no additional meaning beyond schema; baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the verb 'get', the resource 'details of a captured HTTP exchange', and what is included ('headers and body previews'), distinguishing it from sibling tools like proxy_list_traffic.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. The prerequisite (exchange_id from proxy_list_traffic) is implied by the schema but not stated, and no when-not-to-use or exclusion criteria are provided.

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

proxy_get_sessionB

Get manifest/details for a specific recorded session.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession ID

TDQS

B3.2/5.0
Behavior2/5

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

Since no annotations are available, the description bears full responsibility for behavioral disclosure. It mentions a read operation ('Get') but provides no details about side effects, authentication requirements, rate limits, or other behavioral traits.

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

Conciseness4/5

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

The description is a single, concise sentence with no filler. However, it could be slightly expanded to include usage hints without becoming verbose.

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

Completeness3/5

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

The tool is simple (one parameter, no output schema), and the description adequately conveys its purpose. However, given the absence of an output schema, some indication of what the response contains would improve completeness.

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

Parameters3/5

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

The input schema includes one parameter (session_id) with full description coverage (100%). The tool description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves manifest or details for a specific recorded session, using a specific verb and resource. It distinguishes itself from siblings like proxy_list_sessions (which lists sessions) and proxy_get_session_exchange (which gets individual exchanges).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as proxy_get_exchange or proxy_get_session_handshakes. The description does not specify context, prerequisites, or exclusions.

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

proxy_get_session_exchangeB

Get one exchange from a recorded session by seq or exchange ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
seqNoSequence number in session
session_idYesSession ID
exchange_idNoOriginal exchange ID
include_bodyNoInclude persisted full body data when available

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavioral traits, but it only states 'get one exchange'. It does not indicate whether the operation is read-only (likely), what happens if the exchange is not found, or any side effects. The description adds no behavioral context beyond the schema.

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

Conciseness5/5

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

The description is a single, well-structured sentence of 10 words that conveys the core purpose efficiently. It contains no unnecessary information and is front-loaded with the action and resource.

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

Completeness3/5

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

Given the tool has 4 parameters, no output schema, and no annotations, the description is minimally adequate. It explains the basic retrieval function but lacks context on what an 'exchange' is, how sessions work, or typical use cases. With full schema coverage, it meets the minimum but leaves gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema; it merely restates that identification is by seq or exchange ID, which is already evident from the parameter descriptions. No extra constraints or relationships are provided.

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

Purpose5/5

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

The description clearly states the tool retrieves one exchange from a recorded session, specifying the identification methods (by seq or exchange ID). This verb+resource combination is specific and distinguishes it from sibling tools like proxy_get_exchange which likely operates without session context.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or exclusions. The description merely states what it does, leaving the agent to infer usage from the tool name alone.

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

proxy_get_session_handshakesC

Summarize TLS handshake/fingerprint availability (JA3/JA4/JA3S) for session exchanges.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNodesc
limitNo
offsetNo
session_idYesSession ID
url_containsNoFilter by URL substring
hostname_containsNoFilter by hostname substring

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It does not disclose read-only nature, side effects, authentication needs, rate limits, or return format. The word 'summarize' hints at non-destructive behavior, but no details are given.

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

Conciseness4/5

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

The description is a single concise sentence that front-loads the primary purpose. No wasted words, but it could be slightly more structured with additional details.

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

Completeness2/5

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

For a tool with 6 parameters, no output schema, and no annotations, the description is insufficient. It does not describe the output format or the meaning of the summary, leaving agents underinformed.

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

Parameters2/5

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

Schema description coverage is 50%, leaving limit, offset, and sort undocumented. The description adds no parameter information, failing to compensate for the gap. It does not explain how these parameters affect the summary.

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

Purpose4/5

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

The description clearly states the tool summarizes TLS handshake/fingerprint availability (JA3/JA4/JA3S) for session exchanges, which distinguishes it from sibling tools like proxy_get_tls_fingerprints and proxy_get_session_exchange. However, it does not define 'availability' precisely.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description lacks prerequisites, use-case context, or exclusions. With no annotations, the description must provide this, but it does not.

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

proxy_get_tls_configA

Get current TLS capture and spoofing configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It correctly indicates a read operation ('Get'), implying no side effects. No contradiction, but could add details like return format or prerequisites.

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

Conciseness5/5

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

A single, front-loaded sentence that efficiently communicates the tool's purpose. No unnecessary words.

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

Completeness4/5

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

For a simple getter tool with no parameters and no output schema, the description is adequate. It could be enriched with details about the returned configuration, but it is sufficient for an AI agent to understand the basic function.

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

Parameters4/5

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

The tool has no parameters, so the schema fully covers them. The description adds no additional semantic detail, but none is needed. Baseline 4 is appropriate.

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

Purpose5/5

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

The description clearly states the tool gets the current TLS capture and spoofing configuration, with a specific verb and resource. It distinguishes from sibling tools that modify or manage proxies and TLS settings.

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

Usage Guidelines4/5

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

The description makes the purpose clear (retrieving config), providing implicit guidance for usage. However, it lacks explicit when-to-use or when-not-to-use instructions, and does not mention alternatives.

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

proxy_get_tls_fingerprintsA

Get JA3/JA4 client fingerprints and JA3S server fingerprint for a specific captured exchange.

ParametersJSON Schema
NameRequiredDescriptionDefault
exchange_idYesExchange ID from proxy_list_traffic

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. However, it only states the function (get fingerprints) without mentioning any side effects, required permissions, or output details. For a read-only operation, this is minimal but could be improved by noting that it is non-destructive.

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

Conciseness5/5

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

The description is a single, concise sentence that conveys the core functionality without any unnecessary words. It is front-loaded with the action and resource, making it easy to parse quickly.

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

Completeness3/5

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

Given the tool's simplicity (one parameter, no output schema), the description is reasonably complete. However, it lacks information about the return format (e.g., object with fingerprint strings) or prerequisites (e.g., the exchange must exist). An output schema or brief note on output structure would improve completeness.

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

Parameters3/5

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

The input schema has 100% description coverage, with the parameter 'exchange_id' already described as 'Exchange ID from proxy_list_traffic'. The tool description does not add any further semantic meaning to the parameter beyond what the schema provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly identifies the tool's purpose: retrieving JA3, JA4, and JA3S fingerprints for a specific captured exchange. The verb 'Get' and the specific resource types (client and server fingerprints) differentiate it from sibling tools like proxy_list_tls_fingerprints (which lists all fingerprints) and proxy_list_traffic (which lists exchanges).

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

Usage Guidelines3/5

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

The description implies that the tool should be used when you have a specific exchange_id from proxy_list_traffic, but it does not explicitly state when to use it versus alternatives. For example, it could clarify that proxy_list_tls_fingerprints might be used first to get an overview, or that this tool provides details for a single exchange. No exclusion criteria are provided.

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

proxy_import_harA

Import a HAR file from disk into a new persisted session for querying, findings, and replay.

ParametersJSON Schema
NameRequiredDescriptionDefault
strictNoWhen true, abort on first invalid HAR entry; when false, skip invalid entries
har_fileYesPath to HAR file on disk
max_disk_mbNoSession disk cap in MB
storage_dirNoOptional custom session storage directory
session_nameNoOptional name for the imported session

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It lacks disclosure of behavioral traits such as whether existing sessions are overwritten, error handling for malformed HAR files (though 'strict' parameter hints at this in schema), or details about session persistence. For a mutation tool, more behavioral context is needed.

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

Conciseness5/5

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

The description is a single sentence that fronts the action and outcome, containing no unnecessary words. It is concise and structured efficiently.

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

Completeness3/5

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

Given the tool's complexity (5 parameters, no output schema), the description provides the high-level purpose but lacks details about return values (e.g., session ID) and edge cases. It is adequate but not fully comprehensive.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add additional meaning beyond the schema; it does not elaborate on parameter nuances like session naming or storage directory behavior.

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

Purpose5/5

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

The description clearly states the action (import), the resource (HAR file), and the destination (new persisted session). It also indicates the purpose (querying, findings, replay), distinguishing it from sibling tools like proxy_export_har or proxy_list_sessions.

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

Usage Guidelines3/5

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

The description implies usage when a HAR file needs to be imported into a session, but does not provide explicit guidance on when to use this tool versus alternatives, nor when not to use it. No exclusions or alternatives are mentioned.

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

proxy_inject_headersA

Add or overwrite headers on matching traffic. Creates a passthrough rule with header transforms.

ParametersJSON Schema
NameRequiredDescriptionDefault
headersYesHeaders to inject (key-value pairs, set value to null to delete a header)
hostnameNoHostname to match (optional)
priorityNoRule priority (default: 50)
directionNoWhere to inject: request, response, or bothrequest
url_patternNoURL regex pattern to match (optional)

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description must cover behavioral traits. It discloses it's a passthrough rule with header transforms but omits side effects like rule activation timing, overwrite behavior, or permission requirements. Lacks full transparency.

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

Conciseness5/5

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

Two succinct sentences, front-loaded with main purpose, no redundant words. Every sentence adds value.

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

Completeness4/5

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

Given the tool's moderate complexity and high schema coverage, the description captures the essence and differentiates from siblings. Lacks mention of return behavior but no output schema expected. Still sufficiently complete.

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

Parameters3/5

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

Schema coverage is 100%, so schema already documents all parameters. Description adds minimal extra context (e.g., 'passthrough rule'), which warrants a baseline 3. No significant additional explanation beyond schema.

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

Purpose5/5

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

Description clearly states verb 'Add or overwrite headers' and resource 'matching traffic', and specifies it creates a passthrough rule. This distinguishes it from sibling tools like proxy_add_rule or proxy_rewrite_url.

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

Usage Guidelines3/5

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

Description implies usage for header injection on matching traffic but lacks explicit guidance on when to use this vs alternatives like proxy_add_rule with transforms. No when-not-to-use or prerequisites mentioned.

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

proxy_list_fingerprint_presetsA

List available browser fingerprint presets for use with proxy_set_fingerprint_spoof.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only says 'list available', with no mention of side effects, permissions, or state changes. For a read-only listing tool, the absence of any explicit statement about non-destructiveness is a gap.

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

Conciseness5/5

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

The description is a single, clean sentence with no extra words. It front-loads the action and purpose, making it highly efficient.

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

Completeness3/5

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

For a parameterless listing tool with no output schema, the description provides the basic purpose. However, it lacks details about what the output looks like (e.g., list of strings, objects) and any usage context, making it minimally adequate.

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

Parameters4/5

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

The input schema has no parameters, so the baseline is 4. The description does not add further meaning, but since there are no parameters, no additional information is strictly needed.

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

Purpose5/5

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

The description clearly states 'List available browser fingerprint presets', specifying the verb 'list' and the resource 'browser fingerprint presets'. It also indicates the purpose 'for use with proxy_set_fingerprint_spoof', distinguishing it from sibling tools that set or check fingerprints.

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

Usage Guidelines2/5

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

The description only hints at usage with proxy_set_fingerprint_spoof but does not provide explicit guidance on when to use this tool or when to avoid it. No alternatives are mentioned, and with many sibling tools, more context is needed.

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

proxy_list_rulesA

List all interception rules sorted by priority.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It states it lists all rules sorted by priority, implying a read-only operation. While it doesn't explicitly confirm no side effects, the verb 'list' strongly suggests safe behavior.

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

Conciseness5/5

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

The description is a single concise sentence of 7 words that perfectly captures the tool's function with no superfluous information. It is front-loaded and efficient.

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

Completeness5/5

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

Given the tool's low complexity (no parameters, simple list operation), the description is complete. It covers what the tool does and the ordering. No output schema exists, but the behavior is straightforward enough that further detail is unnecessary.

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

Parameters4/5

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

The tool has zero parameters, so the schema coverage is 100%. Per guidelines, baseline for 0 parameters is 4. The description adds no parameter information because none exist.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('interception rules'), and clearly states the ordering by priority. This distinguishes it from sibling tools that add, remove, or modify rules.

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

Usage Guidelines3/5

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

The description implicitly indicates this tool is for reading rules, but does not provide explicit guidance on when to use it versus alternatives (e.g., proxy_get_session for sessions). No when-not-to-use or alternative mentions are given.

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

proxy_list_sessionsA

List recorded sessions in storage.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only states 'list recorded sessions' with no behavioral details such as whether the list includes metadata, supports pagination, or how sessions are ordered. Minimal disclosure beyond the core purpose.

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

Conciseness4/5

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

At six words, the description is highly concise and front-loaded. However, slightly more context about the nature of 'sessions' could improve understanding without bloating the text.

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

Completeness2/5

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

Given the lack of an output schema and the presence of many sibling session-related tools (e.g., 'proxy_list_traffic', 'proxy_get_session'), the description fails to explain what information is returned (e.g., session IDs, timestamps) or how this tool differs from similar listing tools.

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

Parameters4/5

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

There are zero parameters and schema coverage is 100% (empty schema). The description need not add parameter details, and the baseline for no parameters is 4. No param information is required.

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

Purpose5/5

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

The description clearly states the verb 'list' and the resource 'recorded sessions', making the purpose unambiguous. It also distinguishes from sibling tools like 'proxy_get_session' (individual session retrieval) and 'proxy_delete_session' (deletion).

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

Usage Guidelines3/5

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

The description implies listing all sessions, but it does not provide explicit guidance on when to use this tool versus alternatives like 'proxy_query_session' or 'proxy_get_session'. No context about filtering or usage conditions is given.

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

proxy_list_tls_fingerprintsB

List unique client JA3/JA4 fingerprints across captured traffic with occurrence counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax fingerprints to return (default: 20)
hostname_filterNoFilter by hostname substring

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It does not state whether the operation is read-only, if it affects capture state, or what scope of traffic is considered (e.g., current session only). The agent cannot infer safety or side effects.

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

Conciseness5/5

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

The description is a single, concise sentence that is front-loaded with the core purpose. Every word adds value; no unnecessary information.

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

Completeness3/5

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

The description covers the basic functionality adequately for a simple tool with 2 optional parameters and no output schema. However, it lacks context such as read-only nature or that it operates on the current capture session. Sibling tool count is high but not addressed.

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

Parameters3/5

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

Schema coverage is 100% with both parameters described. The description adds no additional parameter semantics beyond the schema, but it does mention 'occurrence counts' in the output, which is helpful. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'list' and the resource 'unique client JA3/JA4 fingerprints' with additional detail 'occurrence counts'. It distinguishes itself from sibling tools like proxy_get_tls_fingerprints (which likely returns specific details) and proxy_list_fingerprint_presets (presets vs captured traffic).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., proxy_get_tls_fingerprints) nor mentions prerequisites like an active capture session. There is no explicit 'when not to use' or context for selection.

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

proxy_list_trafficB

List captured HTTP exchanges with optional filters. Returns paginated results.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax entries to return (default: 50)
offsetNoSkip first N entries (default: 0)
url_filterNoFilter by URL substring
method_filterNoFilter by HTTP method (e.g., GET, POST)
status_filterNoFilter by response status code
hostname_filterNoFilter by hostname substring

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'Returns paginated results,' which is useful context about output behavior. However, it doesn't describe important aspects like whether this is a read-only operation, what permissions are required, rate limits, or what happens if no exchanges are captured. For a tool with no annotation coverage, this leaves significant gaps.

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

Conciseness5/5

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

The description is extremely concise with just two sentences: 'List captured HTTP exchanges with optional filters. Returns paginated results.' Every word earns its place—the first sentence states the core purpose, and the second adds critical behavioral context. It's front-loaded with the main action and wastes no space.

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

Completeness3/5

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

Given the tool's moderate complexity (6 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and pagination behavior but lacks details on error conditions, output format, or integration with sibling tools. Without annotations or output schema, the agent must infer much from the parameter schema alone.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 6 parameters with clear descriptions. The description adds minimal value beyond the schema by mentioning 'optional filters' generically, but doesn't provide additional context about parameter interactions, default behaviors beyond the schema, or usage examples. This meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'List captured HTTP exchanges with optional filters.' This specifies the verb ('List'), resource ('captured HTTP exchanges'), and scope ('with optional filters'). However, it doesn't explicitly differentiate from sibling tools like 'proxy_search_traffic' or 'proxy_get_exchange', which appear related but have different functions.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It mentions 'optional filters' but doesn't clarify when filtering is appropriate or when other tools like 'proxy_search_traffic' might be better suited. There's no mention of prerequisites, dependencies, or typical use cases.

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

proxy_mock_responseC

Return a mock response for matched requests. Creates a mock rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoResponse body
methodNoHTTP method to match (optional)
statusYesResponse status code
hostnameNoHostname to match (optional)
priorityNoRule priority (default: 10, high priority)
url_patternNoURL regex pattern to match (optional)
content_typeNoContent-Type headerapplication/json

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose side effects such as rule activation, overwriting behavior, or lifecycle. Minimal details beyond the basic action.

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

Conciseness4/5

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

Two concise sentences with no waste. Could be slightly more structured (e.g., starting with the main action), but effective overall.

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

Completeness2/5

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

Given the complexity (7 parameters, no output schema, no annotations), the description is too sparse. Missing context about priority, rule matching behavior, and return values.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already well-documented. The description adds no additional semantic value beyond the schema.

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

Purpose4/5

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

The description clearly states it returns a mock response and creates a mock rule. It differentiates from sibling tools like proxy_add_rule, but could be more explicit about what 'mock rule' entails.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like proxy_add_rule or proxy_rewrite_url. The description lacks context for appropriate usage.

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

proxy_query_sessionA

Query indexed session exchanges by metadata (URL, hostname, method, status) with filters and pagination. Does NOT search body content — use proxy_search_session_bodies for that.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNodesc
textNoGeneric text filter
limitNo
to_tsNoUnix ms upper-bound timestamp
methodNoHTTP method filter
offsetNo
from_tsNoUnix ms lower-bound timestamp
session_idYesSession ID
status_codeNoHTTP response status code filter
url_containsNoFilter by URL substring
hostname_containsNoFilter by hostname substring

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool is for querying and does not search body content, but lacks details on authentication, rate limits, or potential side effects. It is adequate but not thorough.

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

Conciseness5/5

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

The description is extremely concise—two sentences with no wasted words. The key purpose is front-loaded, and the critical limitation (no body search) is stated immediately.

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

Completeness3/5

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

The description covers the core purpose and differentiates from a key sibling, but with 11 parameters and no output schema, it omits return value details (e.g., format, pagination metadata) that would help an agent fully understand the tool's behavior.

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

Parameters3/5

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

Schema coverage is high (73%), so the baseline is 3. The description adds grouping of filters (URL, hostname, method, status) but does not provide additional meaning beyond what the schema already describes. Minor added value.

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

Purpose5/5

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

The description clearly states the tool queries session exchanges by metadata with filters and pagination, and explicitly distinguishes from sibling proxy_search_session_bodies by stating it does not search body content. This provides a specific verb and resource, differentiating it from related tools.

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

Usage Guidelines4/5

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

The description explicitly tells the agent when to use this tool vs proxy_search_session_bodies for body content search. However, it does not mention other possible alternatives or when not to use it, though the context is clear.

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

proxy_remove_host_upstreamA

Remove a per-host upstream proxy override.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostnameYesHostname to remove override for

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility. It conveys that the tool performs a removal (destructive), but it does not detail side effects, confirmation prompts, or any dependencies. Minimal transparency beyond core action.

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

Conciseness5/5

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

A single sentence that captures the tool's essence without any wasted words. It is front-loaded with the key action and resource.

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

Completeness5/5

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

For a simple tool with one required parameter and no output schema, the description is complete. It tells the agent exactly what the tool does and what input it needs.

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

Parameters3/5

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

Schema description coverage is 100% (single parameter with description). The tool description adds no additional meaning beyond restating the parameter's purpose. Baseline 3 applies.

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

Purpose5/5

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

The description clearly states the verb 'Remove' and the resource 'per-host upstream proxy override,' making it distinct from siblings like proxy_set_host_upstream (set) and proxy_clear_upstream (clear all).

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives, but the purpose is clear enough that an agent can infer it's for removing a specific host's override. No exclusions or prerequisites are mentioned.

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

proxy_remove_ruleC

Delete an interception rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_idYesRule ID to delete

TDQS

C2.9/5.0
Behavior1/5

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

With no annotations provided, the description carries full burden but only states 'Delete an interception rule.' It does not disclose that deletion is permanent, whether the rule must be disabled first, or any side effects. This is insufficient for an agent to understand the tool's behavior.

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

Conciseness4/5

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

The description is a single sentence, concise, and free of waste. However, it may be too brief to provide complete context, but for conciseness it is nearly optimal.

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

Completeness2/5

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

Given the simple tool with one parameter and no output schema, the description does not mention the result of deletion (e.g., success confirmation, effect on ongoing interceptions). It lacks completeness for an agent to fully understand the tool's behavior.

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

Parameters3/5

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

Schema description coverage is 100% with parameter 'rule_id' described as 'Rule ID to delete'. The tool description adds no additional semantic value; it simply restates the action. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description 'Delete an interception rule' clearly states the verb 'Delete' and the resource 'interception rule'. It distinguishes from siblings like proxy_add_rule, proxy_disable_rule, and proxy_enable_rule by specifying a distinct action.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as proxy_disable_rule. There is no mention of prerequisites, context, or when not to use it.

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

proxy_replay_sessionB

Replay selected requests from a recorded/imported session. Default mode is dry_run for safety.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNodry_run previews replay plan; execute sends the requestsdry_run
sortNodesc
textNoGeneric text filter
limitNo
to_tsNoUnix ms upper-bound timestamp
methodNoHTTP method filter
offsetNo
from_tsNoUnix ms lower-bound timestamp
session_idYesSession ID
timeout_msNoPer-request timeout in milliseconds
status_codeNoResponse status code filter
exchange_idsNoExplicit exchange IDs to replay (overrides query filters)
url_containsNoFilter by URL substring
target_base_urlNoOptional base URL override (keeps original path+query)
hostname_containsNoFilter by hostname substring

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It reveals that dry_run is safe and execute sends requests, but lacks details on permissions, reversibility, or side effects.

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

Conciseness5/5

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

The description is two sentences, front-loaded with core action (replay) and key default (dry_run). No extraneous words.

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

Completeness2/5

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

Despite 15 parameters, the description is very brief. It does not explain what dry_run returns, how filters interact, or expected output format. Lacks completeness for a complex tool.

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

Parameters3/5

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

Schema coverage is 80%, so the baseline is 3. The description adds no extra meaning to parameters beyond what the schema provides.

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

Purpose4/5

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

The description clearly states the action (replay) and resource (requests from a session). It is distinct from sibling tools like proxy_export_har, but does not explicitly differentiate itself.

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

Usage Guidelines3/5

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

The description implies usage with dry_run for safety, but offers no guidance on when to use this tool over alternatives like proxy_query_session or proxy_get_session_exchange.

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

proxy_rewrite_urlB

Rewrite request URLs matching a pattern. Creates a passthrough rule with body match-replace on the URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostnameNoLimit to this hostname
priorityNoRule priority (default: 50)
replace_withYesReplacement string
match_patternYesRegex pattern to match in URLs

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It mentions creating a passthrough rule but omits side effects (e.g., rule priority interaction), permission requirements, or rate limits. The phrase 'body match-replace on the URL' is somewhat ambiguous.

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

Conciseness5/5

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

The description is extremely concise, consisting of two clear sentences with no unnecessary information. Every word contributes to understanding the core function.

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

Completeness3/5

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

Given the absence of an output schema and the simplicity of the tool, the description is minimally adequate. However, it lacks details about return behavior, rule management implications, and edge cases, leaving gaps for a complete understanding.

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

Parameters3/5

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

The input schema has 100% coverage with descriptions for all 4 parameters. The description adds no additional parameter information beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool rewrites request URLs using a pattern, specifying the mechanism ('creates a passthrough rule with body match-replace on the URL') and distinguishes it from sibling tools like proxy_add_rule.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as proxy_add_rule or proxy_mock_response. There is no mention of preferred contexts or exclusion criteria.

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

proxy_search_session_bodiesA

Search inside HTTP request/response bodies stored in a persistent session. Decompresses and searches actual body content — useful for finding specific text, prices, API responses, error messages, etc. in recorded traffic. Returns context snippets around each match (like grep -C).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to search for inside request/response bodies
limitNoMax matching exchanges to return (default: 10, max: 100)
methodNoPre-filter: HTTP method
max_scanNoMax bodies to decompress and search (default: 200, max: 5000)
search_inNoWhich bodies to search (default: both)both
session_idYesSession ID
status_codeNoPre-filter: HTTP status code
url_containsNoPre-filter: URL substring
context_charsNoCharacters of context around each match (default: 120)
case_sensitiveNoCase-sensitive search (default: false)
hostname_containsNoPre-filter: hostname substring
content_type_containsNoPre-filter: response content-type substring (e.g. 'html', 'json')

TDQS

A4.2/5.0
Behavior4/5

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

Without annotations, the description carries full burden. It discloses that the tool decompresses bodies, searches actual content, and returns context snippets like grep -C. This provides sufficient behavioral insight, though it does not cover error handling or performance.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose and brief elaboration. Every sentence adds value without redundancy.

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

Completeness4/5

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

The description explains the core functionality and return format (context snippets). It does not document output schema, but given the complexity of 12 parameters, it covers the essentials well.

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

Parameters3/5

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

Schema description coverage is 100%, with clear parameter descriptions. The tool description adds context (decompression, grep-like output) but does not significantly enhance individual parameter understanding beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool searches inside HTTP request/response bodies stored in a session. It specifies that it decompresses and searches actual body content, and lists use cases like finding text, prices, API responses. This distinguishes it from sibling tools like proxy_search_traffic.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool (searching recorded traffic for specific text) and gives examples. However, it does not explicitly state when not to use it or mention alternatives.

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

proxy_search_trafficA

Full-text search across URLs, headers, and body previews of captured traffic.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 20)
queryYesSearch string

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the search covers URLs, headers, and body previews, implying partial content. However, it omits details like rate limits, result format, or behavior on empty results, which limits transparency.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that conveys the core functionality efficiently. No extraneous information, making it highly concise.

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

Completeness3/5

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

Given the tool's simplicity (2 parameters, no output schema) and the absence of annotations, the description is minimally complete. It identifies what is searched but does not describe return format or pagination, which might be needed for complex use cases.

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

Parameters3/5

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

Schema description coverage is 100% with both parameters having descriptions. The tool's description adds context about searching across specific traffic components, which supplements the schema. However, it does not provide deeper semantics beyond the schema's basic explanations.

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

Purpose5/5

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

The description clearly states the tool performs full-text search across URLs, headers, and body previews of captured traffic. It uses a specific verb and resource, and distinguishes itself from sibling tools like proxy_list_traffic (listing all) and proxy_search_session_bodies (more specific session search).

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like proxy_search_session_bodies or proxy_list_traffic. The description implies it is for general search, but does not mention exclusions or context, leaving the agent without clear direction.

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

proxy_session_recoverA

Rebuild session indexes from records after crash/corruption.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoRecover only this session (default: recover all sessions)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It implies a repair operation but does not disclose potential side effects (e.g., overwriting indexes) or whether it requires specific permissions. The description is adequate but could be more transparent.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that conveys the purpose and context without any wasted words. It is concise and efficient.

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

Completeness4/5

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

For a simple recovery tool with one optional parameter and no output schema, the description provides enough context to understand its purpose and trigger. However, it could briefly explain what 'rebuild session indexes' entails for completeness.

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

Parameters3/5

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

Schema description coverage is 100% as the single parameter 'session_id' is well-documented in the input schema. The tool description does not add additional parameter semantics beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses the specific verb 'Rebuild' with clear resource 'session indexes' and context 'after crash/corruption'. It clearly distinguishes from sibling tools like proxy_session_start and proxy_session_stop, which manage sessions rather than recover their indexes.

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

Usage Guidelines4/5

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

The description explicitly states the trigger condition ('after crash/corruption'), providing clear guidance on when to use. However, it doesn't mention when not to use or alternatives, though the context is sufficiently specific.

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

proxy_session_startB

Start persistent on-disk capture for the current proxy run.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_disk_mbNoSession disk cap in MB
storage_dirNoCustom storage directory
session_nameNoOptional session name
capture_profileNopreview=body previews only, full=full request/response bodiespreview

TDQS

B3/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose behavioral traits like whether it overwrites existing captures, if it requires authentication, or side effects. 'Persistent' is vague.

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

Conciseness3/5

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

The description is a single sentence, which is concise but may be too brief, lacking critical information. It is not verbose, but could be more informative.

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

Completeness2/5

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

Given 4 parameters, no annotations, and no output schema, the description is insufficient. It does not explain what 'persistent' means, how to stop the session, or what the return value is.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds no parameter context beyond schema descriptions, but that is acceptable given full coverage.

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

Purpose5/5

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

The description clearly states the tool starts a persistent on-disk capture for the current proxy run, using a specific verb and resource. It distinguishes from sibling tools like proxy_session_stop and proxy_session_status.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It does not mention prerequisites, when not to use, or that a session must be stopped with proxy_session_stop.

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

proxy_session_statusA

Get current persistent capture runtime status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It adequately implies a read operation ('Get'), but lacks explicit statements about safety, side effects, or requirements (e.g., active session). The simplicity of a zero-parameter status tool makes this acceptable but not exemplary.

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

Conciseness5/5

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

Description is extremely concise at 6 words, single sentence, and front-loaded with the core action. Every word is necessary and no surplus content exists.

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

Completeness4/5

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

Given zero parameters, no output schema, and no annotations, the description is mostly complete. However, the term 'persistent capture' may need clarification for new users, but overall it covers the essential purpose.

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

Parameters4/5

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

No parameters exist in the input schema (100% coverage). According to guidelines, baseline is 4. The description adds no parameter info, but none is needed.

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

Purpose5/5

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

Description clearly states 'Get current persistent capture runtime status' with a specific verb and resource. It distinguishes from siblings like proxy_status and proxy_transparent_status by specifying 'persistent capture runtime', making its purpose unique.

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

Usage Guidelines2/5

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

No usage guidelines are provided. The description does not indicate when to use this tool over alternative status tools, such as proxy_status or proxy_session_status, nor does it mention any prerequisites or context.

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

proxy_session_stopA

Stop persistent on-disk capture and finalize the active session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states stop and finalize but does not disclose side effects (e.g., whether captured data is saved), prerequisites, or destructive nature. This is a significant gap.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the core action.

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

Completeness3/5

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

Given no parameters and no output schema, the description is minimal but adequate for a simple stop command. However, it lacks details on the post-stop state and return value, leaving some uncertainty.

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

Parameters4/5

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

The input schema has zero parameters with 100% schema description coverage, so the description need not add parameter info. The baseline of 4 applies, and no additional detail is required.

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

Purpose5/5

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

The description clearly states the tool stops persistent on-disk capture and finalizes the active session. It uses a specific verb (stop) and resource (proxy session), and it distinguishes from siblings like proxy_session_start and proxy_session_status.

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

Usage Guidelines3/5

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

The description implies usage for stopping a session but provides no explicit guidance on when to use this tool versus alternatives, or any prerequisites. It is adequate but lacks directive context.

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

proxy_set_fingerprint_spoofA

Enable outgoing TLS + HTTP/2 fingerprint spoofing via impit (native TLS impersonation, no Docker required). Supports browser presets that select an impit target (rustls, matching real Chrome/Firefox).

ParametersJSON Schema
NameRequiredDescriptionDefault
presetNoBrowser preset name (e.g. 'chrome_131', 'chrome_136'). Use proxy_list_fingerprint_presets to see available options.
user_agentNoUser-Agent header to use with spoofed requests (overrides preset UA)
host_patternsNoOnly spoof requests to hostnames containing these substrings. Empty = spoof all HTTPS.
disable_redirectNoDisable automatic redirect following
insecure_skip_verifyNoSkip TLS certificate verification

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It mentions native TLS impersonation and no Docker requirement, but does not disclose side effects, whether previous spoofing settings are overwritten, or any other behavioral implications beyond enabling spoofing.

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

Conciseness5/5

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

The description is exceptionally concise at two sentences, with no redundant information. Every phrase adds value, and it is front-loaded with the core functionality.

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

Completeness3/5

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

Given the complexity (5 parameters, no output schema, no annotations) and the presence of many sibling proxy tools, the description provides adequate but not complete context. It does not mention return values, prerequisites (e.g., proxy must be running), or typical use cases, which could aid correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds minimal value beyond the schema, merely restating that browser presets are supported. The schema already explains each parameter adequately, so the description does not enrich parameter understanding.

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

Purpose5/5

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

The description clearly states the tool enables TLS and HTTP/2 fingerprint spoofing via impit, with browser presets. It specifies the resource (fingerprint spoofing) and verb (enable), and distinguishes from siblings like proxy_set_ja3_spoof by mentioning HTTP/2 support.

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

Usage Guidelines3/5

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

The description implies usage for spoofing fingerprints but does not provide explicit when-to-use or when-not-to-use guidance. It references proxy_list_fingerprint_presets in the schema but fails to differentiate from alternative spoofing tools like proxy_set_ja3_spoof or prerequisites such as a running proxy.

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

proxy_set_host_upstreamA

Set a per-host upstream proxy override. Traffic to this hostname will use the specified proxy instead of the global one.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostnameYesHostname to override (e.g., api.example.com)
no_proxyNoHostnames to bypass this proxy
proxy_urlYesUpstream proxy URL for this host. If it has a username but no password, the password is filled in from PROXY_MCP_UPSTREAM_PASSWORD, but only when PROXY_MCP_UPSTREAM_HOST is also set and matches this URL's hostname. The response reports passwordSource: env | url | none.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses the core effect—traffic to the hostname uses the specified proxy instead of the global one—but omits details about persistence, idempotency, precedence over existing overrides, or the revert path.

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

Conciseness5/5

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

Two short sentences front-load the action and effect with no wasted words. The description is efficient and immediately understandable.

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

Completeness3/5

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

As a simple setter, the description captures the essential behavior, but the absence of annotations and output schema leaves gaps: whether an existing override is replaced, whether the setting persists, and how to undo it are not addressed. The no_proxy parameter's behavioral role is also left to inference from the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are already documented in the schema. The description adds only the per-host context for hostname and does not elaborate on no_proxy or proxy_url semantics beyond what the schema provides.

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

Purpose5/5

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

The description uses a specific verb ('Set') and a precise resource ('per-host upstream proxy override'), immediately distinguishing it from global proxy configuration. The second sentence reinforces the scope by contrasting the per-host behavior with the global one.

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

Usage Guidelines4/5

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

The description clearly communicates when to use this tool: when a specific hostname should bypass the global upstream proxy. However, it does not explicitly name sibling alternatives such as proxy_set_upstream or proxy_remove_host_upstream, nor does it provide explicit when-not-to-use criteria.

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

proxy_set_ja3_spoofA

Legacy: enable fingerprint spoofing (deprecated, use proxy_set_fingerprint_spoof with a preset). The ja3 parameter is accepted but ignored — the default Chrome preset is used.

ParametersJSON Schema
NameRequiredDescriptionDefault
ja3YesJA3 fingerprint string (ignored — use proxy_set_fingerprint_spoof with a preset instead)
user_agentNoUser-Agent header to use with spoofed requests
host_patternsNoOnly spoof requests to hostnames containing these substrings. Empty = spoof all HTTPS.

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It reveals that the ja3 parameter is ignored and that the default Chrome preset is used. This is key behavioral info. However, it does not disclose whether the spoofing applies immediately or requires a restart, which would be helpful but not critical for a legacy tool.

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

Conciseness5/5

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

Two sentences, zero waste. Every word earns its place. Front-loaded with 'Legacy' and deprecation, then the key behavioral note.

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

Completeness4/5

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

For a legacy tool with no output schema and clear deprecation, the description covers what it does, what to use instead, and the ignored parameter. It doesn't explain the effect on traffic or session state, but given its deprecated status, this is minimally sufficient.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by noting that the ja3 parameter is ignored and that the default Chrome preset is used, which goes beyond the schema's description ('ignored') by specifying the default behavior.

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

Purpose5/5

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

Clearly states it enables fingerprint spoofing, marks itself as legacy, and directly names the replacement tool. The verb 'enable' and resource 'fingerprint spoofing' are specific, and it distinguishes from the sibling proxy_set_fingerprint_spoof.

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

Usage Guidelines5/5

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

Explicitly says it's deprecated and instructs to use proxy_set_fingerprint_spoof instead. Also clarifies that the ja3 parameter is ignored, so agents know not to rely on it. Provides both when-not and alternative.

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

proxy_set_upstreamB

Set a global upstream proxy for all outgoing traffic. Supports socks4://, socks5://, http://, https://, and pac+http:// URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
no_proxyNoHostnames to bypass the upstream proxy
proxy_urlYesUpstream proxy URL (e.g., socks5://user:pass@host:port). If the URL has a username but no password, and the server has both PROXY_MCP_UPSTREAM_PASSWORD and PROXY_MCP_UPSTREAM_HOST set with the host matching this URL's hostname, the password is filled in from the environment so it need not appear in this call. Otherwise the URL is used as given; the response reports passwordSource: env | url | none.

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral disclosure burden. It says the proxy applies to all outgoing traffic and lists supported schemes, but does not disclose persistence, immediate effect, authentication expectations, or interaction with existing per-host proxy rules.

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

Conciseness5/5

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

One compact, front-loaded sentence states the action, scope, and accepted schemes without filler. Every part contributes to deciding whether and how to invoke the tool.

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

Completeness3/5

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

Together with the rich parameter schema, the description is sufficient to construct a valid call for a global proxy. However, for a mutating tool with no output schema and no annotations, the missing side-effect and alternative-routing context leaves noticeable gaps.

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

Parameters4/5

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

The schema already documents both parameters thoroughly (100% coverage), so the baseline is 3. The description adds value by enumerating the accepted URL schemes (socks4://, socks5://, http://, https://, pac+http://), which goes beyond the schema's single example.

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

Purpose4/5

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

The description clearly states the action (set), the resource (global upstream proxy), and the scope (all outgoing traffic), plus the supported URL schemes. It is specific enough to stand apart from host-specific siblings like proxy_set_host_upstream, though it never explicitly contrasts itself with them.

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

Usage Guidelines3/5

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

The phrase 'global upstream proxy for all outgoing traffic' implies when this tool is appropriate and hints that it is not a per-host setting. However, there is no explicit when-not guidance or mention of alternatives such as proxy_set_host_upstream or proxy_clear_upstream.

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

proxy_startA

Start the HTTPS MITM proxy. Auto-generates a CA certificate. Returns port, URL, cert fingerprint, and setup instructions for the target device.

ParametersJSON Schema
NameRequiredDescriptionDefault
portNoPort to listen on (0 = random available port)
max_disk_mbNoPer-session disk cap in MB (writes are dropped once exceeded)
storage_dirNoCustom session storage directory
session_nameNoOptional name for the session when persistence is enabled
capture_profileNoCapture profile for persisted sessions: preview (body previews) or full (full bodies)preview
persistence_enabledNoEnable persistent on-disk session capture (default: false)

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description bears full burden. It mentions auto-generation of CA certificate and returns outputs but omits important behavioral traits: that the proxy runs until stopped, potential network interception, need for target device setup, or cleanup of temporary certificates. The disclosure is partial.

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

Conciseness5/5

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

The description is one efficient sentence that immediately states the action and lists the returned items. No redundant words; well front-loaded.

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

Completeness3/5

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

Given the tool starts a long-running proxy with 6 parameters, no output schema, and many sibling tools (e.g., proxy_stop, proxy_start_transparent), the description lacks lifecycle context (how to stop, relationship to transparent mode) and does not clarify that a target device must be configured. Adequate for basic use but incomplete for nuanced decision-making.

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

Parameters3/5

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

Input schema has 100% description coverage, so baseline is 3. The description does not add extra meaning beyond the schema for any parameter. For example, it doesn't explain how 'capture_profile' or 'max_disk_mb' affect behavior beyond what schema says.

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

Purpose5/5

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

The description clearly states the tool starts an HTTPS MITM proxy with auto-generated CA certificate and lists key outputs (port, URL, cert fingerprint, setup instructions). It distinguishes from sibling tools like proxy_start_transparent by focusing on the standard proxy mode.

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

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when starting a standard MITM proxy but provides no explicit guidance on when to use it vs alternatives like proxy_start_transparent, nor any when-not-to-use conditions. No alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

proxy_statusA

Get proxy running state, port, upstream config, rule count, and traffic count.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description must disclose behavioral traits. It describes a read-only operation and lists the information returned, which is adequate. However, it does not mention any side effects, authentication needs, or limitations beyond stating that it 'gets' data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 13 words that directly states the tool's purpose and output without any superfluous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description lists the main fields returned (state, port, upstream config, rule count, traffic count), which is fairly complete. However, it lacks detail about the format or structure of the output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, and schema coverage is 100%. The description adds value by naming the fields returned, but baseline is 3 given the trivial parameter set.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'proxy status', and lists the specific pieces of information returned: running state, port, upstream config, rule count, and traffic count. This distinguishes it from sibling tools that perform actions like start/stop or add rules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It merely describes what it does without any context about usage scenarios or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

proxy_stopA

Stop the MITM proxy. Traffic history and CA certificate are retained. Interceptor targets (browsers, containers, spawned processes) activated by THIS MCP session are deactivated; targets belonging to other MCP sessions keep running, though the proxy they were pointed at is gone until someone calls proxy_start again. Pass all=true to deactivate every session's targets (the pre-3.5.3, process-wide behaviour). Over stdio there is one session, so every target is deactivated either way.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoDeactivate every session's interceptor targets, not just this session's (default: false)

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden and succeeds. It discloses what is retained, what is deactivated, how other sessions' targets behave after the proxy stops, and the subtle all=true process-wide behavior. This is unusually transparent for a stop operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no wasted words: the first states the core action and retained state, the second explains session-scoped behavior, and the third resolves the stdio edge case. Information is front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-parameter stop operation, the description covers purpose, side effects, cross-session semantics, and the all flag's historical behavior. No output schema is needed to understand what will happen, and nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100% with a default and description for 'all,' but the tool description adds crucial meaning: all=true is the pre-3.5.3 process-wide behavior, and under stdio the flag is effectively irrelevant because there is only one session. This is genuinely useful semantic enrichment beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a clear imperative, 'Stop the MITM proxy,' and immediately specifies the operation's scope through its side effects: traffic history and CA certificate are retained, and interceptor targets are deactivated. The session-based behavior distinguishes it from proxy_start and interceptor_deactivate_all, so an agent can predict exactly what this tool does and does not do.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear operational context: when to pass all=true, how session ownership affects which targets are deactivated, and the stdio single-session simplification. It does not explicitly name alternatives or say 'use this instead of X,' but the context is strong enough for correct invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

proxy_test_rule_matchA

Test which interception rules would match a request, with detailed per-field pass/fail diagnostics and effective winner by priority.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNosimulate: test a synthetic request, exchange: test an existing captured exchangesimulate
requestNoSynthetic request (required when mode=simulate)
exchange_idNoExchange ID from proxy_list_traffic (required when mode=exchange)
limit_rulesNoOptional limit on number of priority-sorted rules evaluated
include_disabledNoInclude disabled rules in diagnostics (default: true); disabled rules never win

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must convey behavioral traits. It explains the diagnostic output but does not explicitly confirm that the tool is read-only or has no side effects. The absence of any warning or side-effect disclosure reduces transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence with no redundant words. It efficiently conveys purpose and output.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 5 parameters, nested object, lack of output schema, and no annotations, the description covers the core functionality well. It mentions diagnostics and winner, but could briefly summarize the two modes (simulate vs exchange) for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (all 5 parameters have descriptions). The tool description adds no additional parameter meaning beyond summarizing the overall behavior. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Test' and the resource 'interception rules', and specifies the output of 'detailed per-field pass/fail diagnostics and effective winner by priority'. This distinguishes it from sibling tools that list or modify rules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a diagnostic use case but does not explicitly state when to use this tool versus alternatives like proxy_list_rules or proxy_update_rule. No exclusions or alternative references are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

proxy_update_ruleC

Modify an existing interception rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
handlerNoNew handler config
matcherNoNew matcher config
rule_idYesRule ID to update
priorityNoNew priority
descriptionNoNew description

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavior. Fails to clarify if update is partial or full replacement, what happens on invalid rule_id, or whether changes take effect immediately. Lacks side-effect details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

At 4 words, the description is too brief for a tool with 5 parameters including nested objects. It sacrifices clarity for brevity; should at least mention updatable fields or behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no return value description. Missing guidance on success/failure signals, error conditions, or what the tool returns. Incomplete for a mutation tool in a complex domain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers 100% of parameters with descriptions, so baseline is 3. Description adds no additional meaning beyond the schema; it does not explain partial update semantics or required fields beyond rule_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description 'Modify an existing interception rule' uses a specific verb (modify) and resource (existing interception rule), clearly distinguishing from siblings like proxy_add_rule (create), proxy_remove_rule (delete), and proxy_enable_rule/proxy_disable_rule.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. Does not mention that proxy_add_rule should be used for new rules or proxy_remove_rule for deletion. Lacks context on prerequisites or best practices.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 39 tool updatesv3.5.3
    • Changedhumanizer_click1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Changedhumanizer_idle1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Changedhumanizer_move1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Changedhumanizer_scroll1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Changedhumanizer_type1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Removedinterceptor_android_activate
    • Removedinterceptor_android_deactivate
    • Removedinterceptor_android_devices
    • Removedinterceptor_android_setup
    • Changedinterceptor_browser_add_script_tag1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Changedinterceptor_browser_close1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Changedinterceptor_browser_evaluate3 fields changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
      • changedInput schema / properties / value_max_chars / description
        Previous value: -"Max characters of the JSON-stringified return value (default: 20000)."New value: +"Max characters of the JSON-stringified return value (default: 20000, max 16000000)."
      • removedInput schema / properties / world
        Removed value: -{
        -  "default": "isolated",
        -  "description": "`isolated` (default) or `main`. On current camoufox build (cloverlabs/FF150) both run in the page's main world — arg is accepted but has no observable effect.",
        -  "enum": [
        -    "isolated",
        -    "main"
        -  ],
        -  "type": "string"
        -}
    • Changedinterceptor_browser_get_cookie1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Changedinterceptor_browser_get_network_field1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Changedinterceptor_browser_get_storage_value1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Changedinterceptor_browser_inject_init_script1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Changedinterceptor_browser_list_console1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Changedinterceptor_browser_list_cookies1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Changedinterceptor_browser_list_network_fields1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Changedinterceptor_browser_list_storage_keys1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Changedinterceptor_browser_navigate1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Changedinterceptor_browser_screenshot1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Changedinterceptor_browser_snapshot1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"New value: +"Target ID from interceptor_browser_launch"
    • Removedinterceptor_camoufox_close
    • Removedinterceptor_camoufox_info
    • Removedinterceptor_camoufox_launch
    • Removedinterceptor_camoufox_list
    • Removedinterceptor_frida_apps
    • Removedinterceptor_frida_attach
    • Removedinterceptor_frida_detach
    • Changedinterceptor_status1 field changed
      • changedInput schema / properties / interceptor_id / description
        Previous value: -"Interceptor ID (e.g., 'browser', 'terminal', 'android-adb', 'android-frida', 'docker')"New value: +"Interceptor ID (e.g., 'browser', 'terminal', 'docker')"
    • Changedproxy_list_traffic1 field changed
      • removedInput schema / properties / source_filter
        Removed value: -{
        -  "description": "Filter by traffic source: 'explicit' (proxy-configured) or 'transparent' (iptables-redirected)",
        -  "enum": [
        -    "explicit",
        -    "transparent"
        -  ],
        -  "type": "string"
        -}
    • Removedproxy_mobile_detect_iface
    • Removedproxy_mobile_setup
    • Removedproxy_mobile_teardown
    • Removedproxy_start_transparent
    • Changedproxy_stop2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / all
        Added value: +{
        +  "default": false,
        +  "description": "Deactivate every session's interceptor targets, not just this session's (default: false)",
        +  "type": "boolean"
        +}
    • Removedproxy_stop_transparent
    • Removedproxy_transparent_status
  2. 3 tool updatesv3.4.0
    • Changedproxy_mobile_setup1 field changed
      • changedInput schema / properties / upstream_proxy_url / description
        Previous value: -"Optional upstream proxy URL (socks5://user:pass@host:port or http://...). Sets the global upstream for BOTH listeners."New value: +"Optional upstream proxy URL (socks5://user:pass@host:port or http://...). Sets the global upstream for BOTH listeners. If it has a username but no password, the password is filled in from PROXY_MCP_UPSTREAM_PASSWORD, but only when PROXY_MCP_UPSTREAM_HOST is also set and matches this URL's hostname. The response reports password_source: env | url | none."
    • Changedproxy_set_host_upstream1 field changed
      • changedInput schema / properties / proxy_url / description
        Previous value: -"Upstream proxy URL for this host"New value: +"Upstream proxy URL for this host. If it has a username but no password, the password is filled in from PROXY_MCP_UPSTREAM_PASSWORD, but only when PROXY_MCP_UPSTREAM_HOST is also set and matches this URL's hostname. The response reports passwordSource: env | url | none."
    • Changedproxy_set_upstream1 field changed
      • changedInput schema / properties / proxy_url / description
        Previous value: -"Upstream proxy URL (e.g., socks5://user:pass@host:port)"New value: +"Upstream proxy URL (e.g., socks5://user:pass@host:port). If the URL has a username but no password, and the server has both PROXY_MCP_UPSTREAM_PASSWORD and PROXY_MCP_UPSTREAM_HOST set with the host matching this URL's hostname, the password is filled in from the environment so it need not appear in this call. Otherwise the URL is used as given; the response reports passwordSource: env | url | none."
  3. 6 tool updatesv3.3.2
    • Changedhumanizer_click1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Browser target ID from interceptor_browser_launch"New value: +"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"
    • Changedhumanizer_idle1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Browser target ID from interceptor_browser_launch"New value: +"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"
    • Changedhumanizer_move1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Browser target ID from interceptor_browser_launch"New value: +"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"
    • Changedhumanizer_scroll1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Browser target ID from interceptor_browser_launch"New value: +"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"
    • Changedhumanizer_type2 fields changed
      • changedInput schema / properties / delay_ms / description
        Previous value: -"Extra delay per character in ms. Omit to let cloakbrowser pick its own humanized cadence."New value: +"Optional Playwright delay per character in ms."
      • changedInput schema / properties / target_id / description
        Previous value: -"Browser target ID from interceptor_browser_launch"New value: +"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"
    • Changedinterceptor_camoufox_launch2 fields changed
      • changedInput schema / properties / main_world_eval / description
        Previous value: -"Allow `mw:`-prefixed evaluate() calls in the main world"New value: +"Allow explicit `world: 'main'` evaluate calls. On cloverlabs/FF150 this gates the call but does not create a separate realm."
      • changedInput schema / properties / os / description
        Previous value: -"Fingerprint OS to emulate (defaults to camoufox random)"New value: +"Fingerprint OS to emulate (default: host OS; pass an array to let Camoufox choose from those OS families)"
  4. 10 tool updatesv3.3.1
    • Changedinterceptor_browser_get_cookie1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch"New value: +"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"
    • Changedinterceptor_browser_get_network_field1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch"New value: +"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"
    • Changedinterceptor_browser_get_storage_value1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch"New value: +"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"
    • Changedinterceptor_browser_list_console1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch"New value: +"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"
    • Changedinterceptor_browser_list_cookies1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch"New value: +"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"
    • Changedinterceptor_browser_list_network_fields1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch"New value: +"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"
    • Changedinterceptor_browser_list_storage_keys1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch"New value: +"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"
    • Changedinterceptor_browser_navigate1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch"New value: +"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"
    • Changedinterceptor_browser_screenshot1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch"New value: +"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"
    • Changedinterceptor_browser_snapshot1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch"New value: +"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"
  5. 1 tool updatev3.3.0
    • Changedinterceptor_browser_evaluate1 field changed
      • changedInput schema / properties / world / description
        Previous value: -"`isolated` (default) or `main`. Main world only works on camoufox with `main_world_eval: true`."New value: +"`isolated` (default) or `main`. On current camoufox build (cloverlabs/FF150) both run in the page's main world — arg is accepted but has no observable effect."
  6. 3 tool updatesv3.2.0
    • Addedinterceptor_browser_add_script_tag
    • Addedinterceptor_browser_evaluate
    • Addedinterceptor_browser_inject_init_script
  7. 5 tool updatesv3.1.0
    • Changedinterceptor_browser_close1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Target ID from interceptor_browser_launch"New value: +"Target ID from interceptor_browser_launch or interceptor_camoufox_launch"
    • Addedinterceptor_camoufox_close
    • Addedinterceptor_camoufox_info
    • Addedinterceptor_camoufox_launch
    • Addedinterceptor_camoufox_list
  8. 46 tool updatesv2.3.0
    • Changedhumanizer_click10 fields changed
      • addedInput schema / properties / label
        Added value: +{
        +  "description": "Form-field label text (e.g. 'Email address')",
        +  "type": "string"
        +}
      • removedInput schema / properties / move_duration_ms
        Removed value: -{
        -  "default": 600,
        -  "description": "Base duration for mouse movement (default: 600)",
        -  "type": "number"
        -}
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "Accessible name; used with role (e.g. 'Sign in')",
        +  "type": "string"
        +}
      • addedInput schema / properties / role
        Added value: +{
        +  "description": "ARIA role (e.g. 'button', 'link', 'textbox')",
        +  "type": "string"
        +}
      • changedInput schema / properties / selector / description
        Previous value: -"CSS selector to click (resolved via getBoundingClientRect)"New value: +"CSS or XPath selector (e.g. 'button.submit', '//button[@id=\"go\"]')"
      • changedInput schema / properties / target_id / description
        Previous value: -"Chrome target ID from interceptor_chrome_launch"New value: +"Browser target ID from interceptor_browser_launch"
      • addedInput schema / properties / text
        Added value: +{
        +  "description": "Visible text to match (e.g. 'Accept cookies')",
        +  "type": "string"
        +}
      • addedInput schema / properties / timeout_ms
        Added value: +{
        +  "default": 15000,
        +  "description": "Max ms to wait for locator to be visible + actionable (default: 15000)",
        +  "type": "number"
        +}
      • changedInput schema / properties / x / description
        Previous value: -"X coordinate (used if selector is not provided)"New value: +"X coordinate fallback when no locator is given"
      • changedInput schema / properties / y / description
        Previous value: -"Y coordinate (used if selector is not provided)"New value: +"Y coordinate fallback when no locator is given"
    • Changedhumanizer_idle1 field changed
      • changedInput schema / properties / target_id / description
        Previous value: -"Chrome target ID from interceptor_chrome_launch"New value: +"Browser target ID from interceptor_browser_launch"
    • Changedhumanizer_move2 fields changed
      • removedInput schema / properties / duration_ms
        Removed value: -{
        -  "default": 600,
        -  "description": "Base duration in ms before Fitts scaling (default: 600)",
        -  "type": "number"
        -}
      • changedInput schema / properties / target_id / description
        Previous value: -"Chrome target ID from interceptor_chrome_launch"New value: +"Browser target ID from interceptor_browser_launch"
    • Changedhumanizer_scroll2 fields changed
      • removedInput schema / properties / duration_ms
        Removed value: -{
        -  "default": 400,
        -  "description": "Total scroll duration in ms (default: 400)",
        -  "type": "number"
        -}
      • changedInput schema / properties / target_id / description
        Previous value: -"Chrome target ID from interceptor_chrome_launch"New value: +"Browser target ID from interceptor_browser_launch"
    • Changedhumanizer_type4 fields changed
      • addedInput schema / properties / delay_ms
        Added value: +{
        +  "description": "Extra delay per character in ms. Omit to let cloakbrowser pick its own humanized cadence.",
        +  "type": "number"
        +}
      • removedInput schema / properties / error_rate
        Removed value: -{
        -  "default": 0,
        -  "description": "Typo probability per character, 0-1 (default: 0)",
        -  "type": "number"
        -}
      • changedInput schema / properties / target_id / description
        Previous value: -"Chrome target ID from interceptor_chrome_launch"New value: +"Browser target ID from interceptor_browser_launch"
      • removedInput schema / properties / wpm
        Removed value: -{
        -  "default": 40,
        -  "description": "Typing speed in words per minute (default: 40)",
        -  "type": "number"
        -}
    • Addedinterceptor_browser_close
    • Addedinterceptor_browser_get_cookie
    • Addedinterceptor_browser_get_network_field
    • Addedinterceptor_browser_get_storage_value
    • Addedinterceptor_browser_launch
    • Addedinterceptor_browser_list_console
    • Addedinterceptor_browser_list_cookies
    • Addedinterceptor_browser_list_network_fields
    • Addedinterceptor_browser_list_storage_keys
    • Addedinterceptor_browser_navigate
    • Addedinterceptor_browser_screenshot
    • Addedinterceptor_browser_snapshot
    • Removedinterceptor_chrome_cdp_info
    • Removedinterceptor_chrome_close
    • Removedinterceptor_chrome_devtools_attach
    • Removedinterceptor_chrome_devtools_detach
    • Removedinterceptor_chrome_devtools_get_cookie
    • Removedinterceptor_chrome_devtools_get_network_field
    • Removedinterceptor_chrome_devtools_get_storage_value
    • Removedinterceptor_chrome_devtools_list_console
    • Removedinterceptor_chrome_devtools_list_cookies
    • Removedinterceptor_chrome_devtools_list_network
    • Removedinterceptor_chrome_devtools_list_network_fields
    • Removedinterceptor_chrome_devtools_list_storage_keys
    • Removedinterceptor_chrome_devtools_navigate
    • Removedinterceptor_chrome_devtools_pull_sidecar
    • Removedinterceptor_chrome_devtools_screenshot
    • Removedinterceptor_chrome_devtools_snapshot
    • Removedinterceptor_chrome_launch
    • Removedinterceptor_chrome_navigate
    • Changedinterceptor_status1 field changed
      • changedInput schema / properties / interceptor_id / description
        Previous value: -"Interceptor ID (e.g., 'chrome', 'terminal', 'android-adb', 'android-frida', 'docker')"New value: +"Interceptor ID (e.g., 'browser', 'terminal', 'android-adb', 'android-frida', 'docker')"
    • Changedproxy_list_traffic1 field changed
      • addedInput schema / properties / source_filter
        Added value: +{
        +  "description": "Filter by traffic source: 'explicit' (proxy-configured) or 'transparent' (iptables-redirected)",
        +  "enum": [
        +    "explicit",
        +    "transparent"
        +  ],
        +  "type": "string"
        +}
    • Addedproxy_mobile_detect_iface
    • Addedproxy_mobile_setup
    • Addedproxy_mobile_teardown
    • Addedproxy_search_session_bodies
    • Changedproxy_set_fingerprint_spoof8 fields changed
      • removedInput schema / properties / disable_grease
        Removed value: -{
        -  "description": "Disable GREASE values in TLS ClientHello",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / force_http1
        Removed value: -{
        -  "description": "Force HTTP/1.1 instead of HTTP/2",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / header_order
        Removed value: -{
        -  "description": "Header order for outgoing requests (e.g. ['host','user-agent','accept',...])",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / http2_fingerprint
        Removed value: -{
        -  "description": "HTTP/2 fingerprint (SETTINGS|WINDOW_UPDATE|PRIORITY frames). E.g. '1:65536;2:0;3:1000;4:6291456;6:262144|15663105|0:1:256:0,...'",
        -  "type": "string"
        -}
      • removedInput schema / properties / ja3
        Removed value: -{
        -  "description": "JA3 fingerprint string. Required if no preset is given.",
        -  "type": "string"
        -}
      • removedInput schema / properties / order_as_provided
        Removed value: -{
        -  "description": "Send headers in the exact order provided (default: true when header_order is set)",
        -  "type": "boolean"
        -}
      • changedInput schema / properties / preset / description
        Previous value: -"Browser preset name (e.g. 'chrome_131', 'chrome_136'). Use proxy_list_fingerprint_presets to see available options. Individual params below override preset values."New value: +"Browser preset name (e.g. 'chrome_131', 'chrome_136'). Use proxy_list_fingerprint_presets to see available options."
      • changedInput schema / properties / user_agent / description
        Previous value: -"User-Agent header to use with spoofed requests"New value: +"User-Agent header to use with spoofed requests (overrides preset UA)"
    • Changedproxy_set_ja3_spoof1 field changed
      • changedInput schema / properties / ja3 / description
        Previous value: -"JA3 fingerprint string (ignored by curl-impersonate backend — use proxy_set_fingerprint_spoof with a preset instead)"New value: +"JA3 fingerprint string (ignored — use proxy_set_fingerprint_spoof with a preset instead)"
    • Addedproxy_start_transparent
    • Addedproxy_stop_transparent
    • Addedproxy_transparent_status
  9. 81 tool updatesv1.0.0
    • Addedhumanizer_click
    • Addedhumanizer_idle
    • Addedhumanizer_move
    • Addedhumanizer_scroll
    • Addedhumanizer_type
    • Addedinterceptor_android_activate
    • Addedinterceptor_android_deactivate
    • Addedinterceptor_android_devices
    • Addedinterceptor_android_setup
    • Addedinterceptor_chrome_cdp_info
    • Addedinterceptor_chrome_close
    • Addedinterceptor_chrome_devtools_attach
    • Addedinterceptor_chrome_devtools_detach
    • Addedinterceptor_chrome_devtools_get_cookie
    • Addedinterceptor_chrome_devtools_get_network_field
    • Addedinterceptor_chrome_devtools_get_storage_value
    • Addedinterceptor_chrome_devtools_list_console
    • Addedinterceptor_chrome_devtools_list_cookies
    • Addedinterceptor_chrome_devtools_list_network
    • Addedinterceptor_chrome_devtools_list_network_fields
    • Addedinterceptor_chrome_devtools_list_storage_keys
    • Addedinterceptor_chrome_devtools_navigate
    • Addedinterceptor_chrome_devtools_pull_sidecar
    • Addedinterceptor_chrome_devtools_screenshot
    • Addedinterceptor_chrome_devtools_snapshot
    • Addedinterceptor_chrome_launch
    • Addedinterceptor_chrome_navigate
    • Addedinterceptor_deactivate_all
    • Addedinterceptor_docker_attach
    • Addedinterceptor_docker_detach
    • Addedinterceptor_frida_apps
    • Addedinterceptor_frida_attach
    • Addedinterceptor_frida_detach
    • Addedinterceptor_kill
    • Addedinterceptor_list
    • Addedinterceptor_spawn
    • Addedinterceptor_status
    • Addedproxy_add_rule
    • Addedproxy_check_fingerprint_runtime
    • Addedproxy_clear_ja3_spoof
    • Addedproxy_clear_traffic
    • Addedproxy_clear_upstream
    • Addedproxy_delete_session
    • Addedproxy_disable_rule
    • Addedproxy_enable_rule
    • Addedproxy_enable_server_tls_capture
    • Addedproxy_export_har
    • Addedproxy_get_ca_cert
    • Addedproxy_get_exchange
    • Addedproxy_get_session
    • Addedproxy_get_session_exchange
    • Addedproxy_get_session_handshakes
    • Addedproxy_get_tls_config
    • Addedproxy_get_tls_fingerprints
    • Addedproxy_import_har
    • Addedproxy_inject_headers
    • Addedproxy_list_fingerprint_presets
    • Addedproxy_list_rules
    • Addedproxy_list_sessions
    • Addedproxy_list_tls_fingerprints
    • Addedproxy_list_traffic
    • Addedproxy_mock_response
    • Addedproxy_query_session
    • Addedproxy_remove_host_upstream
    • Addedproxy_remove_rule
    • Addedproxy_replay_session
    • Addedproxy_rewrite_url
    • Addedproxy_search_traffic
    • Addedproxy_session_recover
    • Addedproxy_session_start
    • Addedproxy_session_status
    • Addedproxy_session_stop
    • Addedproxy_set_fingerprint_spoof
    • Addedproxy_set_host_upstream
    • Addedproxy_set_ja3_spoof
    • Addedproxy_set_upstream
    • Addedproxy_start
    • Addedproxy_status
    • Addedproxy_stop
    • Addedproxy_test_rule_match
    • Addedproxy_update_rule

TDQS

B3.4/5.0

Scored across 72 tools

Disambiguation4/5

Tools are mostly grouped by clear domains (proxy, session, interceptor, humanizer, fingerprinting), and descriptions clarify near-neighbor cases like traffic search vs session body search. However, some pairs could still be confused, such as proxy_get_exchange vs proxy_get_session_exchange vs interceptor_browser_get_network_field, and the convenience rule creators overlap conceptually with proxy_add_rule.

Naming Consistency4/5

The naming follows a strong snake_case verb_noun pattern with consistent prefixes like proxy_, interceptor_browser_, and humanizer_. Minor inconsistencies exist: clear vs remove for upstreams, the deprecated proxy_set_ja3_spoof alongside proxy_set_fingerprint_spoof, and proxy_enable_server_tls_capture described as a toggle despite its name.

Tool Count2/5

72 tools is a very large surface for an MCP server, even for a broad proxy/interception platform. Many tools are highly specialized and could be consolidated, such as convenience rule wrappers, session query variants, and the deprecated JA3 tool.

Completeness5/5

The toolset covers the full proxy lifecycle: start/stop/status, CA management, upstream configuration, rules, traffic capture and search, sessions, HAR import/export, TLS fingerprinting, browser automation, humanization, and process/Docker interception. There are no major workflow dead ends; list-style tools fill gaps where dedicated getters are absent.

Maintenance

ActivityMaintained
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Intelligent HTTP/HTTPS proxy server with MCP integration for automated traffic monitoring, analysis, and browser setup.
    22
    -
  • A
    license
    A
    quality
    F
    maintenance
    An MCP server that enables AI assistants to capture and analyze HTTP/HTTPS traffic from Android devices. It supports smart searching of network requests and provides tools for detailed traffic analysis via natural language.
    11
    231
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for intercepting and mocking HTTP(S) traffic via a Mockttp proxy, with tools for Android emulator setup, traffic inspection, protobuf analysis, and rule-based manipulation.
    35
    14 npm
    MIT