Skip to main content
Glama

pilot — browser automation MCP for AI agents

npm license stars

Native Playwright-backed browser sessions by default. No Chrome extension required for QA automation.

pilot demo

Pilot has two browser backends:

  • Native mode (default): isolated Playwright browser contexts. This is the supported path for parallel QA automation and reliable screenshots.

  • Extension mode (legacy/opt-in): connects to your real Chrome profile when you need existing cookies and logged-in sessions.

Native mode avoids chrome.tabs.captureVisibleTab() entirely, so screenshots do not depend on Chrome being foregrounded, a tab being visibly active, or the extension service worker being fresh.


How it works

AI Agent → MCP Server → Broker on 127.0.0.1:3131 → Native browser session
         (stdio)       (first process owns broker)  (Playwright context/page)
  1. Pilot runs as an MCP server — Claude Code, Cursor, or any MCP client connects via stdio

  2. The first Pilot process becomes the broker on localhost

  3. Later Pilot processes connect as broker clients

  4. Each session gets an isolated native browser context/page

  5. Screenshots come from Playwright, not the Chrome extension capture API


Related MCP server: MCP Master Puppeteer

Quick Start

1. Add the MCP server

codex mcp add pilot \
  --env PILOT_BROWSER_MODE=native \
  --env PILOT_PROFILE=full \
  -- npx -y pilot-mcp

For a local checkout:

npm install
npm run build
codex mcp add pilot \
  --env PILOT_BROWSER_MODE=native \
  --env PILOT_PROFILE=full \
  -- node /absolute/path/to/pilot/dist/index.js

2. Use it

"Open https://example.com, take a screenshot, and summarize the page."

No extension install. No Chrome foreground requirement.

For full native-mode operations, stress commands, and cleanup checks, see docs/native-mode.md.


Lean snapshots

Other tools dump 50K+ chars per page into your context window. Pilot keeps things small:

Other tools:   navigate(58K) → navigate(58K) → answer        = 116K chars
Pilot:         navigate(2K)  → navigate(2K)  → snapshot(9K)  =  13K chars

snapshot_diff shows only what changed between actions — no redundant re-reads.

Less context = faster responses, cheaper API calls, fewer hallucinations.


Pilot vs @playwright/mcp

Pilot

@playwright/mcp

Browser

Native Playwright context by default; real Chrome via legacy extension

New Chromium instance

Auth state

Native isolated by default; extension mode can use real Chrome cookies

Anonymous — manual setup

Bot detection

Native for automation; extension mode for real-profile handoff

Blocked by Cloudflare

Snapshot size

~2K navigate, ~9K full

~50-60K

Snapshot diff

pilot_snapshot_diff

Cookie import

Chrome, Arc, Brave, Edge, Comet

Manual JSON

Iframes

Tool profiles

core (9) / standard (40) / full (69)

--caps groups

Transport

stdio

stdio, HTTP, SSE


69 tools across 3 profiles

LLMs degrade as tool lists grow. Load only what you need:

Profile

Tools

What's included

core

9

navigate, snapshot, click, fill, type, press_key, wait, screenshot, snapshot_diff

standard

40

Core + pilot_act, pilot_guide, evidence, doctor/reset, tabs, scroll, hover, drag, iframes, auth, block, find

full

69

Standard + network intercept, assertions, clipboard, geolocation, CDP, evaluate, PDF, responsive, deep inspection

{
  "mcpServers": {
    "pilot": {
      "command": "npx",
      "args": ["-y", "pilot-mcp"],
      "env": { "PILOT_PROFILE": "standard" }
    }
  }
}

Default: standard. Full tool reference →


Native mode

Native mode is the default:

PILOT_BROWSER_MODE=native

Use it for QA automation, parallel MCP sessions, and screenshot evidence.

Verify it before QA runs:

PILOT_HEADLESS=1 npm run stress:screenshots
npm run stress:codex

Expected: both report 6/6 passed.

Extension mode

Extension mode is legacy and opt-in:

PILOT_BROWSER_MODE=extension

Use it only when you need a user's already-authenticated real Chrome profile.

Import cookies from your real browser: pilot_import_cookies({ browser: "chrome", domains: [".github.com"] })

Supports Chrome, Arc, Brave, Edge, Comet via macOS Keychain / Linux libsecret. For CAPTCHAs: pilot_handoff → you intervene → pilot_resume.


Requirements

  • Node.js >= 18

  • Playwright Chromium

  • macOS or Linux

  • Extension mode only: Chrome + Pilot extension

If Chromium is missing:

npx playwright install chromium

Security

  • Extension communicates on localhost only (127.0.0.1)

  • Native broker communicates on localhost only (127.0.0.1)

  • Native sessions use isolated browser contexts per MCP session

  • Output path validation prevents writes outside PILOT_OUTPUT_DIR

  • Path traversal protection on all file operations

  • PILOT_PROFILE controls which tools are exposed (core / standard / full)


Credits

Core architecture — ref-based element selection, snapshot diffing, annotated screenshots — ported from gstack by Garry Tan. Built on Playwright and the MCP SDK.


If Pilot is useful, star the repo — it helps others find it.

Available Tools

61 tools
pilot_annotated_screenshotA

Take a PNG screenshot with red overlay boxes and ref labels at each @eN/@cN element position. Use when the user wants a visual debug overlay showing where each snapshot ref is located on the page, or needs to verify element positions visually. Requires a prior pilot_snapshot call to populate the ref positions. For a clean visual capture without debug overlays, use pilot_screenshot instead.

Parameters:

  • output_path: Optional file path to save the annotated screenshot (default: temp directory)

Returns: The annotated screenshot as a base64 PNG image and the file path where it was saved.

Errors:

  • "No ref positions": Run pilot_snapshot first to capture element positions before taking an annotated screenshot.

  • Timeout: The page is unresponsive.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathNoOutput file path for the screenshot

TDQS

A4.6/5.0
Behavior4/5

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

Description discloses the screenshot creation with overlays, return format (base64 + file path), and errors. With no annotations, it adequately covers behavioral aspects, though it could explicitly state non-destructive nature.

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?

Well-structured with clear sections: action, usage, parameters, return, errors. Front-loaded purpose. No unnecessary sentences.

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

Completeness4/5

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

Covers prerequisite, errors, return type. Could mention format of base64 output, but sufficient for typical use.

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

Parameters4/5

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

The single parameter output_path is described in schema (100% coverage). Description adds default behavior (temp directory), providing value beyond schema.

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

Purpose5/5

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

The description clearly states the tool takes a PNG screenshot with red overlay boxes and ref labels at element positions. It distinguishes itself from the sibling pilot_screenshot by specifying the debug overlay nature.

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 states when to use (visual debug overlay, verify element positions) and when not to use (for clean capture, use pilot_screenshot). Also mentions prerequisite of pilot_snapshot.

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

pilot_assertA

Assert a condition about the current page state and fail with a structured error if the assertion is not met. Use when the user wants to verify the outcome of an action — that a URL was reached, text is present or absent, an element is visible/hidden/enabled, or an input has a specific value. Returns a clear pass/fail signal for agent-driven test flows.

Parameters:

  • url: Assert the current page URL equals or contains this string

  • text_present: Assert this text is visible somewhere on the page (waits up to 5s)

  • text_absent: Assert this text is NOT visible on the page

  • ref: Element ref (@eN) to assert a state or value on

  • state: Expected element state — "visible", "hidden", "enabled", or "disabled"

  • value: Expected input value for the element pointed to by ref

Returns: "✓ N assertion(s) passed" if all checks pass.

Errors:

  • Returns isError=true with details of which assertion failed and what was found instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoAssert current URL equals or contains this string
text_presentNoAssert this text is visible on the page
text_absentNoAssert this text is NOT visible on the page
refNoElement ref (@eN) to check state or value
stateNoExpected element state
valueNoExpected input value for the element ref

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses that text_present waits up to 5s and returns a structured error on failure. No annotations are provided, so the description carries full burden. It does not specify whether other assertions have wait behavior, but overall behavioral detail is good.

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 well-structured with clear sections for parameters, returns, and errors. It includes a parameter list that could be trimmed given the schema, but the added behavioral notes justify the length. No redundant sentences.

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 complexity (6 parameters, no output schema), the description fully explains parameter semantics, return value format, and error handling. It covers all necessary aspects for an agent to use the tool correctly in test verification flows.

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 descriptions cover all parameters at 100%, but the description adds contextual hints (e.g., 'waits up to 5s' for text_present, 'fails with structured error') that enhance understanding beyond the schema. This adds value while being concise.

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: asserting conditions about page state with a structured error on failure. It identifies the specific use cases (URL, text, element state/value) and is distinct from sibling tools like pilot_click or pilot_navigate.

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 when to use: 'to verify the outcome of an action' and lists common assertion scenarios. It lacks explicit when-not-to-use or alternative tools, but provides clear usage context for verification tasks.

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

pilot_authA

Save, load, or clear browser session state (cookies + localStorage + sessionStorage) to/from a JSON file. Use when the user wants to authenticate once and reuse credentials across sessions, skip re-login flows, or transfer session state between runs. Complement to pilot_import_cookies — use pilot_auth for Pilot-managed state, pilot_import_cookies for one-time import from a real browser.

Parameters:

  • action: "save" — write current session to file; "load" — restore session from file; "clear" — clear cookies and storage from browser

  • path: File path to save or load (e.g., "~/.pilot/github.json"). Required for save/load actions.

Returns:

  • save: Count of cookies saved and the file path.

  • load: Count of cookies restored.

  • clear: Confirmation that cookies and storage were cleared.

Errors:

  • "Session file not found": The path does not exist. Run with action="save" first.

  • "Browser not launched": Navigate to a URL first to initialize the browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAction to perform
pathNoFile path to save or load session state (e.g., "~/.pilot/session.json")

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, description fully discloses behaviors: three actions, what is stored (cookies+localStorage+sessionStorage), return values per action, and two specific error conditions. No contradictions or omissions.

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?

Description is well-organized into paragraphs covering purpose, usage, parameters, returns, and errors. Every sentence adds value, though slightly verbose in listing return values. Front-loaded with core purpose.

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

Completeness5/5

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

Given the tool's complexity (three actions, file I/O, session state), description covers all necessary aspects: purpose, usage, parameters, returns, errors, and sibling differentiation. No output schema, but return values are described. Complete for agent invocation.

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 100%, so baseline is 3. Description goes beyond schema by explaining the meaning of each action, when path is required, giving an example path, and detailing return values per action. Adds significant 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?

Description clearly states 'Save, load, or clear browser session state (cookies + localStorage + sessionStorage) to/from a JSON file.' Provides specific verb+resource and explicitly differentiates from sibling tool pilot_import_cookies.

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 describes when to use: 'when user wants to authenticate once and reuse credentials across sessions, skip re-login flows, or transfer session state between runs.' Also contrasts with sibling pilot_import_cookies, giving clear guidance on alternatives.

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

pilot_backA

Navigate back to the previous page in browser history. Use when the user wants to go back to the prior page they visited.

Parameters: (none)

Returns: The URL of the page after navigating back.

Errors:

  • "No previous page in history": There is nothing to go back to. Use pilot_navigate instead.

  • Timeout (15s): The previous page took too long to load.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

No annotations provided, but the description thoroughly covers behavior: returns URL after navigation, lists two errors (no previous page, timeout after 15s), and implies the action is non-destructive and reversible.

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 with no wasted words: purpose, usage, parameters, returns, errors all in a few sentences. Well-structured and front-loaded.

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

Completeness5/5

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

Given no output schema, the description explains the return value and covers all errors and alternatives. For a parameterless navigation tool, this is fully complete.

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

Parameters4/5

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

No parameters exist (zero), baseline is 4. Description explicitly states 'Parameters: (none)', which adds no extra meaning but is clear. Schema coverage is trivial 100%.

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 'Navigate back to the previous page in browser history', using a specific verb and resource. It distinguishes from sibling tools like pilot_forward and pilot_navigate.

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

Usage Guidelines5/5

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

Explicitly says 'Use when the user wants to go back to the prior page they visited' and provides an alternative (pilot_navigate) for the 'No previous page in history' error, offering clear when-to-use and when-not-to-use guidance.

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

pilot_blockA

Block network requests matching URL patterns to speed up page loads and reduce token noise from ad/tracker content. Use when the user wants to block ads, trackers, analytics scripts, or any noisy domain. Blocked requests are aborted before they hit the network — faster loads, smaller snapshots. Use the built-in "ads" preset to block ~20 major ad networks with one call.

Parameters:

  • patterns: Array of URL glob patterns to block (e.g., ["googletag", ".hotjar.com/"])

  • preset: Built-in preset to block — "ads" blocks ~20 major ad and tracker networks

  • clear: Set to true to remove all active blocks

Returns:

  • Add mode: List of active blocked patterns.

  • clear mode: Confirmation that all blocks were removed.

Errors: None — invalid patterns are silently ignored by the browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternsNoURL glob patterns to block
presetNoBuilt-in preset: "ads" blocks major ad/tracker networks
clearNoRemove all active blocks

TDQS

A4.8/5.0
Behavior5/5

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

Discloses that blocked requests are aborted before reaching the network, resulting in faster loads and smaller snapshots. Also notes that invalid patterns are silently ignored. With no annotations, the description fully handles 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?

Well-structured into a summary, usage advice, parameter details, return info, and error note. Every sentence is informative with no wasted words.

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?

Covers all aspects: purpose, parameters, behavior, return values, and errors. With no output schema, the description provides complete context for the agent to use the tool correctly.

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?

Adds meaning beyond the schema: provides examples for patterns, explains the 'ads' preset blocks ~20 networks, and clarifies the clear mode. Also describes return values for add and clear modes, which is not 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?

Clearly states the tool blocks network requests to speed up page loads and reduce token noise. Uses specific verb 'block' and resource 'network requests'. Differentiates from siblings by focusing on ad/tracker blocking.

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

Usage Guidelines4/5

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

Explicitly says when to use: when user wants to block ads, trackers, analytics scripts. Mentions the 'ads' preset for a common use case. Does not mention when not to use or alternatives among siblings, but provides clear context.

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

pilot_cdpA

Connect Pilot to a real Chrome browser already running on the user's machine via Chrome DevTools Protocol (CDP). Use when Cloudflare or other bot detection blocks even headed mode. A real Chrome with the user's real profile bypasses fingerprinting entirely.

Parameters:

  • port (optional, default 9222): The remote debugging port Chrome was launched with.

How to start Chrome with CDP enabled: macOS: /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 Windows: "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 Linux: google-chrome --remote-debugging-port=9222

Returns: Confirmation of connection with tab count and active URL.

Errors:

  • "Cannot connect": Chrome is not running or not started with the --remote-debugging-port flag.

ParametersJSON Schema
NameRequiredDescriptionDefault
portNoChrome remote debugging port (default: 9222)

TDQS

A4.2/5.0
Behavior4/5

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

Describes connection behavior, port parameter, how to start Chrome, and errors. No annotations provided so description carries full burden; adequately transparent.

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?

Well-structured with sections, front-loaded purpose. Each sentence adds value, though could be slightly more 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?

Covers purpose, usage, parameters, setup instructions, return value, and errors. Complete for a connection 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?

Only one parameter (port) with full schema coverage. Description adds default value and usage hint but schema already describes it.

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

Purpose5/5

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

Clearly states the tool connects Pilot to a real Chrome browser via CDP. Distinguishes from siblings as it's about connecting to an external browser, not performing automation actions.

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

Usage Guidelines4/5

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

Explicitly advises use when bot detection blocks headed mode, providing context. Does not list 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.

pilot_clickA

Click an element on the page using a ref from pilot_snapshot or a CSS selector. Use when the user wants to press a button, follow a link, check a checkbox, or interact with any clickable element. Auto-routes clicks on elements to pilot_select_option.

Parameters:

  • ref: Element reference from snapshot (e.g., "@e3") or a CSS selector (e.g., "button.submit")

  • button: Mouse button to click — "left" (default), "right" (context menu), or "middle"

  • double_click: Set to true for a double-click instead of single click

Returns: Confirmation with the clicked ref and the current URL after navigation (if any).

Errors:

  • "Element not found": The ref is stale or the selector matches nothing. Run pilot_snapshot to get fresh refs.

  • "Element is not clickable": The element exists but is obscured or disabled. Try scrolling to it first with pilot_scroll.

  • "Timeout": The click triggered a navigation that took too long. The page may still be loading.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesElement ref (@e3) or CSS selector
buttonNoMouse button
double_clickNoDouble-click instead of single click

TDQS

A4.8/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. It discloses double-click capability, mouse button choices, return value (confirmation with ref and URL), and three specific errors with causes and remedies. Comprehensive.

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

Conciseness5/5

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

Well-structured: purpose first, then usage context, parameter details, return value, and errors. No redundant sentences, each sentence serves a purpose. Appropriately sized.

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 3 parameters, no output schema, no annotations, the description covers all necessary aspects: purpose, usage, parameters, return, errors, and sibling routing. Complete and actionable.

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 100%, but description adds value beyond schema: explains ref can be from snapshot or CSS selector with examples, clarifies button enum values, and describes double_click effect. Adds parameter semantics.

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

Purpose5/5

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

The description clearly states 'Click an element on the page using a ref from pilot_snapshot or a CSS selector.' It specifies the action (click) and resource (element). Mentions auto-routing for <option> to pilot_select_option, distinguishing from siblings.

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

Usage Guidelines4/5

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

Explicitly says when to use: 'when the user wants to press a button, follow a link, check a checkbox...' Also hints at alternatives via errors (e.g., use pilot_scroll for non-clickable elements). Lacks explicit when-not-to-use statements.

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

pilot_clipboardA

Read from or write to the browser clipboard. Use when the user wants to read content that an app copied to clipboard (share links, API keys, generated tokens), or pre-populate clipboard with text for paste operations.

Parameters:

  • action: "get" — read current clipboard text; "set" — write text to clipboard

  • text: Text to write when action is "set"

Returns:

  • get: The current clipboard text content.

  • set: Confirmation that text was written to clipboard.

Errors:

  • "Clipboard read failed": Browser security policy blocked clipboard access. Try in headed mode (pilot_handoff).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes"get" to read clipboard, "set" to write
textNoText to write to clipboard (required for action="set")

TDQS

A4.3/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. It describes two actions and their returns, and an error case, but lacks details on security implications, headless mode limitations, or user interaction requirements.

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

Conciseness5/5

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

The description is concise and well-structured: main purpose first, then parameters, returns, and errors. Every sentence adds value with no redundancy.

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

Completeness5/5

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

For a simple 2-parameter tool, the description covers purpose, parameters, return values, and error handling. No output schema exists, but returns are adequately described. No missing context.

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% and the schema already describes parameters well. The description adds value by explaining usage examples (e.g., 'share links, API keys') and return values per action, going 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 'Read from or write to the browser clipboard,' using a specific verb and resource. It uniquely identifies the tool's function among siblings, as no other sibling appears to handle clipboard operations.

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 when to use the tool (e.g., reading content like API keys, pre-populating clipboard) and mentions an error scenario with a suggested workaround (headed mode). It does not exclude alternatives but provides clear context.

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

pilot_closeA

Close the browser instance and release all associated resources. Use when the user wants to end the browsing session, clean up after completing a task, or start fresh with a new browser session.

Parameters: (none)

Returns: Confirmation that the browser was closed.

Errors:

  • "No browser to close": No browser session is currently running. Safe to ignore.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations, so description carries full burden. Discloses resource release and error condition 'No browser to close' as safe to ignore. Does not elaborate on irreversibility or impact on other windows, but for a close operation it is adequate.

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

Conciseness5/5

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

Description is short, front-loaded with the primary action, and includes use cases, parameter list, return value, and error handling. Every sentence is useful and none are redundant.

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 no parameters, the description covers purpose, usage, return type, and errors. No output schema exists, but the stated return ('Confirmation') is 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?

No parameters in schema, description simply states 'Parameters: (none)'. This adds no significant meaning beyond the schema, but for zero-parameter tools a baseline 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?

Description clearly states 'Close the browser instance and release all associated resources.' The verb 'close' and resource 'browser instance' are specific. It distinguishes itself from sibling pilot_tab_close by referring to the entire browser.

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

Usage Guidelines4/5

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

Explicitly states when to use: 'when the user wants to end the browsing session, clean up after completing a task, or start fresh with a new browser session.' Does not mention alternatives, but context implies not for tab-level closing.

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

pilot_consoleA

Retrieve browser console messages (console.log, console.warn, console.error) from a circular buffer. Use when the user wants to debug JavaScript errors, check application logs, inspect warnings, or see what the page is printing to the console.

Parameters:

  • level: Filter messages by log level — "error" (includes warnings), "warning", "info", or "all" (default: all)

  • clear: Set to true to clear the buffer after reading (useful for checking new messages after an action)

Returns: Timestamped list of console messages with their log level, or "(no console messages)" if the buffer is empty.

Errors: None — returns empty message if no entries match the filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoFilter by log level
clearNoClear the buffer after reading

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It explains the circular buffer, clear parameter effect, return format (timestamped list or empty message). It does not mention any destructive implications beyond clearing, which is described.

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 well-structured with a clear overview, usage context, parameter explanations, return value, and error note. Each sentence adds value without redundancy.

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?

Covers purpose, parameters, return format, and error behavior. No output schema exists, so description adequately explains return values. Parameters are fully documented.

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%, baseline 3. Description adds meaning: explains level filter (e.g., error includes warnings) and clear usage (useful for checking new messages). This goes beyond the schema's enum description.

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 that the tool retrieves browser console messages from a circular buffer, listing types like console.log, console.warn, console.error. It clearly distinguishes from siblings, as no other tool deals with console messages.

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

Usage Guidelines4/5

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

The description provides explicit usage scenarios: 'Use when the user wants to debug JavaScript errors, check application logs, inspect warnings, or see what the page is printing to the console.' It does not include when-not-to-use, but the context is clear enough.

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

pilot_cookiesA

Retrieve all cookies for the current page context as a JSON array. Use when the user wants to inspect cookies, debug authentication state, check session tokens, or verify that cookies were set correctly. For setting individual cookies, use pilot_set_cookie; for bulk import from a real browser, use pilot_import_cookies.

Parameters: (none)

Returns: JSON array of cookie objects with name, value, domain, path, expires, httpOnly, secure, and sameSite attributes.

Errors: None — returns empty array "[]" if no cookies exist.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It specifies return format, attributes, and error behavior (empty array). Implicitly read-only but could explicitly state no side effects. Slightly room for improvement.

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?

Concise, front-loaded with purpose, then usage, then return details. Every sentence is informative.

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 zero parameters and no output schema, the description covers purpose, usage, return format, and error handling. Sufficient for a simple retrieval tool.

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

Parameters4/5

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

Zero parameters, baseline 4. Description explicitly states 'Parameters: (none)' and schema coverage is 100%, so no additional value 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?

Clear verb 'Retrieve' + resource 'cookies for the current page context'. Explicitly distinguishes from siblings like pilot_set_cookie and pilot_import_cookies.

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?

Lists specific use cases (inspect, debug, check tokens, verify) and provides explicit alternatives for setting and importing cookies.

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

pilot_dialogA

Retrieve captured browser dialog messages (alert, confirm, prompt) from a circular buffer. Use when the user wants to see what native dialogs appeared on the page, check prompt text, or verify that a dialog was triggered after an action. Note: configure auto-handling with pilot_handle_dialog to prevent dialogs from blocking page interaction.

Parameters:

  • clear: Set to true to clear the buffer after reading

Returns: Timestamped list of dialogs showing type (alert/confirm/prompt), message text, and the action taken (accepted/dismissed) with any response text. Or "(no dialogs captured)" if empty.

Errors: None — returns empty message if no dialogs were captured.

ParametersJSON Schema
NameRequiredDescriptionDefault
clearNoClear the buffer after reading

TDQS

A4.5/5.0
Behavior4/5

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

Describes circular buffer behavior, clear parameter effect, return format (timestamped list) and empty case. No annotations exist, so description handles behavioral disclosure well. Minor omission: buffer size not mentioned.

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

Conciseness5/5

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

Concise, well-structured: purpose, usage, parameter, return, errors. Every sentence adds value; no redundancy.

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 1 parameter and no output schema, description fully covers usage, return, and edge cases. References sibling for complementary 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 covers parameter 100% with description 'Clear the buffer after reading'. Tool description repeats this with 'Set to true to clear the buffer after reading'. Adds no significant new meaning; 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?

Clearly states it retrieves captured browser dialogs (alert, confirm, prompt) from a circular buffer. Unlike siblings like pilot_handle_dialog which configures handling, this tool retrieves past dialogs.

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 to use when viewing dialogs, checking prompt text, or verifying dialog trigger. References sibling pilot_handle_dialog for auto-handling, providing clear when-to-use guidance.

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

pilot_dragA

Drag one element and drop it onto another element on the page. Use when the user wants to move an element, reorder items in a drag-and-drop list, or interact with a drag-and-drop UI.

Parameters:

  • start_ref: The source element reference from snapshot (e.g., "@e3") or CSS selector to drag from

  • end_ref: The target element reference from snapshot (e.g., "@e5") or CSS selector to drop onto

Returns: Confirmation with source and target refs.

Errors:

  • "Element not found": Either ref is stale. Run pilot_snapshot to get fresh refs.

  • Timeout (5s): The drag operation could not be completed. The elements may not support drag-and-drop.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_refYesSource element ref or CSS selector
end_refYesTarget element ref or CSS selector

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the drag operation, a 5-second timeout, and error conditions (element not found, timeout). It also notes that elements must support drag-and-drop. This is sufficient for a straightforward action tool.

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

Conciseness5/5

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

The description is concise and well-structured: it starts with the action, then usage context, then parameters, returns, and errors. 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?

Given the tool's simplicity and the presence of a good input schema, the description covers the essential behavior, error handling, and return value. It lacks an output schema, but the stated return type ('Confirmation with source and target refs') is sufficient.

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

Parameters4/5

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

The input schema has 100% coverage with descriptions. The description goes beyond by providing examples of refs ('@e3') and stating that they can be CSS selectors. This adds practical guidance over 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 clearly states that the tool drags one element and drops it onto another, using a specific verb and resource. It distinguishes itself from sibling tools like pilot_click or pilot_hover, which involve clicking or hovering rather than drag-and-drop.

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

Usage Guidelines4/5

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

The description explicitly says when to use the tool: 'when the user wants to move an element, reorder items in a drag-and-drop list, or interact with a drag-and-drop UI.' It does not specify when not to use it, but the context is clear and helpful.

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

pilot_element_stateA

Check the current state of an element — whether it is visible, hidden, enabled, disabled, checked, editable, or focused. Use when the user wants to verify an element's condition before interacting with it, check if a button is disabled, confirm a checkbox is checked, or debug why an interaction is failing.

Parameters:

  • ref: Element reference from snapshot (e.g., "@e3") or CSS selector

  • property: The state to check — "visible", "hidden", "enabled", "disabled", "checked", "editable", or "focused"

Returns: Boolean string "true" or "false" indicating the element's state for the requested property.

Errors:

  • "Element not found": The ref is stale. Run pilot_snapshot to get fresh refs.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesElement ref or CSS selector
propertyYesState to check

TDQS

A4.5/5.0
Behavior4/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 it returns a boolean string, lists possible errors, and implies non-destructive read operation. Could mention absence of 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?

Description is concise and well-structured: purpose, usage, parameters, return, errors. Each sentence adds value with no redundancy.

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 2 required parameters and no output schema, description fully covers return type, error handling, and parameter usage. No gaps for a simple query tool.

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

Parameters4/5

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

Schema coverage is 100% (baseline 3). Description adds meaning by explaining ref sources (snapshot or CSS selector) and giving usage examples for property, exceeding schema details.

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 checks element state (visible, hidden, etc.) and lists all possible states. It distinguishes itself from sibling tools like pilot_assert by focusing on querying state rather than asserting conditions.

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

Usage Guidelines4/5

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

The description provides explicit when-to-use scenarios (e.g., verify condition before interaction, debug failure) but does not explicitly state when not to use or suggest alternatives.

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

pilot_evaluateA

Execute a JavaScript expression or function in the browser page context and return the result. Use when the user wants to run custom JavaScript on the page, read or modify DOM elements, extract data, or perform calculations. Supports async/await — use "await" to wait for promises. Multi-line code with await is automatically wrapped in an async IIFE.

Parameters:

  • expression: JavaScript expression to evaluate (e.g., "document.title", "JSON.stringify(localStorage)", "await fetch('/api').then(r => r.json())"). Maximum 50 KB.

Returns: The expression result as a string, or pretty-printed JSON for objects/arrays.

Errors:

  • "Evaluation failed": The JavaScript threw an error. Fix the expression syntax or handle the error in the page context.

  • "Promise rejected": An awaited promise rejected. Check the API endpoint or async logic.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYesJavaScript expression to evaluate (max 50 KB)

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully covers behavior: async/await support, auto-wrapping in IIFE, return format (string or JSON), and two error types with causes. This provides comprehensive 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 well-structured with clear sections: purpose, usage guide, parameter details, return values, errors. Every sentence adds value without redundancy.

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

Completeness5/5

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

Given no output schema, the description adequately explains return values and errors. With only one parameter, all necessary information is present for correct usage.

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 3. The description adds value with concrete examples (document.title, fetch) and async usage context, beyond the schema's maxLength description.

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 'Execute a JavaScript expression or function in the browser page context', providing a specific verb and resource. It distinguishes this tool from siblings as it is the only one that runs custom JavaScript.

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 lists use cases: 'when the user wants to run custom JavaScript, read/modify DOM, extract data, perform calculations'. It does not explicitly state when not to use, but the positive guidance is clear.

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

pilot_extension_statusA

Check if the Pilot Chrome extension is connected and routing commands through the user's real browser. When connected, all navigation, snapshot, click, fill, type, scroll, screenshot, and tab commands route through Chrome — bypassing Cloudflare and bot detection.

Parameters: (none)

Returns: Connection status, port, and instructions for installing the extension if not connected.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: it is a read-only check returning connection status, port, and installation instructions. No side effects or contradictions are present.

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

Conciseness5/5

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

Three sentences front-load the purpose, then explain the benefit, and finally list return values. No waste, every sentence serves a clear role.

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

Completeness5/5

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

The description is complete for a simple zero-parameter tool: it states the purpose, the behavioral context (bypassing detection), and the return values. No gaps given the lack of output schema or complex 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?

The input schema has zero parameters with 100% coverage, so the description adds no new parameter information. It redundantly states 'Parameters: (none)' but does not add value beyond what the schema shows.

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 as checking if the Pilot Chrome extension is connected and routing commands, specifying the benefit of bypassing Cloudflare and bot detection. It distinguishes itself from sibling action tools (e.g., pilot_click, pilot_navigate) by being a status check.

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 explains the context (when connected, commands route through Chrome) which implies using this tool before performing other actions. It does not explicitly state when not to use it or provide alternatives, but the context is clear enough for an AI agent.

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

pilot_file_uploadA

Upload one or more files to a file input element on the page. Use when the user wants to attach files, upload images, or submit documents through a file input field.

Parameters:

  • ref: The file input element reference from snapshot (e.g., "@e8") or a CSS selector pointing to an

  • paths: Array of absolute file paths to upload (e.g., ["/home/user/photo.png", "/home/user/doc.pdf"])

Returns: Confirmation with file names and sizes uploaded.

Errors:

  • "File not found": One or more paths do not exist on the filesystem. Verify the file paths.

  • "Element not found": The ref is stale or does not point to a file input. Run pilot_snapshot.

  • "Not a file input": The element is not an .

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesFile input element ref or CSS selector
pathsYesFile paths to upload

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It includes error cases and return values but does not disclose details like whether it overwrites existing files, handles multiple files simultaneously, or any permission/auth requirements. The description is adequate but not comprehensive.

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

Conciseness5/5

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

The description is concise, well-structured with clear sections (Usage, Parameters, Returns, Errors), and every sentence is informative without redundancy.

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

Completeness5/5

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

Despite no output schema, the description explains the return value (confirmation with file names and sizes) and lists all possible errors. For a two-parameter tool with straightforward behavior, this is complete and actionable.

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%, but the description adds value by clarifying that 'ref' can be an element ref or CSS selector and that 'paths' are absolute file paths, with examples. This goes beyond the schema's basic description.

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 'Upload one or more files to a file input element on the page.' It uses a specific verb and resource, and the tool's purpose is clearly distinct from siblings (e.g., no other upload 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?

The description says 'Use when the user wants to attach files, upload images, or submit documents through a file input field.' This provides clear context for when to use it, though it does not explicitly mention when not to use or name alternatives (but no direct alternatives exist among siblings).

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

pilot_fillA

Fill an input or textarea with new text, replacing any existing content. Use when the user wants to enter text into a form field, search box, or editable element. Prefer pilot_fill over pilot_type for inputs because it is faster and clears existing content automatically.

Parameters:

  • ref: Element reference from snapshot (e.g., "@e12") or a CSS selector (e.g., "#email")

  • value: The text to fill into the element

Returns: Confirmation with the filled element ref.

Errors:

  • "Element not found": The ref is stale. Run pilot_snapshot to get fresh refs.

  • "Element is not editable": The element is read-only or disabled. Try pilot_click to enable it first.

  • Timeout (5s): The element could not be filled.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesElement ref (@e3) or CSS selector
valueYesValue to fill

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description discloses key behaviors: replaces content, faster than type, 5s timeout, and common errors. Lacks details on event firing or custom elements, but sufficient for primary use.

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?

Well-structured with clear sections: purpose, usage, parameters, return, errors. No redundant sentences; front-loaded with primary action.

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 fill tool with 2 required params and no output schema, the description covers all needed context: purpose, use cases, parameter meaning, return, and errors. Complete for task execution.

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 3. Description adds examples for ref but no additional semantic meaning beyond schema.

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

Purpose5/5

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

The description clearly states the tool fills an input or textarea, replacing existing content, and explicitly distinguishes it from sibling pilot_type by noting speed and auto-clearing.

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

Usage Guidelines5/5

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

Provides explicit when-to-use scenarios (form field, search box, editable element), recommends preferring over pilot_type, and includes error handling guidance for element not found or not editable.

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

pilot_findA

Find an element by visible text, label, placeholder, or role — without running a full snapshot. Use when you know what you want to click or fill but don't need to see the entire page tree. Returns a @eN ref immediately usable by pilot_click, pilot_fill, pilot_hover, and other interaction tools. Saves tokens compared to pilot_snapshot when you only need one element.

Parameters:

  • text: Visible text content of the element (e.g., "Sign in", "Submit")

  • label: ARIA label or associated text (e.g., "Email address", "Password")

  • placeholder: Input placeholder text (e.g., "Search...", "Enter email")

  • role: ARIA role to match (e.g., "button", "link", "textbox") — combine with text for precision

  • exact: Set to true for exact text/label match (default: false, substring match)

Returns: A @eN ref for the found element and a description of what was found.

Errors:

  • "Element not found": No element matched the criteria. Verify the text/label or run pilot_snapshot to inspect the page.

  • "Multiple elements found": More than one element matched. Add role or use exact=true to narrow it down.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoVisible text content to find
labelNoARIA label or <label> text
placeholderNoInput placeholder text
roleNoARIA role (e.g., "button", "link", "textbox")
exactNoExact match (default: false = substring)

TDQS

A4.8/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 discloses that the tool returns a @eN ref immediately usable, is lightweight (no full snapshot), and lists possible errors. It doesn't mention idempotency or side effects, but as a find operation this is acceptable.

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 well-structured with a clear intro, use case, parameter list with examples, return info, and errors. Every sentence adds value without being verbose. It's appropriately sized for the complexity.

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

Completeness5/5

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

Despite no output schema, the description covers return value (a @eN ref and description), lists errors with guidance, and explains how the tool fits with siblings. This is sufficient for an agent to invoke correctly.

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 100%, but the description adds significant value with examples for each parameter (e.g., 'Sign in', 'Email address'), explains the 'exact' parameter, and suggests combining role with text for precision. This exceeds 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 clearly states it finds an element by visible text, label, placeholder, or role without a full snapshot, distinguishing it from pilot_snapshot. The verb 'find' and resource 'element' are specific, and the scope is well-defined.

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?

The description explicitly tells when to use ('when you know what you want to click or fill but don't need to see the entire page tree') and notes it saves tokens compared to pilot_snapshot. It also lists sibling interaction tools that use the returned ref, providing clear context for selection.

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

pilot_forwardA

Navigate forward to the next page in browser history. Use when the user wants to go forward after using pilot_back.

Parameters: (none)

Returns: The URL of the page after navigating forward.

Errors:

  • "No next page in history": There is nothing to go forward to. Use pilot_navigate instead.

  • Timeout (15s): The next page took too long to load.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

Despite no annotations, the description discloses behavior (navigates forward, returns URL), timeout (15s), and error conditions, giving full transparency for a simple tool.

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

Conciseness5/5

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

The description is concise and well-structured with sections for usage, parameters, returns, and errors. Every sentence adds value without redundancy.

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

Completeness5/5

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

For a zero-parameter, simple tool, the description covers purpose, usage guidance, return value, and errors. It is complete and references sibling tools appropriately.

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, and schema coverage is 100% by default. The description correctly notes 'Parameters: (none)', adding no extra information but meeting baseline for zero-param tools.

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

Purpose5/5

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

The description clearly states the action ('Navigate forward to the next page in browser history') and distinguishes from siblings by referencing pilot_back and pilot_navigate.

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 explicitly says when to use ('after using pilot_back') and what to do if there is no next page ('use pilot_navigate instead'), providing clear alternatives.

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

pilot_frame_resetA

Switch the browser context back to the main page frame after working inside an iframe. Use when the user wants to return to the main page after interacting with an iframe. All refs are cleared — run pilot_snapshot to get fresh refs for the main page content.

Parameters: (none)

Returns: Confirmation of switching to the main frame, with a reminder to run pilot_snapshot.

Errors: None — always succeeds.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Discloses that all refs are cleared and that the tool always succeeds. With no annotations, this provides necessary behavioral context for a state-reset 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?

Description is concise, front-loads purpose, then covers usage, side effects, and return value. Every sentence adds value without redundancy.

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?

Covers behavior, side effects (refs cleared), follow-up action, return value, and error behavior. No gaps for a simple tool with no parameters or output schema.

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

Parameters4/5

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

No parameters exist, so the description correctly states that. Baseline score of 4 is appropriate as schema is empty and description does not need to add param details.

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

Purpose5/5

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

Clearly states the tool switches browser context back to the main page frame after working inside an iframe. Distinguishes from sibling pilot_frame_select by focusing on resetting context.

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

Usage Guidelines4/5

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

Explicitly says when to use (after interacting with an iframe) and provides a follow-up action (run pilot_snapshot). Could be improved by stating when not to use, but context is sufficient.

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

pilot_framesA

List all frames (iframes) on the current page with their indices, names, and URLs. Use when the user wants to see what iframes exist on the page, find an iframe to interact with, or verify the page structure before switching frame context. The main frame is always index 0. Use pilot_frame_select to switch into an iframe.

Parameters: (none)

Returns: Numbered list of frames showing index, type ([main] or [iframe name="..."]), URL, and an arrow (→) marking the currently active frame. Returns "(no iframes — only the main frame)" if no iframes exist.

Errors: None.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

Describes exactly what the tool returns (numbered list with index, type, URL, active frame arrow) and what happens when no iframes exist. States 'Errors: None', so the user knows it's safe. Even without annotations, the description fully discloses 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 very concise, with each sentence adding value. It is front-loaded with the main purpose, then usage guidance, then returns. No extraneous text.

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 tool with zero parameters and no output schema, the description fully explains the return format and edge cases. No additional information is needed.

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

Parameters4/5

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

No parameters exist, and schema coverage is 100%. Per rules, baseline is 4. The description adds no parameter detail because none are 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 that the tool lists all frames on the current page with indices, names, and URLs. It distinguishes itself from sibling tools like pilot_frame_select by explicitly mentioning that tool for switching contexts.

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

Usage Guidelines5/5

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

Provides explicit when-to-use scenarios: to see existing iframes, find one to interact with, or verify page structure before switching. Also tells the user to use pilot_frame_select to switch, giving clear alternatives.

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

pilot_frame_selectA

Switch the browser context into an iframe so that pilot_snapshot, pilot_click, pilot_fill, and other tools operate inside that frame instead of the main page. Use when the user wants to interact with elements inside an embedded iframe, read iframe content, or fill forms within an iframe. After switching, all refs are cleared — run pilot_snapshot to get fresh refs for the iframe contents. Use pilot_frames to list available frames first.

Parameters:

  • index: Frame index number from pilot_frames output (e.g., 1, 2)

  • name: Frame name attribute (alternative to index)

Returns: Confirmation with the frame index/name and its URL, plus a reminder to run pilot_snapshot for fresh refs.

Errors:

  • "Frame not found": The index or name does not match any frame. Run pilot_frames to see valid indices and names.

  • "Provide index or name": Neither parameter was supplied.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexNoFrame index from pilot_frames output
nameNoFrame name attribute

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: it clears refs after switching, requires a fresh snapshot, and lists error conditions. This provides the agent with necessary 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.

Conciseness4/5

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

The description is well-structured with sections for use, parameters, return, and errors. It is clear but slightly verbose; some sentences could be condensed. Overall, it earns a 4.

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 simplicity and no output schema, the description covers expectations (return value, error cases, post-conditions) adequately. It is complete for an agent to use correctly.

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%, but the description adds meaning by specifying that index comes from pilot_frames output and that name is an alternative. It clarifies the relationship between 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 action ('Switch the browser context into an iframe') and the specific tools affected (pilot_snapshot, pilot_click, etc.). It distinguishes from sibling tools like pilot_frame_reset and pilot_frames.

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 explicitly says when to use the tool (interacting with iframes, reading content, filling forms) and advises using pilot_frames first and running pilot_snapshot after. It does not explicitly state when NOT to use it, but the guidance is sufficient.

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

pilot_geolocationA

Set or clear the browser's reported GPS coordinates to simulate a specific geographic location. Use when the user wants to test location-aware apps, see location-specific content, or simulate a user in a different country/city.

Parameters:

  • latitude: Latitude in decimal degrees (e.g., 19.4326 for Mexico City, 37.7749 for San Francisco)

  • longitude: Longitude in decimal degrees (e.g., -99.1332 for Mexico City, -122.4194 for San Francisco)

  • accuracy: Location accuracy in meters (default: 10)

  • clear: Set to true to remove the fake geolocation and revert to default behavior

Returns: Confirmation of the geolocation set or cleared.

Errors:

  • "Browser not launched": Navigate to a URL first.

  • Geolocation errors may occur if the page requires HTTPS for geolocation access.

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeNoLatitude in decimal degrees
longitudeNoLongitude in decimal degrees
accuracyNoAccuracy in meters (default: 10)
clearNoRemove fake geolocation

TDQS

A4.3/5.0
Behavior3/5

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

No annotations, so description carries full burden. Discloses simulation, clear option, and accuracy default. However, lacks details on persistence, page-specific effects, or HTTPS requirement beyond a brief error mention.

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 well-structured with sections (purpose, parameters, returns, errors). Every sentence adds value; no fluff or 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?

No output schema, but return behavior is described as confirmation. Errors are listed. The tool is simple, so completeness is high, though could mention whether location is overridden per session or permanently.

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 covers all 4 params with descriptions. Description adds examples for latitude/longitude, clarifies default for accuracy, and explains clear behavior, providing significant 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?

Description clearly states verb 'Set or clear browser's reported GPS coordinates' with specific resource (geolocation). It distinguishes from siblings as no other tool simulates location.

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

Usage Guidelines4/5

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

Provides explicit use cases (testing location-aware apps, simulating different locations). Lacks explicit when-not-to-use or alternatives, but errors give some guidance (e.g., navigate first).

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

pilot_getA

Navigate to a URL and return its full readable content + interactive elements in one call.

Use this as the primary tool for "go to X and find Y" read tasks. It combines navigation and content extraction, eliminating the need for a separate snapshot call.

Parameters:

  • url: The URL to fetch

Returns: Page title, readable body text (up to 1500 chars), and interactive elements. Enough context to answer most read questions without additional tool calls.

Errors:

  • Timeout (15s): The page took too long to load.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to navigate to

TDQS

A4.2/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 and covers key behaviors: returns title, body text (up to 1500 chars), interactive elements, and timeout error. It does not mention non-destructive nature, but the read-only implication 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?

The description is concise and well-structured with clear sections for parameters, returns, and errors. Every sentence adds value, and the main action is 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 no output schema and no annotations, the description sufficiently explains the tool's purpose, return values (with constraints), and error conditions. It could be more specific about the format of interactive elements, but overall it is 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?

The schema already describes the single 'url' parameter with 'URL to navigate to'. The description adds only 'The URL to fetch', which is equivalent, providing minimal extra value 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 that the tool navigates to a URL and returns readable content plus interactive elements. It explicitly differentiates from siblings like 'pilot_navigate' and 'pilot_snapshot' by combining navigation and extraction into one call.

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 explicitly states 'Use this as the primary tool for 'go to X and find Y' read tasks' and notes it eliminates the need for a separate snapshot call, providing clear guidance for read scenarios.

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

pilot_handle_dialogA

Configure automatic handling of native browser dialogs (alert, confirm, prompt) that would otherwise block page interaction. Use when the user wants to pre-configure dialog behavior so alerts/confirms do not pause automation, or provide a default text for prompt dialogs. Dialog messages are still captured in the dialog buffer (see pilot_dialog).

Parameters:

  • accept: true to automatically accept all dialogs, false to automatically dismiss them

  • prompt_text: Text to automatically enter for prompt-type dialogs (omit for empty string)

Returns: Confirmation of the configured dialog behavior.

Errors: None — this is a configuration-only call that always succeeds.

ParametersJSON Schema
NameRequiredDescriptionDefault
acceptYestrue to auto-accept, false to auto-dismiss
prompt_textNoText to provide for prompt dialogs

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description explains it is a configuration-only call that always succeeds, captures dialog messages in buffer, and default behavior for prompt_text. Sufficient for a read-like configuration 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?

Four well-organized sentences covering purpose, usage, parameters, return, and errors with no redundancy or fluff.

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 2-parameter configuration tool with no output schema and no annotations, the description covers all needed aspects: purpose, usage, parameter details, return, and error behavior.

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

Parameters4/5

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

Schema coverage is 100%, but description adds value by clarifying prompt_text defaults to empty string when omitted and the effect of accept boolean on all dialog types.

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 configures automatic handling of native browser dialogs (alert, confirm, prompt) that block page interaction, using strong verb 'configure' and distinguishing it from sibling pilot_dialog which captures messages.

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

Usage Guidelines4/5

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

Explicitly says 'Use when the user wants to pre-configure dialog behavior...' and references pilot_dialog for message capture, providing clear context and differentiation, though no explicit when-not-to-use.

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

pilot_handoffA

Open a visible (headed) browser window preserving all current state — cookies, tabs, and localStorage. Use when the user is blocked by CAPTCHAs, bot detection, or complex auth flows that require manual intervention in a headed browser. After the user solves the challenge, call pilot_resume to reclaim automated control.

Parameters: (none)

Returns: Confirmation that the browser is now in headed mode with instructions to call pilot_resume when done.

Errors:

  • "Browser not initialized": Call pilot_navigate first to start a browser session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided, but description discloses that it preserves state, requires manual intervention, and that pilot_resume must follow. Misses potential side effects like automation pause, but still good.

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

Conciseness5/5

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

Three concise sentences, front-loaded with main action, then usage, then returns and errors. No extraneous content.

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?

Covers purpose, usage, return value, and error conditions. No output schema needed given description's scope.

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 description adds no param info beyond schema coverage (100%). 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 clearly states it opens a headed browser preserving state, and distinguishes from sibling tools like pilot_resume. The verb 'open' and resource 'headed browser window' are specific.

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 to use when blocked by CAPTCHAs, bot detection, or complex auth flows, and instructs to call pilot_resume after. Includes error handling instructions.

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

pilot_hoverA

Hover the mouse over an element, triggering hover states, tooltips, and dropdown menus. Use when the user wants to reveal hidden content, trigger a CSS :hover effect, or inspect tooltip text.

Parameters:

  • ref: Element reference from snapshot (e.g., "@e7") or a CSS selector

Returns: Confirmation with the hovered element ref.

Errors:

  • "Element not found": The ref is stale. Run pilot_snapshot to get fresh refs.

  • Timeout (5s): The element could not be hovered — it may be off-screen or detached.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesElement ref (@e3) or CSS selector

TDQS

A4.3/5.0
Behavior4/5

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

Discloses trigger events (hover states, tooltips), return type (confirmation with ref), and two error conditions (stale ref, timeout). No annotations provided, so extra burden carried well.

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?

Well-structured with sections for purpose, usage, parameters, returns, and errors. Some redundancy; could be slightly more concise but overall 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?

Covers essential aspects: purpose, when to use, parameter meaning, return value, and common errors. No output schema, so description compensates adequately.

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 100% (baseline 3). Description adds value by clarifying parameter format: 'Element reference from snapshot (e.g., @e7) or a CSS selector', explaining source and usage.

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

Purpose5/5

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

Describes specific action (hover) and resource (element), with explicit triggering of hover states, tooltips, and dropdowns. Clearly distinguishes from sibling tools like click, fill, etc.

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?

States when to use: to reveal hidden content, trigger :hover, or inspect tooltip text. Lacks explicit when-not-to-use or alternatives, but sufficient for context.

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

pilot_import_cookiesA

Import cookies from a real Chromium browser (Chrome, Arc, Brave, Edge, Comet) by decrypting the browser's cookie database and adding them to the headless session. Use when the user wants to transfer authentication state from their real browser, avoid re-login, access authenticated pages, or work with session cookies from an existing browser profile.

Parameters:

  • browser: Browser name to import from — "chrome", "arc", "brave", "edge", or "comet". Auto-detects if omitted

  • domains: Array of cookie domains to import (e.g., [".github.com", ".google.com"]). Omit to import ALL cookies (up to max_cookies)

  • profile: Browser profile name to read cookies from (default: "Default"). Use list_profiles to see available profiles

  • list_browsers: Set to true to list installed Chromium browsers on the system instead of importing

  • list_profiles: Set to true with browser to list available profiles for that browser

  • list_domains: Set to true with browser to list cookie domains available in that browser's database

Returns:

  • Import mode: Count of cookies imported, per-domain breakdown, and count of any that failed to decrypt

  • list_browsers mode: List of installed browser names

  • list_profiles mode: List of profiles with display names

  • list_domains mode: Top 50 cookie domains with counts

Errors:

  • "No Chromium browsers found": No supported browsers are installed. Check the system.

  • "Browser not found": The specified browser is not installed. Use list_browsers to see available options.

  • "Cookie database not found": The browser's cookie file does not exist at the expected path. Check the profile name.

  • Decryption failures: Some cookies may fail to decrypt (e.g., on Linux without keyring access). The count is reported.

ParametersJSON Schema
NameRequiredDescriptionDefault
browserNoBrowser name (chrome, arc, brave, edge, comet). Auto-detects if omitted.
domainsNoCookie domains to import (e.g. [".github.com"]). Omit to import ALL cookies.
max_cookiesNoMax cookies to import when domains is omitted (default: 500)
profileNoBrowser profile name (default: "Default")
list_browsersNoList installed browsers instead of importing
list_profilesNoList available profiles for the specified browser
list_domainsNoList cookie domains available in the browser

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 full burden. It explains the decryption process, lists return values for each mode, and documents common errors including decryption failures on Linux. It doesn't cover potential side effects (e.g., impacting existing cookies) but the import operation is clearly described.

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 somewhat verbose with a paragraph and multiple bullet lists. While well-structured, it could be more concise. The purpose paragraph is front-loaded, but the extensive error list adds length.

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

Completeness5/5

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

Given no output schema, the description sufficiently covers return values for all modes and common errors. Parameters are all documented with practical examples. The tool's behavior across different modes (import vs. list) is fully explained.

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

Parameters4/5

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

Schema coverage is 100% with descriptions. The description adds extra context: browser auto-detection, domains as array, profile default, and list flags. It also explains the behavior of omitted parameters (e.g., import all cookies if domains omitted).

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 that the tool imports cookies from real Chromium browsers by decrypting their database, providing a specific verb (import) and resource (cookies from real browser). It distinguishes from sibling tools like pilot_cookies and pilot_auth by focusing on transferring authentication state from a local browser.

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

Usage Guidelines4/5

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

The description gives explicit use cases: 'transfer authentication state from their real browser, avoid re-login, access authenticated pages, or work with session cookies.' It also mentions modes like list_browsers for discovery, but doesn't explicitly contrast with alternatives.

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

pilot_interceptA

Intercept network requests matching a URL pattern and respond with custom status, headers, and body. Use when the user wants to mock API responses, simulate error states (401, 500), test loading states, or run frontend tests without a real backend. All requests matching the pattern are fulfilled with the given response until cleared.

Parameters:

  • pattern: URL glob pattern to intercept (e.g., "**/api/users", "/auth")

  • response: Custom response — status (default 200), body (JSON string or text), headers, contentType

  • clear: Set to true to remove all active intercepts

Returns:

  • Add mode: Confirmation and list of active intercepts.

  • clear mode: Confirmation that all intercepts were removed.

Errors:

  • "Browser not launched": Navigate to a URL first.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternNoURL glob pattern to intercept (e.g., "**/api/users")
responseNoCustom response to return for matched requests
clearNoRemove all active intercepts

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description must disclose behavior. It explains interception persists until cleared, describes add and clear modes, and lists possible errors. However, it does not clarify whether adding a new intercept clears existing ones or how multiple intercepts interact.

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 well-structured with sections for purpose, parameters, returns, and errors. It is front-loaded with core functionality. However, some parameter descriptions repeat schema content, and the examples could be more 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?

Given no output schema, the description clearly explains return values for both add and clear modes, lists errors, and details all parameters including nested objects. It provides sufficient context for an AI to invoke the tool 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?

Input schema has 100% description coverage, so baseline is 3. The description adds some extra context (default status, examples) but largely reiterates schema descriptions. Value added is moderate.

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 intercepts network requests and allows custom responses. It provides specific use cases (mock API, simulate errors, test loading) that distinguish it from other browser automation tools like pilot_navigate or pilot_click.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool (mock API responses, simulate error states, test loading states) but does not provide when-not-to-use or mention alternative tools. However, the context is clear and sufficient for typical use cases.

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

pilot_navigateA

Navigate the browser to a URL and wait for DOM content to load. Use when the user wants to go to a specific webpage, URL, or link.

For read tasks ("go to X and tell me Y"), prefer pilot_get — it returns full readable content + interactive elements in one call, eliminating a follow-up snapshot call.

Parameters:

Returns: Confirmation message with the HTTP status code, content preview, and interactive elements.

Errors:

  • "Invalid URL": The URL format is malformed. Provide a complete URL including the protocol.

  • Timeout (15s): The page took too long to load. Try pilot_navigate again or check the URL.

  • "Navigation denied": The URL was rejected by security validation (e.g., file:// on restricted origins).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to navigate to (e.g., "https://example.com")

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided, but description discloses wait for DOM content, return value (status code, preview, interactive elements), and errors with timeouts and security restrictions. Lacks detail on side effects like page history or cookies.

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 concise, front-loaded with purpose, and structured into clear sections (usage, parameters, returns, errors) with no wasted words.

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?

Covers all necessary aspects for a navigation tool: purpose, alternative usage, parameter, return value, and common errors. No output schema, but return format is described adequately.

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 has 100% coverage with url parameter. Description adds value by mentioning relative paths and linking to error guidance, going 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 states specific verb (navigate) and resource (browser to a URL), and differentiates from sibling pilot_get for read tasks.

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

Usage Guidelines5/5

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

Explicitly states when to use (going to a webpage) and when not to (prefer pilot_get for read tasks), with clear alternatives.

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

pilot_networkA

Retrieve network requests (XHR, fetch, navigation, static assets) from a circular buffer. Use when the user wants to debug API calls, check request/response status codes, monitor network activity, or verify that a request was made after an action.

Parameters:

  • clear: Set to true to clear the buffer after reading (useful for isolating new requests after an action)

Returns: List of requests showing method, URL, status code, duration in ms, and response size in bytes. Or "(no network requests)" if the buffer is empty.

Errors: None — returns empty message if no entries exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
clearNoClear the buffer after reading

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries full weight. It discloses that data comes from a circular buffer, the clear parameter behavior, return format (method, URL, status, duration, size), and error handling (returns empty message). It does not mention buffer size or concurrency effects, but overall it is 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 succinct and well-structured: a summary sentence, usage guidance, parameter explanation, return description, and error handling. Every sentence provides 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?

Given the simplicity of the tool (one parameter, no output schema), the description covers purpose, usage, parameters, return format, and errors. It does not mention buffer capacity or retention policy, but it is sufficient for typical debugging scenarios.

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

Parameters4/5

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

Schema coverage is 100%, providing baseline 3. The description adds meaning for the 'clear' parameter: 'useful for isolating new requests after an action', which helps in deciding when to set it to true.

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 'Retrieve network requests (XHR, fetch, navigation, static assets) from a circular buffer.' The verb 'retrieve' and resource 'network requests' are specific. Among siblings like pilot_intercept and pilot_console, this tool's purpose is distinct and unambiguous.

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

Usage Guidelines4/5

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

The description explicitly lists use cases: debug API calls, check status codes, monitor network activity, verify requests after actions. It does not explicitly mention when not to use it or alternatives, but the given contexts are clear and actionable.

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

pilot_page_attrsA

Get all HTML attributes of a specific element as a JSON object. Use when the user wants to inspect an element's attributes (data-, aria-, class, id, href, src, etc.), check custom data attributes, or debug attribute-related issues.

Parameters:

  • ref: Element reference from snapshot (e.g., "@e3") or CSS selector

Returns: JSON object mapping attribute names to their values.

Errors:

  • "Element not found": The ref is stale. Run pilot_snapshot to get fresh refs.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesElement ref or CSS selector

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavioral traits. It discloses the return type (JSON object) and error handling but does not explicitly state that the operation is read-only and non-destructive, which is important for a read tool.

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

Conciseness5/5

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

The description is concise and well-structured: purpose, usage, parameters, returns, errors. Every sentence adds value, and key information is 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?

The tool has one required parameter and no output schema; the description explains the return format and error conditions adequately. It could mention that the element must exist in the DOM, but overall it is complete for its complexity.

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% for the single parameter 'ref'. The description expands on the schema by giving examples ('@e3' and CSS selector), adding clarity beyond the schema's minimal description.

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 'Get all HTML attributes of a specific element as a JSON object,' providing a clear verb and resource. It distinguishes from sibling tools that retrieve other page properties (CSS, HTML, text, links, forms).

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

Usage Guidelines4/5

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

The description advises when to use the tool (inspect attributes, check custom data, debug) and includes error conditions (stale ref). It does not explicitly exclude scenarios, but the sibling list implies context.

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

pilot_page_cssA

Get the computed CSS property value for a specific element. Use when the user wants to check styling details (colors, fonts, dimensions, spacing), debug CSS issues, or verify that styles are applied correctly. Returns the final computed value after all CSS rules and inheritance are resolved.

Parameters:

  • ref: Element reference from snapshot (e.g., "@e3") or CSS selector

  • property: CSS property name in kebab-case or camelCase (e.g., "color", "font-size", "backgroundColor", "display")

Returns: The computed CSS property value as a string (e.g., "rgb(255, 0, 0)", "16px", "flex").

Errors:

  • "Element not found": The ref is stale. Run pilot_snapshot to get fresh refs.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesElement ref or CSS selector
propertyYesCSS property name (e.g. color, font-size)

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries burden. Discloses returns final computed value after inheritance, error conditions (stale ref), and return format. Omits that it is read-only, but for a read operation this is adequate.

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

Conciseness5/5

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

Well-structured: purpose in first sentence, then usage guidance, parameter details, return value, errors. No redundant sentences. 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?

For a simple read tool with no output schema, the description covers purpose, usage, parameters, return, and errors. No gaps given complexity.

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 has 100% coverage; description adds value by explaining ref can be snapshot ref or CSS selector with examples, and property accepts kebab-case or camelCase with examples. Baseline 3 plus extra context yields 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?

Clearly states 'Get the computed CSS property value for a specific element.' Uses specific verb+resource, distinguishes from siblings like pilot_page_attrs (attributes) and pilot_element_state (state). Lists use cases: styling details, debug CSS, verify styles.

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

Usage Guidelines4/5

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

Explicitly says when to use ('Use when user wants to check styling details...'). Does not explicitly exclude alternatives like pilot_element_state for visibility, but context is clear.

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

pilot_page_diffA

Generate a text diff comparing the visible content of two URLs — useful for comparing staging vs production, before vs after deployments, or detecting content differences between pages. Use when the user wants to see what text differs between two pages, verify a deployment did not break content, or compare two versions of the same site. Strips scripts, styles, and SVG before comparing.

Parameters:

  • url1: The first URL to navigate to and capture (shown as removed lines "---" in the diff)

  • url2: The second URL to navigate to and capture (shown as added lines "+++" in the diff)

Returns: Unified diff text showing lines removed from url1 and added in url2.

Errors:

  • "Invalid URL": Either URL is malformed. Provide complete URLs with protocol.

  • Timeout (15s): A page took too long to load. Check the URL or network connectivity.

ParametersJSON Schema
NameRequiredDescriptionDefault
url1YesFirst URL
url2YesSecond URL

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: it strips scripts, styles, and SVG before comparing. It describes the return format (unified diff text with '---' and '+++') and lists error scenarios (Invalid URL, timeout). This provides rich 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.

Conciseness4/5

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

The description is well-structured with a clear purpose sentence, use cases, behavioral note, parameter definitions, return description, and errors. It is concise but not overly terse; every sentence earns its place. Could be slightly more compact but excellent overall.

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 simplicity (2 params, no nested objects, no output schema), the description is complete. It covers purpose, usage, behavior, errors, parameter semantics, and return format. No output schema exists, so the return description is necessary and provided.

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

Parameters4/5

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

Schema description coverage is 100%, but the description adds significant value by explaining that url1 corresponds to removed lines and url2 to added lines, and by detailing error conditions. This goes beyond the schema's minimal descriptions.

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

Purpose5/5

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

The description clearly states the tool generates a text diff comparing visible content of two URLs. It uses specific verbs ('Generate a text diff') and identifies the resource ('visible content of two URLs'). It distinguishes from siblings like `pilot_snapshot_diff` by focusing on raw URL content rather than snapshots.

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 provides use cases (comparing staging vs production, before vs after deployments) and tells the agent when to use it ('when the user wants to see what text differs'). It lacks explicit 'when not to use' but the given context is sufficient. No direct comparison to sibling `pilot_snapshot_diff` but implied.

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

pilot_page_formsA

Extract all form elements on the page as structured JSON with their types, names, IDs, and current values. Use when the user wants to understand form structure, see all input fields with their current values, check form methods and actions, or plan form filling automation. Password field values are redacted for security.

Parameters: (none)

Returns: JSON array of form objects, each containing the form's index, action URL, method, id, and an array of field objects with tag, type, name, id, placeholder, required, and value.

Errors: None — returns empty array "[]" if no forms exist on the page.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so the description carries full burden. It discloses that password field values are redacted for security and explains error handling (returns empty array). This is transparent, though additional details on performance or side effects could be added.

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 with well-organized sections: purpose, usage, parameters, return, and errors. Every sentence adds value without redundancy or fluff.

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 has no parameters and no output schema, the description fully documents return structure and error behavior. It is complete for its low complexity.

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, and the description confirms 'Parameters: (none)'. It adds value by describing the return format in detail, which compensates for zero 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 tool extracts all form elements as structured JSON, specifying the data fields (types, names, IDs, current values) and differentiates it from sibling tools like pilot_page_text or pilot_page_links that handle other page content.

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

Usage Guidelines4/5

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

The description explicitly lists use cases: understanding form structure, checking input values, form methods/actions, and planning automation. While it doesn't list when not to use it or name alternatives, the context is clear and sufficient.

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

pilot_page_htmlA

Get innerHTML of a selector/ref, or full page HTML if none provided.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoElement ref or CSS selector
max_charsNoMax characters to return (default: 20000)

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided, so description bears full responsibility. Only states basic operation without disclosing potential issues like performance impact, error behavior (e.g., if ref doesn't exist), or that max_chars may truncate HTML. Lacks sufficient behavioral detail.

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, front-loaded with verb, no redundant words. Maximally concise while conveying essential 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?

For a simple read tool with two optional parameters and no output schema, the description is sufficient. Could mention max_chars default, but schema covers it. Overall adequately complete.

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

Parameters4/5

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

Schema covers both parameters with descriptions. The description adds value by clarifying that omitting 'ref' returns full page HTML, which is not in the schema. Enhances understanding beyond the schema.

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

Purpose5/5

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

Clearly states the action ('Get innerHTML') and the resource ('selector/ref or full page HTML'). Distinguishes from sibling tools like pilot_page_text (text) and pilot_snapshot (structured snapshot) by focusing on raw HTML.

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 context (get HTML of element or full page) but does not explicitly state when to use this tool versus alternatives like pilot_page_text or pilot_snapshot. No exclusions or prerequisites.

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

pilot_page_textA

Extract clean text from the page (strips script/style/noscript/svg).

ParametersJSON Schema
NameRequiredDescriptionDefault
max_charsNoMax characters to return (default: 20000). Prevents token bloat on large pages.

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 should disclose behavioral traits. It mentions stripping but not whether it waits for page load, handles dynamic content, or returns only visible text. The max_chars limits are noted, but overall transparency is limited.

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 clear and front-loaded. Every word is meaningful with 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?

No output schema is provided, so the description should explain the return format (plain text) and handle edge cases (empty page, very large pages). It mentions max_chars but lacks specifics on output structure or error behavior.

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

Parameters4/5

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

Schema coverage is 100%, and the description adds context: default value of 20000 and the purpose of preventing token bloat. This goes beyond the schema's description.

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

Purpose5/5

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

The description clearly states the tool extracts clean text and specifies what it strips (script/style/noscript/svg), distinguishing it from siblings like pilot_page_html or pilot_page_links.

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 pilot_page_html or pilot_find. An agent would benefit from knowing this is for plain text extraction, not for structured content.

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

pilot_pdfA

Save the current page as a PDF document in A4 format. Use when the user wants to export the page as a downloadable PDF, save a receipt, or archive a page for offline reading.

Parameters:

  • output_path: File path to save the PDF (default: /tmp/pilot-page.pdf). Must be within the allowed output directory

Returns: Confirmation with the file path where the PDF was saved.

Errors:

  • "Output path must be within ...": The path is outside the allowed directory. Set PILOT_OUTPUT_DIR or use /tmp.

  • "Page is not HTML": The current page is a non-HTML resource (e.g., a binary download) and cannot be exported as PDF.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathNoOutput file path

TDQS

A4.4/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 full burden. It discloses default behavior (A4 format, default output path), return value (confirmation with file path), and error conditions ('Output path must be within ...', 'Page is not HTML'). It does not explicitly state that the tool does not modify browser state, but the mutation is limited to file system write, which is implied.

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, front-loading the main purpose, then providing clear sections for parameters and errors. It is appropriately sized for the tool's simplicity, though the error list could be slightly trimmed without losing value.

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

Completeness4/5

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

Given no output schema and one parameter, the description adequately covers usage, return value, and errors. It could mention that the PDF uses default print settings and that the page must be HTML, but those are already implied by the error list. Overall, it provides sufficient context for correct invocation.

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?

The input schema provides minimal description for 'output_path' ('Output file path'). The description adds significant value: default value (/tmp/pilot-page.pdf), directory constraint, and implied usage. With 100% schema coverage, the description elevates understanding beyond the schema's minimal description.

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 'Save the current page as a PDF document in A4 format' which specifies the action, resource (current page), and format. This distinguishes it from other pilot tools like pilot_screenshot (image) or pilot_page_text (text extraction).

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

Usage Guidelines4/5

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

The description explicitly provides use cases: 'Use when the user wants to export the page as a downloadable PDF, save a receipt, or archive a page for offline reading.' It does not, however, mention when not to use or alternative tools, but given the sibling context, the differentiation is clear.

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

pilot_perfA

Measure page load performance metrics from the Navigation Timing API. Use when the user wants to diagnose slow page loads, benchmark performance, or identify bottlenecks in DNS lookup, connection, server response, or DOM parsing.

Parameters: (none)

Returns: Table of timing metrics in milliseconds — dns, tcp, ssl, ttfb (time to first byte), download, domParse, domReady, and load.

Errors:

  • "No navigation timing data available": The page has not completed a navigation or was loaded via non-standard means. Navigate to the page first with pilot_navigate, then reload.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full behavioral disclosure. It describes return values and an error condition, but does not explicitly state that the tool is read-only or has no side effects. It implies a need for prior navigation, but overall disclosure 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 well-structured into clear paragraphs: purpose/use, parameters (none), returns, and errors. It is concise, front-loaded with the main purpose, and 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?

For a tool with no parameters and no output schema, the description covers the return metrics and a common error scenario. It is complete enough for an agent to invoke correctly, though additional context on interpreting the metrics would be welcome but not essential.

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 description correctly states 'Parameters: (none)'. With no parameters, the baseline score is 4, and the description adds clarity by listing the output and error cases, which suffices.

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 that the tool measures page load performance metrics from the Navigation Timing API, with clear use cases like diagnosing slow page loads and identifying bottlenecks. It lists the specific metrics returned, leaving no ambiguity about 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 tells users when to use the tool (to diagnose performance issues) and provides a critical prerequisite: first navigate and reload the page. It includes an error message guiding users to that prerequisite. However, it does not explicitly mention when not to use it or suggest alternative tools, though the sibling list has no direct competitors.

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

pilot_press_keyA

Press a keyboard key or key combination on the page. Use when the user wants to press Enter to submit a form, Tab to move between fields, Escape to close a modal, ArrowDown to navigate a list, or use any keyboard shortcut.

Parameters:

  • key: Key name or combination (e.g., "Enter", "Tab", "Escape", "ArrowDown", "Backspace", "Shift+Enter", "Control+a")

Returns: Confirmation of the key pressed.

Errors:

  • "Unknown key": The key name is not recognized. Use standard Playwright key names (see docs.playwright.dev/key-input).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesKey name (e.g. Enter, Tab, Escape, ArrowDown, Shift+Enter)

TDQS

A4.4/5.0
Behavior4/5

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

Describes returns (confirmation) and errors ('Unknown key') with reference to Playwright docs. Since no annotations exist, this covers basic behavior well, though side effects (e.g., form submission) are implied but not explicit.

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

Conciseness4/5

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

Concise with clear sections (parameters, returns, errors). Every sentence adds value; appropriately structured.

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 a single parameter, no output schema, and no annotations, the description fully covers purpose, usage, parameters, returns, and errors without 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?

Schema coverage 100%, but description adds value by providing examples (e.g., 'Shift+Enter') and explaining error handling, going 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 it presses a keyboard key or combination, listing common use cases (Enter, Tab, Escape, etc.) and distinguishing from siblings like pilot_type and pilot_click.

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

Usage Guidelines4/5

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

Explicit examples of when to use (submit form, move fields, close modal) but does not name alternatives; however, the sibling list provides context. Clear guidance.

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

pilot_reloadA

Reload the current page, waiting for DOM content to load. Use when the user wants to refresh the page, clear dynamic state, or retry a failed load.

Parameters: (none)

Returns: The URL of the reloaded page.

Errors:

  • Timeout (15s): The page took too long to reload. Try again or check network connectivity.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior4/5

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

Describes waiting for DOM content, 15s timeout, and return value. No annotations, but behavior is well covered.

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?

Very concise: three sentences plus bullet list. Purpose front-loaded, no redundant information.

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

Completeness5/5

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

Covers purpose, usage, behavior, errors, and return value. Complete for a simple tool with no parameters or output schema.

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?

No parameters; correctly states none. Schema coverage is 100%, no additional info 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?

Clear verb (reload) and resource (current page). Distinguishes from siblings like pilot_navigate and pilot_back/forward.

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 lists use cases: refresh page, clear dynamic state, retry failed load. Also provides error conditions.

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

pilot_resizeA

Set the browser viewport size in pixels to simulate different screen resolutions. Use when the user wants to test responsive layouts, simulate a mobile or tablet screen, or change the visible area of the page. For multi-viewport screenshots, use pilot_responsive instead.

Parameters:

  • width: Viewport width in pixels (e.g., 1280 for desktop, 375 for mobile)

  • height: Viewport height in pixels (e.g., 720 for desktop, 812 for mobile)

Returns: Confirmation with the new viewport dimensions.

Errors: None — any valid pixel dimensions are accepted.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYesViewport width in pixels
heightYesViewport height in pixels

TDQS

A4.7/5.0
Behavior4/5

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

Describes the return value and that any valid pixel dimensions are accepted. Lacks mention of potential side effects (e.g., resize affecting current tab only, no zoom change), but sufficient for a simple action.

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

Conciseness5/5

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

Brief, well-structured description with separate sections for purpose, usage, parameters, return, and errors. No unnecessary words.

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?

Covers all necessary aspects: purpose, when to use, parameters with examples, return value, error handling, and sibling differentiation. Complete for this simple tool.

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

Parameters4/5

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

Adds example values for desktop and mobile beyond the schema's description, clarifying units and providing context for typical use.

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

Purpose5/5

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

Clearly states the action (set viewport size), resource (browser viewport), and simulation goal. Distinguishes from sibling pilot_responsive by noting the multi-viewport screenshot alternative.

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 states when to use (responsive testing, simulating screen sizes) and provides an alternative tool for multi-viewport screenshots.

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

pilot_responsiveA

Capture full-page screenshots at three standard responsive breakpoints — mobile (375x812), tablet (768x1024), and desktop (1280x720). Use when the user wants to preview how a page looks across different screen sizes, test responsive design, or generate viewport comparison screenshots. The browser viewport is restored to its original size after capture.

Parameters:

  • output_prefix: File path prefix for the saved screenshots (default: /tmp/pilot-responsive). Files are saved as {prefix}-mobile.png, {prefix}-tablet.png, {prefix}-desktop.png

Returns: List of viewport names, dimensions, and file paths for each screenshot.

Errors:

  • "Output path must be within ...": The prefix path is outside the allowed directory.

  • Timeout: The page took too long to render at one of the viewports.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_prefixNoFile path prefix for screenshots

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description fully discloses behavior: captures three sizes, restores original viewport, and lists possible errors. It covers side effects (viewport restoration) and file naming. No contradictions.

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?

Well-structured, front-loaded with purpose, followed by usage, parameters, and errors. Every sentence adds value with no redundancy.

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

Completeness5/5

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

Despite no output schema, description details return format and covers errors. Sufficient for full understanding of tool behavior and output.

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?

Single parameter with 100% schema coverage. Description adds default value and naming convention beyond the schema, enhancing usability.

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 captures full-page screenshots at three responsive breakpoints with specific dimensions. It differentiates from sibling tools like pilot_screenshot and pilot_annotated_screenshot by specifying multi-viewport capture.

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

Usage Guidelines4/5

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

Explicitly states when to use: 'preview how a page looks across different screen sizes, test responsive design, or generate viewport comparison screenshots.' Provides behavioral context (viewport restoration) but does not explicitly state when not to use or name alternatives.

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

pilot_resumeA

Resume automated control after a pilot_handoff session. Use when the user has finished manual interaction in the headed browser (e.g., solved a CAPTCHA, completed auth) and wants to return to automated control.

Parameters: (none)

Returns: A fresh accessibility snapshot of the current page state, ready for continued interaction.

Errors:

  • "No browser to resume": No prior pilot_handoff was called or the browser has been closed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/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 burden. It discloses that it returns a fresh accessibility snapshot and what error to expect if handoff wasn't called. This is sufficient and 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 very concise, using short sentences. It is structured with sections for parameters, returns, and errors, making it easy to parse. Every sentence adds value.

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

Completeness5/5

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

Given no parameters, no output schema, and the simplicity of the action, the description is complete. It explains the return format and error case. No additional context seems necessary.

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, and schema coverage is 100%. The description states 'Parameters: (none)', which is accurate. With zero parameters, the baseline is 4, and no extra semantic value is needed.

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

Purpose5/5

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

The description clearly states the tool resumes automated control after a pilot_handoff session. The verb 'resume' is specific and the resource 'automated control' is well-defined. It distinguishes itself from siblings by being the counterpart to pilot_handoff.

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 when to use: after manual interaction (e.g., CAPTCHA, auth) and wanting to return to automated control. Lists an error case ('No browser to resume') which guides proper usage.

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

pilot_screenshotA

Take a PNG screenshot of the current page or a specific element. Use when the user wants to capture what the page looks like visually, save a screenshot to disk, or capture a specific element's appearance. For a visual debug overlay with ref labels, use pilot_annotated_screenshot instead.

Parameters:

  • ref: Element reference from snapshot (e.g., "@e3") or CSS selector to screenshot a specific element (omit for full page)

  • full_page: Set to false for viewport-only capture (default: true, captures the entire scrollable page)

  • output_path: File path to save the screenshot (default: /tmp/pilot-screenshot.png). Must be within the allowed output directory

  • clip: Crop region as {x, y, width, height} pixel coordinates for a specific area of the page

Returns: The screenshot as a base64 PNG image and the file path where it was saved.

Errors:

  • "Output path must be within ...": The path is outside the allowed directory. Set PILOT_OUTPUT_DIR or use /tmp.

  • "Element not found": The ref is stale. Run pilot_snapshot to get fresh refs.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoElement ref or CSS selector to screenshot
full_pageNoCapture full page (default: true)
output_pathNoOutput file path
clipNoClip region {x, y, width, height}

TDQS

A4.7/5.0
Behavior4/5

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

Discloses that the tool captures a PNG screenshot, defaults to full page, saves to disk, and returns base64 and file path. Includes common errors and their resolutions. However, no annotations exist, and the description could mention potential side effects or prerequisites (e.g., page must be loaded).

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

Conciseness5/5

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

Concise yet comprehensive: two sentences cover purpose and alternatives, followed by clear parameter descriptions and error handling. No unnecessary words.

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

Completeness5/5

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

Despite no output schema, the description explains return values (base64 PNG and file path) and common errors. All four parameters are well-documented. Completeness is high for a screenshot tool with clear side effects.

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

Parameters4/5

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

Schema description coverage is 100%, but the description adds value beyond schema by clarifying ref types (element ref vs CSS selector), full_page behavior (viewport-only vs scrollable), output_path constraints (allowed directory), and clip format (pixel coordinates).

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: 'Take a PNG screenshot of the current page or a specific element.' It distinguishes from the sibling pilot_annotated_screenshot by directing users to use that tool for debug overlays.

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 provides usage guidelines: 'Use when the user wants to capture what the page looks like visually, save a screenshot to disk, or capture a specific element's appearance.' Also mentions when not to use (pilot_annotated_screenshot for debug overlay) and includes error messages that guide user actions.

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

pilot_scrollA

Scroll the page or a specific element into view. Use when the user wants to scroll down a long page, scroll to the bottom, scroll to the top, or scroll a specific element into the viewport. With a ref, scrolls the element into view. Without a ref, scrolls the page by one viewport height or to a specific position.

Parameters:

  • ref: Element reference from snapshot (e.g., "@e20") or CSS selector to scroll into view (omit for page scroll)

  • direction: Page scroll direction when no ref is provided — "up", "down", "top", or "bottom" (default: "bottom")

Returns: Confirmation of what was scrolled and in which direction.

Errors:

  • "Element not found": The ref is stale. Run pilot_snapshot to get fresh refs.

  • Timeout (5s): The element could not be scrolled into view.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoElement ref or CSS selector to scroll into view
directionNoScroll direction (when no ref)

TDQS

A4.9/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 full burden. It states return value ('Confirmation of what was scrolled and in which direction'), explains both modes (with/without ref), lists possible errors (element not found, timeout of 5s), and implies non-destructive behavior (scrolling). This is comprehensive for a scrolling tool.

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

Conciseness5/5

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

The description is concise and well-structured: introductory sentence, usage guidance, bulleted parameters, return value, and errors. Every sentence adds value with no redundancy or filler. It is easy to scan and understand.

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 2 parameters and no output schema, the description covers all necessary aspects: purpose, when to use, parameter details with defaults, return type, and error conditions. It is complete and leaves no ambiguity.

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

Parameters4/5

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

Schema covers both parameters fully (100% coverage). The description adds value by stating the default for direction ('bottom') and explaining the interplay: direction only applies when no ref is provided. This clarifies usage beyond the schema, so a 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 clearly states the tool's purpose: 'Scroll the page or a specific element into view.' It distinguishes between scrolling with a ref (element) and without (page), which is specific and unambiguous. Among siblings, no other tool handles scrolling, so it is easily distinguishable.

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?

The description provides explicit usage scenarios: 'Use when the user wants to scroll down a long page, scroll to the bottom, scroll to the top, or scroll a specific element into the viewport.' It also differentiates behavior based on the ref parameter, giving clear guidance on when to provide a ref vs. not.

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

pilot_select_optionA

Select an option from a dropdown element by value, label, or visible text. Use when the user wants to choose a dropdown option, select from a combobox, or pick from a list. Note: clicking an in pilot_snapshot is auto-routed here.

Parameters:

  • ref: The element reference from snapshot (e.g., "@e5") or a CSS selector

  • value: The option's value attribute, label, or visible text to match

Returns: Confirmation with the selected value and element ref.

Errors:

  • "No option matched": The value does not match any option. Check the exact option text or value attribute via pilot_page_html.

  • "Element not found": The ref is stale or does not point to a element. Run pilot_snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesSelect element ref (@e3) or CSS selector
valueYesOption value, label, or text to select

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It describes the selection action, returns confirmation, and lists errors. However, it does not disclose whether change events are triggered or if there are side effects, which would be beneficial for a complete behavioral picture.

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 and well-structured: purpose, usage, parameter details, return value, and errors. Every sentence contributes meaning without unnecessary wordiness.

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

Completeness5/5

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

The description is complete for a simple tool with two parameters. It covers return confirmation and two common error conditions, which compensates for the lack of an output schema.

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

Parameters4/5

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

The input schema covers all parameters with descriptions. The description adds extra context: 'Select element ref (@e3) or CSS selector' and 'Option value, label, or text to select', providing more detail than the schema alone. Given 100% schema coverage, the description adds marginal 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 selects an option from a <select> dropdown by value, label, or visible text. It distinguishes from clicking by noting that clicking an <option> in pilot_snapshot is auto-routed here.

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

Usage Guidelines4/5

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

The description provides clear usage context: 'Use when the user wants to choose a dropdown option, select from a combobox, or pick from a list.' It also mentions auto-routing from pilot_snapshot. However, it does not explicitly state when not to use this tool versus alternatives like pilot_click.

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

pilot_set_headerA

Set a custom HTTP request header that will be sent with all subsequent requests from the browser. Use when the user wants to add an authorization header, set a custom API key, override the Accept-Language header, or inject any custom header for testing. Sensitive header values (Authorization, Cookie, X-API-Key, etc.) are auto-redacted in the response for security.

Parameters:

  • name: Header name (e.g., "Authorization", "X-Custom-Header", "Accept-Language")

  • value: Header value (e.g., "Bearer token123", "en-US")

Returns: Confirmation with the header name and value (sensitive values shown as "****").

Errors: None — any valid header name and value are accepted.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHeader name
valueYesHeader value

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided; description burdens transparency. It discloses auto-redaction of sensitive values and claims no errors, but lacks info on overwrite behavior or persistence across navigation.

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?

Description is well-structured with clear sections (use when, parameters, return, errors). Slightly verbose but front-loaded with purpose.

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

Completeness4/5

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

For a simple 2-param tool with no output schema or annotations, the description covers purpose, usage, parameter examples, return format, and error handling. Adequately complete.

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

Parameters4/5

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

Schema coverage is 100% with basic descriptions. The description adds concrete examples ('Authorization', 'Bearer token123'), adding 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 tool sets a custom HTTP request header for subsequent requests, with examples (Authorization, API key, Accept-Language). It distinguishes from sibling tools like pilot_set_cookie and pilot_auth.

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

Usage Guidelines4/5

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

The description explicitly says when to use ('when the user wants to add an authorization header...'), but does not mention when not to use or alternatives. Still, it provides clear context.

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

pilot_set_useragentA

Set a custom browser User-Agent string, which recreates the browser context to apply the change while preserving cookies and page state. Use when the user wants to simulate a different browser or device, bypass bot detection, test mobile user agents, or debug User-Agent-dependent behavior. Note: this recreates the browser context, which may briefly interrupt in-progress requests.

Parameters:

  • useragent: The full User-Agent string (e.g., "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15")

Returns: Confirmation with the new User-Agent string.

Errors:

  • Context recreation warnings: If cookies or state could not be fully preserved during context recreation, a warning is included.

ParametersJSON Schema
NameRequiredDescriptionDefault
useragentYesUser agent string

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully covers behavior: recreates browser context, preserves cookies and page state, but may interrupt in-progress requests. It also mentions error warnings about state preservation.

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 front-loaded with the main purpose, followed by use cases, notes, and parameter details. It is reasonably concise, though the structure could be slightly tighter.

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 there is no output schema, the description provides return value ('Confirmation with the new User-Agent string') and error conditions (context recreation warnings). It covers all essential aspects for a single-parameter tool.

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

Parameters4/5

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

Schema coverage is 100% and description provides an example User-Agent string ('Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15'), adding practical context beyond the basic schema type description.

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 'Set a custom browser User-Agent string' and provides specific use cases (simulate browser/device, bypass bot detection, test mobile user agents). It effectively distinguishes this tool from siblings like pilot_set_header by focusing on the User-Agent header.

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 lists applicable scenarios (simulate browser/device, bypass bot detection, test mobile) and includes a caveat about context recreation. However, it does not explicitly state when not to use this tool or mention alternatives.

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

pilot_snapshotA

Capture an accessibility tree snapshot of the page with @eN refs for element selection. Use when the user wants to see the page structure, find elements to interact with, or get refs for click/fill/hover. This is the primary way to understand what is on the page. Refs from this snapshot are used by pilot_click, pilot_fill, pilot_hover, pilot_select_option, and most other interaction tools.

Parameters:

  • selector: CSS selector to scope the snapshot to a specific subtree (e.g., "#main-content")

  • interactive_only: Set to true to show only interactive elements (buttons, links, inputs) — saves tokens on large pages

  • compact: Set to true to remove empty structural nodes from the tree

  • depth: Limit the tree depth (0 = root only). Useful for reducing token usage on deeply nested pages

  • include_cursor_interactive: Set to true to scan for elements with cursor:pointer, onclick, or tabindex that are not in the ARIA tree — returns @cN refs

  • max_elements: Maximum elements to include before truncating (saves tokens on very large pages)

  • structure_only: Set to true to show tree structure without text content — saves tokens when you only need the element hierarchy

  • output_file: Set to true to save the snapshot to a temp file instead of returning inline. Returns the file path — read with the Read tool when needed. Useful when the snapshot is large and you only need it on demand.

Returns: Text representation of the accessibility tree with @eN refs (and @cN refs if include_cursor_interactive is true). If output_file=true: returns only the file path (e.g. /tmp/pilot-snap-abc123.txt).

Errors:

  • Timeout: The page is too complex or unresponsive. Try scoping with selector or using max_elements.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorNoCSS selector to scope the snapshot
interactive_onlyNoOnly show interactive elements (buttons, links, inputs)
compactNoRemove empty structural nodes
depthNoLimit tree depth (0 = root only)
include_cursor_interactiveNoScan for cursor:pointer/onclick/tabindex elements not in ARIA tree
max_elementsNoMax elements to include before truncating (saves tokens on large pages)
structure_onlyNoShow tree structure without text content — saves tokens
leanNoStrip structural noise (empty rows/cells, separator text, duplicate labels). Default: true. Set false for raw ARIA tree.
verboseNoAlias for lean=false. Returns full ARIA tree with all structural nodes.
output_fileNoSave snapshot to a temp file and return only the file path. Read with the Read tool when needed.

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 fully explains behavior: captures tree, returns refs, mentions timeout errors, output file option. No contradictions. Discloses read-only nature implicitly.

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?

Well-structured with purpose, usage, parameters, returns, errors. Front-loaded key info. Slightly lengthy due to detailed parameter explanations, but justified for 10 parameters.

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?

Comprehensive for tool with 10 parameters and no output schema: covers usage, parameters, return format, errors, relationship to siblings. Could mention performance but 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%, but description adds value by explaining purpose and token-saving tips for each parameter (e.g., interactive_only, compact, depth). Exceeds baseline.

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

Purpose5/5

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

The description clearly states the tool captures an accessibility tree snapshot with @eN refs for element selection. It distinguishes itself as the primary method to understand page structure and source for interaction tool refs.

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?

Clearly indicates when to use: for seeing structure, finding elements, getting refs. Described as primary way to understand the page. Does not explicitly exclude alternatives but provides strong context.

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

pilot_snapshot_diffA

Compare the current page state against the previously captured snapshot, showing a unified diff of what changed. Use when the user wants to verify the effect of an action (click, fill, navigation), check if dynamic content loaded, or see what changed on the page without re-reading the entire snapshot. The first call stores a baseline; subsequent calls diff against it.

Parameters:

  • selector: CSS selector to scope both snapshots to a specific subtree

  • interactive_only: Set to true to only diff interactive elements (buttons, links, inputs)

Returns: Unified diff text showing added (+) and removed (-) lines between snapshots.

Errors:

  • "No baseline snapshot": This is the first call — a baseline will be stored for future diffs.

  • Timeout: The page is unresponsive.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorNoCSS selector to scope the snapshot
interactive_onlyNoOnly show interactive elements
leanNoStrip structural noise. Default: true.

TDQS

A4.3/5.0
Behavior4/5

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

Since no annotations are provided, the description fully discloses the first-call baseline storage, subsequent diffing, error conditions ('No baseline snapshot', timeout), and return format, ensuring the agent understands 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.

Conciseness5/5

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

The description is concise, well-structured into paragraphs, and front-loaded with the primary purpose. Every sentence adds value without redundancy.

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

Completeness5/5

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

Given no output schema, the description covers return type, usage, parameters, and errors, leaving no critical gaps for the agent to use the tool 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 coverage is 100%, so baseline is 3. The description adds slight context for 'selector' (scopes 'both snapshots') and 'interactive_only' ('diff interactive elements'), but 'lean' is not mentioned, providing marginal value over 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 'compare' and resource 'page state vs snapshot', and distinguishes from sibling 'pilot_page_diff' by focusing on snapshots specifically.

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 lists when to use the tool (verify action effects, check dynamic content) and explains the first-call baseline behavior, but does not mention 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.

pilot_storageA

Read or write browser web storage (localStorage and sessionStorage). Use when the user wants to inspect stored application data, check feature flags, debug session state, or set a specific localStorage value. Sensitive values (tokens, secrets, API keys) are automatically redacted for security.

Parameters:

  • set_key: If provided, sets this key in localStorage to the value in set_value

  • set_value: The value to set for set_key in localStorage (omit to read all storage instead)

Returns: When reading: JSON object with localStorage and sessionStorage contents (sensitive values redacted as "[REDACTED — N chars]"). When writing: Confirmation of the key set.

Errors: None — returns empty storage objects if no data exists.

Security: Values matching patterns like "eyJ..." (JWTs), "sk-..." (API keys), or keys containing "token", "secret", "password" are auto-redacted.

ParametersJSON Schema
NameRequiredDescriptionDefault
set_keyNoKey to set in localStorage
set_valueNoValue to set

TDQS

A4.8/5.0
Behavior5/5

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

No annotations, but description fully discloses behavior: automatic redaction of sensitive values, returns empty objects on no data, error-free operation, security patterns for redaction.

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?

Well-organized sections (usage, parameters, returns, errors, security). Every sentence adds value; no waste.

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

Completeness5/5

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

Given no output schema or annotations, the description covers purpose, parameter behavior, return values, error handling, and security. Complete for agent use.

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 100%, but description adds crucial semantics: how set_key and set_value interact (omit set_value to read), and what parameters are for.

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 reads or writes browser web storage (localStorage and sessionStorage). Distinguishes from sibling tools like cookies tools by specifying web storage.

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

Usage Guidelines4/5

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

Explicitly enumerates use cases: inspect app data, check feature flags, debug session state, set localStorage value. Does not explicitly state when not to use, but context is clear.

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

pilot_tab_closeA

Close a browser tab by its ID, or close the currently active tab if no ID is specified. Use when the user wants to close a popup, remove an unwanted tab, or clean up after finishing work in a tab.

Parameters:

  • id: Tab ID to close (omit to close the current active tab). Use pilot_tabs to list tab IDs.

Returns: Confirmation that the tab was closed.

Errors:

  • "No such tab": The provided tab ID does not exist. Run pilot_tabs to see valid IDs.

  • "Cannot close last tab": The last remaining tab cannot be closed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoTab ID to close

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description fully covers behavioral traits: default close of active tab, confirmation return, and two specific error conditions ('No such tab' and 'Cannot close last tab'). It discloses all key behaviors.

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, with clear sections for purpose, parameters, returns, and errors. Every sentence adds value without redundancy.

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 simplicity (1 optional parameter, no output schema), the description is complete: includes purpose, usage guidance, parameter behavior, and error handling. No gaps remain.

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 100%, and the description adds meaning beyond the schema: explains that omitting id closes the active tab, and directs to pilot_tabs for valid IDs. This provides actionable guidance.

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 'Close a browser tab by its ID, or close the currently active tab if no ID is specified,' providing a specific verb and resource, and distinguishing behavior from sibling tools like pilot_tab_new and pilot_tab_select.

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 states when to use: 'when the user wants to close a popup, remove an unwanted tab, or clean up after finishing work in a tab.' It also references sibling tool pilot_tabs for listing IDs, providing clear context and alternatives.

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

pilot_tab_newA

Open a new browser tab, optionally navigating to a URL. Use when the user wants to open a link in a new tab, create a blank tab, or work with multiple pages simultaneously.

Parameters:

  • url: Optional URL to navigate to in the new tab (omit for a blank about:blank tab)

Returns: The new tab's ID and URL (if provided).

Errors:

  • "Invalid URL": The URL is malformed. Provide a complete URL with protocol.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to navigate to in the new tab

TDQS

A4.3/5.0
Behavior4/5

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

Without annotations, the description discloses return values (tab ID and URL) and error conditions (invalid URL). It does not detail if the tab is focused or other behaviors, but covers key aspects.

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

Conciseness4/5

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

The description is concise with a clear main action. It then lists parameter, returns, and errors, which is structured but slightly verbose given the simple tool.

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

Completeness4/5

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

For a simple tool with no output schema or annotations, the description covers purpose, parameter, returns, and errors. It is complete enough for an agent to use correctly, though behavioral details like tab focus are missing.

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

Parameters4/5

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

The schema covers the parameter 100%, and the description adds meaningful context: 'url is optional, omit for blank about:blank tab'. This clarifies usage beyond the schema's description.

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 opens a new browser tab with an optional URL. It distinguishes from siblings like pilot_tab_select and pilot_tab_close by focusing on creation.

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 lists use cases: opening a link in a new tab, creating a blank tab, or working with multiple pages. It provides clear context but does not mention when not to use or alternative tools.

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

pilot_tabsA

List all open browser tabs with their IDs, URLs, titles, and which tab is currently active. Use when the user wants to see what tabs are open, find a specific tab by title or URL, or check which tab is active before switching.

Parameters: (none)

Returns: Numbered list of tabs showing [id], title, URL, and an arrow (→) marking the active tab.

Errors: None — returns empty list if no tabs exist (unlikely in normal operation).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description must fully disclose behavior. It states the tool returns a list and that no errors occur, but does not explicitly confirm it is read-only or describe any side effects. The non-destructive nature is implied but not stated.

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 at three short sentences, each adding value: purpose, usage, return format, and error handling. It is front-loaded with the core action and 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 purpose, usage, and return format, but lacks output schema to confirm the structure. It does not specify if tabs are from the current window or all windows, which could be ambiguous. Slight gap for a simple listing tool.

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

Parameters4/5

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

The tool has zero parameters, and the description explicitly notes 'Parameters: (none)'. Since schema coverage is 100% and no parameters exist, the description adds clarity that no input 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 lists all open browser tabs with their IDs, URLs, titles, and active status. It distinguishes itself from sibling tab tools (e.g., pilot_tab_close, pilot_tab_new) by focusing on listing rather than manipulation.

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

Usage Guidelines4/5

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

The description explicitly says when to use the tool: to see what tabs are open, find a specific tab, or check the active tab. It does not explicitly state when not to use it, but the context of listing makes it clear this is for observation, not for tab management.

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

pilot_tab_selectA

Switch the active browser context to a specific tab by its ID. Use when the user wants to work in a different tab, bring a background tab to the foreground, or continue automation in a previously opened tab. Use pilot_tabs to find tab IDs.

Parameters:

  • id: The tab ID to switch to (from pilot_tabs output)

Returns: Confirmation with the tab ID that is now active.

Errors:

  • "No such tab": The provided tab ID does not exist. Run pilot_tabs to see valid IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTab ID to switch to

TDQS

A4.4/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 explains that the tool switches the active browser context, returns a confirmation with the tab ID, and lists an error case ('No such tab'). This covers the key behavior, though it could mention that the tab remains open and no data is lost, which is implicit.

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 with front-loaded purpose, followed by usage guidance, parameter explanation, returns, and errors. Every sentence adds value and there is no redundancy. It is well-structured for quick parsing.

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 is largely complete. It covers purpose, usage, parameter, and error handling. However, without an output schema, it could more precisely describe the return format (e.g., a JSON object). The description is adequate but not 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?

The input schema has 100% coverage with one parameter 'id' described as 'Tab ID to switch to.' The description adds value by specifying that the ID comes from pilot_tabs output, providing context beyond the schema. While the schema already explains the parameter, the description clarifies its source.

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 'Switch the active browser context to a specific tab by its ID.' This is a specific verb+resource, and it distinguishes itself from siblings like pilot_tab_new, pilot_tab_close, and pilot_tabs by focusing on switching to an existing tab.

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

Usage Guidelines4/5

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

The description advises using this tool when the user wants to work in a different tab, bring a background tab to the foreground, or continue automation in a previously opened tab. It also explicitly directs to use pilot_tabs to find tab IDs, providing a clear alternative. However, it does not explicitly state when not to use it, which would elevate clarity.

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

pilot_typeA

Type text character-by-character into the currently focused element, simulating real keyboard input. Use when the user wants to type into a contenteditable div, rich text editor, or a field that reacts to individual keystrokes (e.g., autocomplete, keypress events). For standard / elements, prefer pilot_fill which is faster.

Parameters:

  • text: The text string to type

  • submit: Set to true to press Enter after typing (useful for search fields and forms)

Returns: Character count typed and whether Enter was pressed.

Errors:

  • "No element is focused": Nothing is focused on the page. Use pilot_click on the target field first.

  • Timeout: The page became unresponsive during typing.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to type
submitNoPress Enter after typing

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 fully discloses behavior: character-by-character typing, return value (character count and whether Enter pressed), and error conditions (no focused element, timeout). This is comprehensive for a tool with no annotations.

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

Conciseness5/5

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

The description is well-structured with a clear first sentence stating purpose, followed by usage guidance, then parameter list, returns, and errors. Every sentence adds value, and the entire description is succinct.

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 moderate complexity (2 params, no output schema), the description covers purpose, usage guidelines, parameters, return values, and errors. It provides sufficient information for an AI agent to invoke the tool 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 baseline is 3. The description minimally adds context: 'text' as 'the text string to type' and 'submit' as 'set to true to press Enter', but these are nearly identical to the schema descriptions ('Text to type' and 'Press Enter after typing').

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 types text character-by-character into the focused element, simulating real keyboard input. It distinguishes itself from sibling pilot_fill by noting the appropriate use cases (contenteditable, rich text editors, keystroke-reactive fields) versus standard inputs.

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?

The description explicitly provides when to use (contenteditable, rich text, fields reacting to keystrokes) and when not to use (prefer pilot_fill for standard inputs). It also gives a prerequisite hint (use pilot_click first if no focus) and explains the submit parameter usage.

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

pilot_waitA

Wait for a specific condition before proceeding — an element to appear, the network to become idle, or the page to finish loading. Use when the user wants to wait for a dynamic element to load, wait for AJAX/fetch requests to complete, or wait for a modal/spinner to appear or disappear.

Parameters:

  • ref: Element reference from snapshot (e.g., "@e10") or CSS selector to wait for

  • state: What to wait for — "visible" (element appears, default), "hidden" (element disappears), "networkidle" (no network requests for 500ms), or "load" (page load event)

  • timeout: Maximum wait time in milliseconds (default: 15000)

Returns: Confirmation of what was waited for and its state.

Errors:

  • "Timeout waiting for element": The element did not reach the expected state in time. Increase timeout or check the selector.

  • "Nothing to wait for": Neither ref nor state was provided. Supply at least one.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoElement ref or CSS selector to wait for
stateNoWhat to wait for
timeoutNoTimeout in milliseconds (default: 15000)

TDQS

A5/5.0
Behavior5/5

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

Despite no annotations, the description discloses all key traits: waits for element states, network idle, page load; default timeout of 15000ms; returns confirmation; lists common errors. No contradictions.

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 well-structured with sections for parameters, returns, and errors. It is concise, using clear language without unnecessary repetition.

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

Completeness5/5

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

Given no output schema, the description adequately explains return values and potential errors. It covers all parameters and usage scenarios, making it complete for effective tool invocation.

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 100%, but description adds meaningful context: explains ref as 'element reference from snapshot (e.g., '@e10') or CSS selector', details each state option, and provides default timeout. This adds significant value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool waits for a condition (element appearance, network idle, page load) with specific verbs and resources. It distinguishes itself from siblings like pilot_navigate or pilot_click, which perform different actions.

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

Usage Guidelines5/5

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

Explicitly provides when to use: 'when the user wants to wait for a dynamic element to load, wait for AJAX/fetch requests to complete, or wait for a modal/spinner to appear or disappear.' It also mentions error handling and troubleshooting.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 18 tool updates
    • Addedpilot_assert
    • Addedpilot_auth
    • Addedpilot_block
    • Addedpilot_cdp
    • Addedpilot_clipboard
    • Changedpilot_evaluate2 fields changed
      • changedInput schema / properties / expression / description
        Previous value: -"JavaScript expression to evaluate"New value: +"JavaScript expression to evaluate (max 50 KB)"
      • addedInput schema / properties / expression / maxLength
        Added value: +51200
    • Addedpilot_extension_status
    • Addedpilot_find
    • Addedpilot_geolocation
    • Addedpilot_get
    • Changedpilot_import_cookies3 fields changed
      • changedInput schema / properties / domains / description
        Previous value: -"Cookie domains to import (e.g. [\".github.com\", \".google.com\"])"New value: +"Cookie domains to import (e.g. [\".github.com\"]). Omit to import ALL cookies."
      • addedInput schema / properties / max_cookies
        Added value: +{
        +  "description": "Max cookies to import when domains is omitted (default: 500)",
        +  "type": "number"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "domains"
        -]
    • Addedpilot_intercept
    • Changedpilot_navigate1 field changed
      • changedInput schema / properties / url / description
        Previous value: -"URL to navigate to"New value: +"URL to navigate to (e.g., \"https://example.com\")"
    • Changedpilot_page_html1 field changed
      • addedInput schema / properties / max_chars
        Added value: +{
        +  "description": "Max characters to return (default: 20000)",
        +  "type": "number"
        +}
    • Changedpilot_page_links2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / max_chars
        Added value: +{
        +  "description": "Max characters to return (default: 20000)",
        +  "type": "number"
        +}
    • Changedpilot_page_text2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / max_chars
        Added value: +{
        +  "description": "Max characters to return (default: 20000). Prevents token bloat on large pages.",
        +  "type": "number"
        +}
    • Changedpilot_snapshot3 fields changed
      • addedInput schema / properties / lean
        Added value: +{
        +  "default": true,
        +  "description": "Strip structural noise (empty rows/cells, separator text, duplicate labels). Default: true. Set false for raw ARIA tree.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / output_file
        Added value: +{
        +  "description": "Save snapshot to a temp file and return only the file path. Read with the Read tool when needed.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / verbose
        Added value: +{
        +  "description": "Alias for lean=false. Returns full ARIA tree with all structural nodes.",
        +  "type": "boolean"
        +}
    • Changedpilot_snapshot_diff1 field changed
      • addedInput schema / properties / lean
        Added value: +{
        +  "default": true,
        +  "description": "Strip structural noise. Default: true.",
        +  "type": "boolean"
        +}
  2. 51 tool updatesv0.2.0
    • First observedpilot_annotated_screenshot
    • First observedpilot_back
    • First observedpilot_click
    • First observedpilot_close
    • First observedpilot_console
    • First observedpilot_cookies
    • First observedpilot_dialog
    • First observedpilot_drag
    • First observedpilot_element_state
    • First observedpilot_evaluate
    • First observedpilot_file_upload
    • First observedpilot_fill
    • First observedpilot_forward
    • First observedpilot_frame_reset
    • First observedpilot_frame_select
    • First observedpilot_frames
    • First observedpilot_handle_dialog
    • First observedpilot_handoff
    • First observedpilot_hover
    • First observedpilot_import_cookies
    • First observedpilot_navigate
    • First observedpilot_network
    • First observedpilot_page_attrs
    • First observedpilot_page_css
    • First observedpilot_page_diff
    • First observedpilot_page_forms
    • First observedpilot_page_html
    • First observedpilot_page_links
    • First observedpilot_page_text
    • First observedpilot_pdf
    • First observedpilot_perf
    • First observedpilot_press_key
    • First observedpilot_reload
    • First observedpilot_resize
    • First observedpilot_responsive
    • First observedpilot_resume
    • First observedpilot_screenshot
    • First observedpilot_scroll
    • First observedpilot_select_option
    • First observedpilot_set_cookie
    • First observedpilot_set_header
    • First observedpilot_set_useragent
    • First observedpilot_snapshot
    • First observedpilot_snapshot_diff
    • First observedpilot_storage
    • First observedpilot_tab_close
    • First observedpilot_tab_new
    • First observedpilot_tab_select
    • First observedpilot_tabs
    • First observedpilot_type
    • First observedpilot_wait

TDQS

A4/5.0
Disambiguation5/5

Each tool has a distinct, well-explained purpose with clear use cases. Despite the large number, overlap is minimal (e.g., pilot_get vs pilot_navigate/snapshot, pilot_screenshot variants) and resolved by detailed descriptions and guidance on when to use each.

Naming Consistency4/5

All tools share the 'pilot_' prefix, and subdomains like page (pilot_page_*), tab (pilot_tab_*), and frame (pilot_frame_*) use consistent patterns. Minor inconsistencies exist (e.g., 'pilot_tabs' vs 'pilot_tab_new', 'pilot_screenshot' vs 'pilot_annotated_screenshot') but overall the naming is predictable.

Tool Count2/5

61 tools is excessive for a browser automation server. While the domain is broad, many tools could be consolidated (e.g., page attribute tools into one, screenshot variants into one with parameters). The count exceeds typical well-scoped servers and would benefit from trimming to improve coherence.

Completeness5/5

The tool surface covers the full browser automation lifecycle: navigation, interaction, state inspection, visual capture, session management, tabs, frames, device configuration, network blocking/interception, debugging, assertions, and waiting. No significant gaps are evident.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables AI-powered browser automation, web scraping, and testing using Playwright across Chromium, Firefox, and WebKit. It allows users to perform actions like navigation, clicking, typing, and taking screenshots through natural language interfaces.
    15
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An advanced MCP server for browser automation using Puppeteer, specifically optimized for token efficiency through minimal data returns and progressive enhancement. It enables agents to navigate pages, capture LLM-optimized screenshots, extract structured content, and perform batch interactions.
    3
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    A lightweight MCP server for browser automation that gives AI agents navigate, screenshot, and extract tools via a single small binary, without needing Node.js or Playwright. It provides CDP-based browser control with efficient startup and resource usage.
    23
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TacosyHorchata/Pilot'

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