Skip to main content
Glama

WebSense MCP

Non-vision, AI-native web automation via the Semantic Action Graph. Drive a real Chrome from any MCP client — no screenshots, no CDP, no bot detection, no headless.

Built to be the browser tool an AI agent actually wants: every element is classified by action type with a predicted effect, every form is fully introspected, every click returns a before/after state diff. Works on LinkedIn, GitHub, Google, Gmail — any strict-CSP site, including React/Vue/Angular SPAs.

v4: types into anything. One type_text call auto-detects the editor engine — Draft.js (x.com), Lexical, ProseMirror, Slate, Quill, Trix, CKEditor, TinyMCE, plain inputs — and picks the right insertion strategy (synthetic paste event with real DataTransfer → beforeinput → execCommand), then verifies the app's state truth: the dependent submit button must actually enable. Disabled buttons are refused with a reason (adjacent char counter included), never silently swallowed. Uploads auto-route: file input → dropzone → rich-editor paste. New: form special (date/color/range/number/ checkbox/radio), multi-select with JSON arrays, self-reload (extension_reload), and a local test harness covering the whole matrix (test/harness/).


WebSense in plain language

What it is: a tool that lets an AI assistant (like Claude, or any MCP-capable agent) use a normal Chrome browser the way a person would — clicking buttons, filling forms, reading pages — but seeing the page as a clean structured map instead of pixels.

How it works, without the jargon:

  1. You install a small Chrome extension (this is the eyes and hands — it lives inside your real Chrome, with your real logins, on your machine). Chrome-only today.

  2. A tiny helper program (the server) runs on your computer and connects the assistant to the extension. Nothing ever leaves your machine — it's all localhost.

  3. When the assistant asks "what's on this page?", the extension doesn't send a screenshot. Instead it reads the page and answers: "there's a login form with an email field, a password field, a 'Remember me' checkbox, and a Log In button." Every element gets a name tag (E0, E1, …) the assistant can refer to later.

  4. When the assistant wants to act — "type the email into the form" — it says type into E1, and the extension does it the same way your keyboard would, inside the page itself. The site can't tell the difference: no robot flag, no fake browser, no second profile.

  5. After every action the assistant gets a before/after diff: "the modal opened," "the form submitted," "nothing changed — try something else." That last honest verdict is what makes agents reliable instead of guessy.

Why that matters: other approaches either spin up a fake browser (which sites detect and block, and which has none of your logins) or take screenshots and have a vision model squint at pixels (slow, expensive, error-prone). WebSense does neither. Your assistant uses your real browser, sees structure instead of pixels, and acts like a human — because the extension operates inside the page exactly where your clicks and keystrokes land.


Related MCP server: agent-browser-mcp

Why WebSense

WebSense

CDP / Puppeteer

Vision-based (computer-use)

Bot detection

None (real profile)

Often flagged

None

Screenshots / vision model

No — pure structured JSON

No

Yes (expensive, error-prone)

CSP-strict sites

✅ Native setters in isolated world

React controlled inputs

✅ Native prototype setters + event dispatch

Partial

navigator.webdriver

Never set

Set

Never

What the agent sees

Typed actions, forms, states, diffs

Raw DOM/JS

Pixels

Cost per read

~0 tokens (summarized, incremental)

Full DOM dump

1 vision call


How it works

MCP Client (Claude / Cline / Cursor / any MCP host)
    ↔ stdio or HTTP (StreamableHTTP)
WebSense MCP Server (src/server.js)
    ↔ WebSocket localhost:38401
Chrome Extension (extension/)
    ├── background.js    service worker, tab management, binding
    ├── offscreen.js     WebSocket client, auto-reconnect
    └── websense-cs.js   Semantic Action Graph extraction + native DOM interaction
    ↔ chrome.runtime.sendMessage
Live DOM

The content script extracts a Semantic Action Graph (SAG) — every interactive element with a stable ref (E0, E1, …), action type (navigation, form_input, form_submit, toggle, …), predicted effect, and live state (value, checked, disabled, expanded, …). The agent plans against the graph, then acts by ref. No coordinates, no pixels, no eval.


Credits — ideas borrowed from other projects

WebSense is original code, but several design ideas were adapted from projects we studied and admired. Full credit where due:

From

What we borrowed

agentreach (tenlifejosh/agentreach & Panniantong/Agent-Reach, MIT)

The upload-confirmation doctrine — multi-strategy file-drop + positive-only confirmation (input-has-file / preview-visible / unconfirmed — never claim success without evidence); the idea of a self-diagnostics tool (websense_doctor); the per-site quirks registry pattern

Hermes Agent (Nous Research)

The event-push supervisor pattern (push dialogs/navigation to a ring buffer instead of polling — wait{event:}); goal-aware read auto-summarization (threshold + goal extraction); inline after-action verification (the capture_after idea → our before/after click diff)

Computer-use / cua-driver ecosystem

The verify-then-escalate ladder — structured effect verdicts (confirmed / unverifiable / suspected_noop) with a recommended escalation path instead of silent retries

Playwright / Puppeteer

The locator-chain idea (data-testid → id → aria-label → name → CSS path → role+text) that powers re-targeting after re-renders — reimplemented for our ref system

Everything listed was re-implemented for WebSense's extension-based architecture — no code copied, ideas and proven patterns only. Thank you to those projects. 🙏


Quick start

Prerequisites

  • Node.js 18+

  • Chrome / Edge / Opera (the extension is MV3)

1. Install & load the extension

npm install

Open chrome://extensionsDeveloper modeLoad unpacked → select the extension/ folder. The extension auto-connects to the WebSocket hub — no launcher page needed.

2. Register the MCP server in your client

Claude Desktop (claude_desktop_config.json):

{ "mcpServers": { "websense": { "command": "node", "args": ["/path/to/websense-mcp/src/server.js"], "env": { "PORT": "38401" } } } }

Cline / Cursor / any stdio MCP client: same shape — point args at src/server.js with PORT=38401.

Multiple clients at once (Hermes + Cline + Cursor simultaneously):

node src/server.js --http --http-port 9222

then point each client at http://localhost:9222/mcp (StreamableHTTP, multi-session).

3. Call any tool

Start with websense_guide — it returns the full usage guide. The core loop:

explore_page → pick a ref → click/type/form by ref → read the before/after diff → repeat

Tools

websense_guide first. 24 consolidated tools covering the whole surface:

Area

Tools

Guide & Status

websense_guide, status (bridge/page/doctor/downloads)

Exploration

explore_page (compact / intent / goal / preload / incremental)

Read

read (text / content / markdown / diff / scrollextract / preload)

Interact

click (click/hover/rightclick/drag, auto-climb), type_text, form (state/select/toggle/upload), scroll, press_key

Element Intel

reveal (dropdown/tabs/accordion), inspect (element/geometry/relation)

Tabs & Navigation

navigate, tabs (list/switch/close/bind/frames/windows/focus/move/transfer)

Wait

wait (conditions ANDed, event mode)

Page Control

evaluate, screenshot, dialog, session (reset/map/mermaid/task), console_log, network_log

Clipboard & AX

clipboard, ax (canvas SPAs, chrome:// pages), cookies, downloads

Highlights

  • explore_page {incremental:true} — after any action, returns only what changed (added/changed/removed with per-field diffs) instead of re-dumping the whole page. Refs stay stable across incremental calls.

  • click auto-climb — if a synthetic click produces no state change (stubborn React submits), it can escalate to a genuine OS-level click. Windows-only enhancement, off by default (WEBSENSE_AUTOCLIMB=1 env or autoClimb:true).

  • read {format:"diff"} — only the text that changed since the last read.

  • Reddit composer speed run (see docs/reddit-speed-run-2026-09-01.md) — full post fill in ~2s using main_world component internals (title shadow-key 0.02s, flair modal 0.03s) + the type_text paste rung for the Lexical body (1.8-2.3s). Documents the hard wall: Lexical silently reverts ALL main_world writes (execCommand insertText, synthetic ClipboardEvent) — the extension paste pipeline is the only accepted path — plus the per-tab content-script wedge recovery (close tab + fresh tab; navigate/reload don't fix it).


Platform support

Feature

Windows

macOS / Linux

Core browsing (explore/read/click/type/form/tabs/wait)

OS-level dialog keystroke (dialog keystroke:true)

✅ (PowerShell SendKeys)

❌ (graceful error)

Auto-climb real-click

✅ (PowerShell user32)

❌ (graceful error)

scripts/native_upload.py (native file picker)

✅ (pywinauto + cua-driver)

Everything marked ❌ degrades gracefully — the tool returns an honest error message, never crashes. Core browsing is fully cross-platform.


Security & privacy

  • Runs in YOUR Chrome profile — your cookies, sessions, and fingerprint. It never leaves your machine: everything is localhost.

  • Manifest permissions: tabs, offscreen, scripting, webNavigation, downloads, clipboardRead/Write, cookies, activeTab, debugger (used only by the optional ax tool for canvas SPAs), plus <all_urls> host access.

  • cookies tool can read/clear cookie values for the current tab — treat it as sensitive; it exists for session-transplant workflows.

  • No telemetry. No network calls from the server other than the localhost WebSocket hub.


Known limitations

(All previously listed limitations were re-verified during a full 24-tool audit on 2026-08-31. One was fixed — see below — the rest are inherent design trade-offs.)

  • Screenshots fail on background tabsFIXED (v1.1.1): screenshot now falls back to chrome.debugger Page.captureScreenshot on the bound tab when the tab isn't the visible one. A brief "started debugging" infobar appears during fallback captures.

  • Chrome-only — the extension targets Chrome (Chromium builds like Edge/Brave generally work but are untested). There is deliberately no headless mode and no CDP path.

  • Logged-in sites must already be authenticated in the Chrome profile the extension runs in (navigate opens a fresh tab that uses existing session cookies).

  • evaluate uses new Function (eval) → blocked by strict page CSP (LinkedIn, HN). It's a power-user utility; the rest of the surface is CSP-safe.

  • Canvas / WebGL content (Telegram web, TradingView): use the ax tool (native accessibility tree via chrome.debugger) or screenshot + vision.

  • Native OS dialogs (basic-auth, print): dialog keystroke:true (Windows) or your platform's native automation.


Development

# Regression suite (hub-level, no Chrome needed)
node test-regressions.mjs

# Full end-to-end live test (needs Chrome + extension loaded)
node test/mcp-client-test.js

File structure

websense-mcp/
├── src/
│   ├── server.js       # MCP server, 24 consolidated tools
│   ├── hub.js          # WebSocket hub (multi-slot, latch-proof)
│   ├── session.js      # Exploration map + task state machine
│   ├── incr.js         # Incremental explore diff engine
│   ├── climb.js        # Auto-climb decision logic (pure)
│   ├── summarize.js    # Goal-aware read summarization (pure)
│   ├── upload.js       # Upload verdict logic (pure)
│   └── mermaid.js      # Mermaid journey export
├── extension/
│   ├── manifest.json   # Chrome MV3
│   ├── background.js   # Service worker
│   ├── offscreen.js    # WS client, auto-reconnect, watchdog
│   └── websense-cs.js  # SAG extraction + native interaction
├── scripts/
│   ├── native_upload.py    # Windows native-file-picker helper (optional)
│   └── kill-server.ps1     # Windows dev utility (optional)
└── test/               # Regression + E2E + fixture pages

License & support

MIT — use it, fork it, ship it. If WebSense saves you hours, a coffee is appreciated ☕

GitHub Sponsors

Available Tools

28 tools
axB

Native accessibility tree via chrome.debugger (CDP Accessibility domain) — for canvas SPAs (Telegram web, Trad…

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
roleNo
textNo
matchNoclick/type: node matcher
tabIdYes
actionYes
nameContainsNoread: substring AX name match

TDQS

B3/5.0
Behavior2/5

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

No annotations are present, so the description carries the entire burden. It discloses the CDP mechanism but not behavioral implications of the action enum (especially click/type side effects), permission requirements, or limitations of the debugger-based approach.

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 opening is concise and front-loaded with mechanism and purpose, but the description appears truncated ('Trad…') and omits structured details about actions and matching, making it no more than adequately compact.

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

Completeness2/5

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

A 7-parameter tool with an action enum, nested match object, no output schema, and no annotations needs substantially more context. The agent learns what the tool is for but not how to invoke it correctly or interpret results.

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

Parameters2/5

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

Schema description coverage is only 29%, yet the description adds no parameter-level meaning for action, tabId, match, or text. It only contextualizes the resource, leaving the agent to infer how to construct a valid call.

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

Purpose4/5

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

The description names a specific resource ('native accessibility tree') and mechanism ('chrome.debugger (CDP Accessibility domain)') with a clear use case ('canvas SPAs'). It lacks an explicit verb like 'read' or 'get', and it does not explicitly distinguish among the action variants, so it falls short of a 5.

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

Usage Guidelines4/5

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

It clearly scopes use to canvas-based SPAs such as Telegram web, which signals when DOM-oriented sibling tools may be ineffective. It does not mention exclusions or alternative tools, so it misses full routing guidance.

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

clickC

Interact by ref: click (default) | mode:"hover" | mode:"rightclick" | mode:"drag" (fromRef→toRef) — or x,y vie…

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
refNo
modeNoDefault click
toRefNodrag: ref to drop onto
buttonNo
frameIdNoframeId (omit=top)
fromRefNodrag: ref to drag from
autoClimbNoOn suspected_noop, auto-deliver a genuin…

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only names the interaction modes and coordinates; it does not disclose side effects, no-op behavior, frame handling, or what happens after a click. The schema's partial hint about 'suspected_noop' and autoClimb is not mirrored in the description, leaving important runtime behavior undocumented.

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 pipe-separated structure is compact and front-loads the primary use case ('Interact by ref: click'). However, the description is visibly truncated with 'vie…', which harms completeness. Conciseness is good, but structure is marred by the incomplete ending.

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

Completeness2/5

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

With 9 parameters, no output schema, and no annotations, the description should provide enough context for correct invocation across modes, coordinates, frames, and edge cases. It covers ref-based click/hover/rightclick/drag but omits coordinate semantics, button behavior, frameId, and autoClimb. The tool is callable in simple cases but under-specified for the full range of supported inputs.

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 description adds useful semantics for drag (fromRef→toRef) and clarifies that mode defaults to click, complementing the schema's sparse enum. However, x/y is truncated ('x,y vie…') and its meaning is left ambiguous, and button, frameId, and autoClimb are not addressed beyond the schema. With schema coverage at 56%, the description only partially compensates for the undocumented parameters.

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

Purpose4/5

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

The description states an explicit action—'Interact by ref'—and enumerates the main modes: click, hover, rightclick, and drag, which makes the tool's core purpose clear. It also explains the drag variant with fromRef→toRef. However, it does not differentiate this from sibling interaction tools like press_key, type_text, or form, so it stops short of a 5.

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

Usage Guidelines2/5

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

The description lists modes but provides no guidance on when to choose click versus hover versus rightclick, nor when to use this tool instead of siblings like press_key or type_text. There are no exclusions, preconditions, or context cues for when this tool is the appropriate choice.

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

clipboardB

System clipboard: action:"copy" (text) | "read" (needs clipboardRead permission; best-effort).

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
actionYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses that read requires clipboardRead permission and is best-effort, which is valuable. However, it does not mention potential side effects of copy, return behavior, or failure modes beyond the implied best-effort caveat.

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 entire description is a single, compact sentence that front-loads the key distinctions between the two actions. There is no wasted wording, and the permission caveat is placed exactly where relevant.

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

Completeness3/5

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

For a simple two-action tool, the description covers the action options and a key permission constraint. However, without an output schema, it does not state what a read action returns or what a copy action produces, leaving some ambiguity for an agent deciding whether the tool meets its need.

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 0%, so the description must compensate. It explains the 'action' parameter by enumerating 'copy' and 'read' and maps 'text' to the copy action implicitly via 'action:"copy" (text)'. This adds meaningful semantics beyond the raw schema, though the 'text' parameter could be more explicitly tied to copy usage.

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

Purpose4/5

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

The description clearly identifies the tool as a system clipboard interface with two specific actions, copy and read. It conveys the core function with a specific resource, though it does not explicitly differentiate from the sibling tool named 'read'.

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

Usage Guidelines2/5

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

The description mentions the two actions and the permission requirement for read, but does not provide guidance on when to use this tool versus alternatives like the sibling 'read' tool or 'type_text'. No exclusions or selection conditions are stated.

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

console_logB

Captured browser console + JS errors since last call (console.log/warn/error/info/debug + window.…

ParametersJSON Schema
NameRequiredDescriptionDefault
clearNoClear the buffer after returning (defaul…
maxEntriesNoMax entries to return (default 100)

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It usefully reveals that the tool returns buffered logs accumulated since the last call and enumerates captured log types. However, it does not explain default clearing behavior, whether calling resets the buffer, or what the response format looks like, leaving side effects partially opaque.

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

Conciseness4/5

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

The description is a single compact sentence that front-loads the core function and details. It is reasonably sized, but the truncation at 'window.…' makes it feel incomplete and slightly unpolished, preventing a higher score.

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

Completeness3/5

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

For a tool with two optional parameters and no output schema, the description covers the basic purpose but omits important operational context: buffer lifecycle, default clear behavior, and when to prefer console_log over network_log. These gaps matter for an agent deciding whether and how to call it.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters clear and maxEntries are already documented in the schema. The description adds no additional semantic detail beyond what the schema provides, so it meets the baseline but does not exceed it.

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

Purpose4/5

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

The description identifies the resource (browser console + JS errors) and the log types (console.log/warn/error/info/debug), making it distinct from sibling network_log. It clearly conveys that this tool retrieves captured console output since the previous call, though the truncated 'window.…' leaves part of the description incomplete.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like network_log or evaluate. The phrase 'since last call' implies it is for inspecting console activity after browser actions, but there are no stated exclusions, prerequisites, or comparison to sibling tools.

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

cookiesC

Cookie session manager: action:"list" (metadata for a url domain — names, expiry, httpOnly, secure; NO values)…

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
nameNo
actionNo
frameIdNoframeId (omit=top)

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It does disclose one meaningful trait: list returns metadata only and explicitly no cookie values. But it is silent about the clear/clear_all actions being destructive, about side effects on the session, or any auth/permission requirements, leaving a large transparency gap.

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

Conciseness2/5

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

One short sentence is compact, but the trailing ellipsis signals truncation, and the multi-action tool deserves at least a structured summary. It under-specifies rather than being efficiently concise.

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

Completeness1/5

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

With 4 parameters, an action enum of 4 values, no output schema, and no annotations, this description is far from complete. It documents only one action and leaves the other three, the output shape, and edge cases undefined, so an agent cannot reliably invoke the tool.

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

Parameters2/5

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

Schema coverage is only 25% (frameId), and the description does not explain the required url parameter, the name parameter, or the action enum beyond the list case. It adds no meaning for get/clear/clear_all, so an agent cannot infer how to fill the parameters for those actions.

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

Purpose4/5

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

The description names the resource (cookies) and specifies the list action's output (metadata with names, expiry, httpOnly, secure, and NO values), so an agent knows the tool is cookie-related and what list returns. However, it doesn't mention the get/clear/clear_all actions or distinguish from sibling tools like session, so it's clear but not fully differentiated.

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

Usage Guidelines2/5

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

There is no when-to-use guidance or mention of alternatives. The text focuses only on what list returns; it does not say when to use cookies instead of session, network_log, or other sibling tools, nor when get/clear are appropriate.

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

dialogC

Resolve dialogs. JS dialogs (alert/confirm/prompt — captured, non-blocking): action:"accept"|"dismiss" + index…

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo
indexNo
valueNo
actionNo
keystrokeNoOS-level mode (old dismiss_dialog)

TDQS

C2.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full disclosure burden. It does add meaningful behavioral context — dialogs are "captured, non-blocking" and the keystroke parameter references "OS-level mode (old dismiss_dialog)" — but it stays silent on behavior when no dialog is pending, multi-dialog ordering, and side effects, and the text is truncated.

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 short and front-loaded with the primary verb and resource, which is efficient. However, it trails off mid-thought with "+ index…," a structural defect indicating an unfinished specification, and the single run-on sentence jumps between modes without separating concerns.

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

Completeness2/5

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

For a 5-parameter tool with no annotations, no output schema, and only one schema-described parameter, the description is inadequate. It omits value's role in prompt dialogs, key's purpose, index semantics, no-dialog behavior, and any return format, leaving an agent to guess for common cases.

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

Parameters2/5

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

With only 20% schema description coverage, the description must compensate, but it only clarifies action (accept/dismiss, which duplicates the schema enum) and gestures at index before truncating. The value parameter (needed for prompt-dialog text input), key, and index semantics are left unexplained in both the schema and the description.

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

Purpose4/5

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

The description states a specific verb and resource ("Resolve dialogs") and narrows the scope to JS dialogs (alert/confirm/prompt) with the qualifier "captured, non-blocking," which distinguishes it from native browser dialogs and from the sibling input tools (click, type_text, press_key). It loses the fifth point because the trailing "+ index…" truncation makes the statement incomplete.

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

Usage Guidelines2/5

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

There is no guidance on when to invoke this tool versus its 24 siblings. The description never states the trigger condition (e.g., "when a dialog is pending") nor excludes alternatives like press_key or type_text for handling dialog content. The intended usage is only implied by the word "dialogs."

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

evaluateA

Run JS on the page (extension isolated world, async-aware) — OR CSP-proof no-eval reads via query:{selector,ex…

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
scriptNoJS to execute (eval mode)

TDQS

A3.5/5.0
Behavior3/5

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

The description discloses meaningful behavioral details: execution happens in the extension isolated world, it is async-aware, and the query mode avoids eval for CSP-proof reads. With no annotations provided, however, the description does not cover side effects, return value serialization, or error behavior, so it only partially carries the behavioral burden.

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

Conciseness4/5

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

The description is a single information-dense sentence with the core action front-loaded and the two modes clearly separated by 'OR'. It earns a high score for efficiency, though the apparent truncation after 'ex...' keeps it from being fully polished.

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

Completeness2/5

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

For a tool with no output schema, no annotations, and a rich nested query parameter, the description leaves out important operational details such as return format, whether script and query are mutually exclusive, and what happens on execution errors. It provides enough to start, but not enough for an agent to invoke it confidently in all intended scenarios.

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

Parameters3/5

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

The description adds meaning by framing 'script' as eval mode and 'query' as no-eval reads, which helps disambiguate the two top-level parameters. But schema coverage is only 50% and many nested query sub-properties (all, text, state, inputs, maxLen) are not explained in the description or schema. It partially compensates but not fully.

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

Purpose5/5

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

The description names a specific action ('Run JS on the page') and explicitly identifies a second mode ('CSP-proof no-eval reads via query'). This makes the tool's dual purpose clear and distinguishes it from simpler read/inspect siblings. Even though the text appears truncated, the core purpose is unambiguous.

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

Usage Guidelines3/5

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

The description implies two usage contexts: arbitrary JS execution and no-eval query-based reads for CSP-constrained pages. However, it does not explicitly say when to prefer evaluate over siblings like read, inspect, or explore_page, nor does it state when not to use the tool. The guidance is implicit rather than actionable.

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

explore_pageC

Page map: every interactive element with ref (E#), action type, predicted effect, forms (F#), content.…

ParametersJSON Schema
NameRequiredDescriptionDefault
fullNoInclude offscreen elements
goalNoNatural-language goal; returns ONLY goal…
intentNoFind elements by semantic intent e.g.…
compactNoQuick list only (old discover_actions), …
frameIdNoframeId (omit=top)
preloadNoForce-load lazy content before extractio…
maxActionsNoCap for compact mode (default 250)
incrementalNoReturn only added/changed/removed since …
includeHiddenNoInclude hidden elements
includeContentNoInclude body text (default true)

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It usefully discloses that the tool enumerates interactive elements and their predicted effects rather than executing them, implying a read-only reconnaissance role. However, it never explicitily states side-effect behavior, and traits like lazy-content preloading, hidden-element inclusion, or incremental diffs live only in the schema, not the description.

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 short and front-loaded with the core concept ('Page map'), which is good. But it ends abruptly with '…', indicating truncation rather than intentional terseness, which is a structural defect for a definition that should be complete.

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

Completeness2/5

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

This is a high-complexity tool (10 optional parameters, several distinct modes: goal, intent, compact, incremental, preload) with no output schema and no annotations. The truncated description leaves the return shape only partially specified, so an agent cannot fully anticipate what explore_page returns in each mode, making the definition incomplete for reliable invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3; the tool description adds only the output-structure context (E# refs, action types, effects, F# forms, content) that helps interpret parameters like goal, compact, and intent. It does not go beyond the schema to explain parameter interactions or formats, and several schema descriptions are themselves truncated.

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

Purpose4/5

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

The description states a specific deliverable — a page map of every interactive element with ref (E#), action type, predicted effect, forms (F#), and content — so an agent knows what explore_page produces and roughly what the output looks like. It is not a 5 because it lacks an explicit verb in the description itself and does not differentiate it from siblings like inspect, ax, or read, and the trailing ellipsis truncates the thought.

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

Usage Guidelines2/5

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

There is no guidance on when to use explore_page versus the many sibling tools (click, type_text, inspect, screenshot, read, etc.). The only implicit signal is the schema's compact parameter referencing 'old discover_actions', which hints at history but gives no actionable selection criteria or exclusions.

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

extension_reloadA

Reload the WebSense extension itself (chrome.runtime.reload) and wait for it to reconnect.…

ParametersJSON Schema
NameRequiredDescriptionDefault
frameIdNoframeId (omit=top)
timeoutMsNoHow long to wait for reconnect (default …

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It transparently discloses that the tool reloads the actual extension via chrome.runtime.reload and waits for it to reconnect, giving a clear picture of the action and its blocking behavior. It stops short of detailing what state is destroyed or whether any automation context is lost.

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

Conciseness5/5

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

A single, front-loaded sentence conveys the action, the target, the implementation, and the post-action wait behavior with no filler.

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

Completeness4/5

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

For a simple tool with optional parameters and no output schema, the description gives enough context to invoke it correctly: what it targets, what it does, and what happens next. It could be more complete by noting side effects or usage situations, but nothing essential is missing for a basic call.

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 documents both parameters (frameId and timeoutMs) with 100% coverage, so the description adds no parameter-level detail. This matches the baseline for high schema coverage.

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

Purpose5/5

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

The description names a specific verb ('Reload'), a precise resource ('the WebSense extension itself'), and the implementation (chrome.runtime.reload). It clearly distinguishes this from page-navigation tools by emphasizing the extension itself.

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

Usage Guidelines3/5

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

The description implies when to use the tool (whenever the extension needs reloading and reconnection), but it does not state conditions, when not to use it, or compare it with any sibling tool. Usage context must be inferred.

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

formC

Form ops: action:"state" (fields, validation, submit readiness; formRef optional = all) | "select" (ref,value …

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
valueNo
actionYes
formRefNostate: form ref e.g. "F0" (omit = all fo…
frameIdNoframeId (omit=top)
clearAllNoselect on multi-select: deselect non-mat…
filePathNo

TDQS

C2.8/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of disclosing behavior. It clarifies that 'state' returns form fields, validation, and readiness, and hints at selection behavior, but it does not disclose side effects of 'select', 'toggle', 'special', or 'upload', nor any persistence, submission, or destructive implications.

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 compact and front-loads the action names, which is good. However, it is telegraphic, uses an incomplete pipe-separated structure, and appears truncated mid-sentence, reducing readability and completeness.

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

Completeness2/5

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

This is an action-dispatch tool with seven parameters, no output schema, and no annotations, so the description should provide substantial guidance. It only covers two of five actions and omits return shapes, parameter semantics for several fields, and behavior for upload/special/toggle, leaving critical gaps for reliable invocation.

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

Parameters2/5

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

Schema description coverage is only 43%, so the description must compensate. It does add meaning for action-specific usage (e.g., formRef omitted means all forms, select uses ref and value), but it leaves ref, value, filePath, and the toggle/special/upload actions semantically unexplained.

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

Purpose4/5

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

The description identifies the tool as 'Form ops' and enumerates specific operations: 'state' returns fields, validation, and submit readiness; 'select' accepts a ref and value. This makes the core purpose clear, though the truncation leaves 'toggle', 'special', and 'upload' unexplained and there is no explicit contrast with sibling tools.

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

Usage Guidelines3/5

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

The description implies that this tool should be used for form-related operations, and it gives some context for when to use 'state' vs 'select'. However, it never explicitly states when to choose this tool over siblings such as click, type_text, or real_click, nor does it provide exclusion criteria.

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

inspectB

Element introspection without vision: kind:"element" (is ref alive? re-resolve after re-render → {found,tag,te…

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
kindYesWhat to inspect
refANorelation: first element
refBNorelation: second element
selectorNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries full responsibility for behavior. It does disclose a key trait ('without vision') and a timing behavior (re-resolve after re-render) plus a partial return shape ({found, tag, te…). However, it does not mention side effects, failure modes, or behavior for geometry/relation kinds, so transparency is incomplete.

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

Conciseness3/5

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

The given text is concise and front-loaded with the core purpose. However, it clearly appears truncated mid-word ('te…'), which disrupts structure and completeness. A definition that ends abruptly cannot be fully evaluable as a polished, complete tool description.

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

Completeness2/5

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

This tool has five parameters, a three-value enum, no output schema, and no annotations—so the description must compensate heavily. It only details the 'element' kind, omits geometry/relation behavior, and provides no return-format explanation beyond a fragment. The description is too incomplete for an agent to know how to call this tool for all advertised kinds, making contextual completeness inadequate.

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 60%, so the schema documents kind, refA, and refB. The tool description adds meaning for the ref parameter in the element context (checking liveness, re-resolve after re-render) and illustrates the kind enum. But it does not explain selector or the geometry/relation parameter interactions at all, leaving some of the parameter space under-explained.

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

Purpose4/5

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

The description opens with 'Element introspection without vision', which states a specific action on a specific resource and distinguishes it from visual tools like screenshot. It further clarifies the element kind by showing an example outcome (is ref alive? re-resolve after re-render → {found,tag,te…), though it only elaborates on the 'element' kind and is truncated. Overall, the core purpose is clear, but it could better differentiate among the three kinds (element, geometry, relation).

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

Usage Guidelines3/5

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

The phrase 'without vision' implies when to use this tool—when you need DOM/ref introspection rather than a screenshot—but it does not explicitly name alternatives or state when not to use it. The element example (re-resolve after re-render) gives a concrete use case. No direct comparison to sibling tools like evaluate or explore_page is provided, leaving selection partly to inference.

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

network_logA

Captured fetch/XHR since last call (call once to start, again after interactions).…

ParametersJSON Schema
NameRequiredDescriptionDefault
clearNoClear log after returning (default true)
maxEntriesNoDefault 50

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does reveal the stateful two-call pattern and the log scope ('since last call'). However, it omits the default clearing behavior (clear=true) and gives no indication of the response shape. These are meaningful gaps for an agent predicting side effects.

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

Conciseness5/5

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

The description is extremely compact, front-loading the essential function in the first phrase and following with the usage pattern. No wasted words or repetition of schema information. It is appropriately sized for its purpose.

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

Completeness3/5

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

The tool has a non-obvious stateful flow, no output schema, and no annotations, so the description should clarify what each call returns and any side effects. It explains the call pattern but not the response format or default clearing behavior. The schema covers parameter semantics, yet an agent still faces ambiguity about the first call's result.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. Both parameters (clear and maxEntries) are already documented in the schema. The description adds general context about the log window but no parameter-specific meaning beyond what the schema provides.

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

Purpose4/5

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

The description identifies the resource (fetch/XHR entries) and the core behavior (captured since last call). It distinguishes this tool from siblings like console_log and cookies by content type. However, it lacks an explicit verb such as 'get' or 'return', making the operation slightly implicit.

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 parenthetical 'call once to start, again after interactions' provides a clear, actionable call pattern and indicates when the tool should be invoked relative to user interactions. It does not explicitly name alternatives or exclusions, but the context is sufficiently clear for an agent to know how to use it.

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

press_keyB

Press key(s) with modifiers: press_key("c",["ctrl"]) = Ctrl+C, press_key("Tab",["shift"]) = Shift+Tab.…

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
refNo
frameIdNoframeId (omit=top)
modifiersNo

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the core action and modifier syntax, but omits context about event target (page vs OS), focus requirements, key release behavior, or side effects, which matters for an automation tool.

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

Conciseness5/5

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

The description is a single sentence with two illustrative examples; it is front-loaded with the action and parameter syntax, and every word earns its place. The ellipsis suggests the original may continue, but as provided it is appropriately sized and clear.

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

Completeness2/5

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

With no annotations and no output schema, and four parameters (one undocumented), the description is too thin. It doesn't explain ref, doesn't give usage boundaries, and doesn't state what result or state change to expect, so an agent lacks some context needed for confident invocation.

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

Parameters3/5

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

Schema description coverage is only 25%, so the description must compensate. It does explain key and modifiers via example calls, giving meaningful semantics to those parameters, but leaves ref entirely undocumented and relies on the schema for frameId. This partial compensation is adequate but incomplete.

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

Purpose5/5

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

The description uses a specific verb ('Press') and resource ('key(s)') and provides concrete examples (Ctrl+C, Shift+Tab) that make the operation unmistakable. It clearly distinguishes itself from sibling input tools like type_text and click through the notion of pressing key combinations.

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

Usage Guidelines3/5

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

No explicit when-to-use or alternative guidance is given. The examples imply keyboard shortcut usage, but there is no mention of when press_key should be preferred over type_text or other input tools.

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

readC

Read page content. format: "text" (innerText of selector, offset-paged) | "content" (smart SPA extraction) | "…

ParametersJSON Schema
NameRequiredDescriptionDefault
goalNotext format: goal phrase — auto-summariz…
formatNo
maxLenNo
offsetNo
frameIdNoframeId (omit=top)
restoreNopreload: restore scroll after sweep (def…
scrollsNoscrollextract: number of scrolls (defaul…
maxStepsNopreload: max scroll steps (default 25)
selectorNo
settleMsNopreload/scrollextract: ms per step
directionNo
scrollDelayNoscrollextract: ms per scroll (default 15…
summarizeAtNotext format: auto-summarize above this m…

TDQS

C2.9/5.0
Behavior2/5

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

Annotations are absent, so the description must carry behavioral disclosure. It reveals some format behavior, but does not disclose that scrollextract/preload variants may scroll, trigger network requests, or change page state, nor does it say anything about return shape or limits.

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

Conciseness4/5

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

The description is compact and front-loads the action plus a format map. The trailing '…' makes the format list feel unfinished, preventing a 5.

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

Completeness2/5

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

With 13 parameters, no output schema, and no annotations, this definition is under-specified. Each format needs its own semantics, scrolling side effects should be flagged, and key parameter interactions should be clarified.

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 62% and there are 13 parameters, so the description must add real meaning. It explains two format values, but leaves selector, goal, summarizeAt, diff, preload, and scrollextract parameters largely to terse schema snippets.

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

Purpose4/5

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

The definition names a clear verb and resource — 'Read page content' — and gives useful format distinctions ('text' as innerText with offset paging, 'content' as smart SPA extraction). It doesn't explicitly differentiate from sibling tools like explore_page or screenshot, so it isn't a 5.

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 when-to-use guidance, no exclusions, and no pointer to alternatives. The format list implies choices, but the description never tells an agent when to prefer read over explore_page, screenshot, or evaluate.

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

real_activate_tabC

REAL OS click on a Chrome tab pill via UIA (pywinauto click_input) — activates the tab so its content script i…

ParametersJSON Schema
NameRequiredDescriptionDefault
gateNoExpected window title after activation (…
matchYesTab title substring to match (e.g.…
frameIdNoframeId (omit=top)

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are provided, so the description must carry safety/behavior disclosure. It discloses that it uses pywinauto click_input (a real OS click) and that it activates the tab, which is useful behavioral context. However, it omits side effects, preconditions (e.g., foreground window, tab visibility), and failure modes, and the sentence is truncated.

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?

One short, direct sentence with no redundancy, but it is cut off mid-sentence ('content script i…'), which prevents it from being a neatly structured definition.

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

Completeness2/5

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

The tool is simple, but with no annotations, no output schema, and a truncated description, important context is missing: when to use it, what happens if the tab pill isn't found, and what the content script does after activation.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters already have explanations. The description adds little semantic detail beyond the schema; it doesn't clarify how 'match' relates to tab pill labels or how 'gate' is used.

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

Purpose4/5

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

States it performs a real OS-level click on a Chrome tab pill using UIA/pywinauto and that the goal is to activate the tab so its content script can run. This is specific and distinguishes it from generic click tools, though it doesn't name a sibling or delimit scope.

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

Usage Guidelines2/5

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

No explicit when-to-use or alternatives are mentioned. The 'REAL OS' wording implies it is for physical UI automation rather than DOM-level click, but there is no statement of when to prefer this over real_click, click, or tabs. This leaves routing to inference.

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

real_clickA

GENUINE OS-level click (SendInput) at VIEWPORT coords (x,y) — bypasses synthetic-click-ignoring submit buttons…

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
gateYesExpected active-tab title substring (gat…
originNoOverride page Document origin Y (default…
frameIdNoframeId (omit=top)

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It reveals the mechanism (OS-level SendInput), coordinate space (viewport), and a key behavior (bypassing synthetic-click-ignoring elements), but it does not mention potential side effects, active-tab requirements, or failure behavior. This is useful but not fully transparent.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. The key mechanism and use case are introduced immediately, and every word adds value.

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

Completeness3/5

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

For a tool with five parameters, no annotations, and no output schema, the description provides the core click semantics and a motivating use case, but it omits explanation of the required 'gate' parameter's safety role and the optional origin/frameId parameters. It is adequate for a simple click action but leaves meaningful gaps for correct invocation in more complex scenarios.

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

Parameters3/5

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

Schema coverage is 60%, and the description adds meaning by clarifying that x and y are viewport coordinates, which is not present in their schema entries. However, it does not explain gate, origin, or frameId beyond the partial schema descriptions, leaving some parameter semantics to inference.

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

Purpose5/5

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

The description clearly states the tool performs a genuine OS-level click via SendInput at viewport coordinates, which is a specific verb and resource. It also distinguishes itself from the sibling 'click' tool by emphasizing 'GENUINE OS-level' and the ability to bypass synthetic-click-ignoring elements.

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

Usage Guidelines4/5

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

The phrase 'bypasses synthetic-click-ignoring submit buttons' provides a clear context for when this tool should be preferred over a synthetic click. It does not explicitly name the sibling alternative or state when not to use it, but the intended use case is reasonably clear.

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

real_pasteA

GENUINE paste into a focused editor (click at VIEWPORT coords + system clipboard + real Ctrl+V) — for Lexical/…

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
gateYesExpected active-tab title substring (gat…
textYes
frameIdNoframeId (omit=top)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It explicitly discloses that the tool clicks at viewport coordinates, writes to the system clipboard, and sends a real Ctrl+V keystroke, which is strong transparency about side effects. It could additionally mention clipboard overwriting or failure behavior, but the main risky behaviors are 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?

One tightly packed sentence delivers the operation, the mechanism, and the use case with no filler. Key information is front-loaded and every phrase earns its place.

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

Completeness4/5

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

For a mutating tool with no annotations and no output schema, the description gives enough to call it correctly: target coordinates, clipboard involvement, Ctrl+V behavior, and a clue about when it is needed. It omits explicit failure conditions and clipboard-replacement warnings, but the main invocation context is well covered.

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 only 40%, but the description compensates by mapping x/y to viewport coordinates, text to the clipboard payload, and the overall action to a paste. The gate parameter is covered only in the schema, and frameId is left implicit, so not every parameter is fully explained, but the core ones are.

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 names the operation as a 'GENUINE paste into a focused editor' and spells out the mechanism: click at coordinates, use the system clipboard, and send a real Ctrl+V. The 'for Lexical/…' qualifier signals the intended niche, distinguishing it from sibling tools like type_text or press_key.

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

Usage Guidelines4/5

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

The description implies when to use this tool: when a genuine OS-level paste is needed, such as in Lexical or similar rich-text editors where synthetic input may fail. It does not explicitly list alternatives or when-not-to-use conditions, but the 'real Ctrl+V' and 'GENUINE' wording provides useful situational context.

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

respawn_offscreenA

Force-close + recreate the offscreen document so the CURRENT on-disk extension code loads.…

ParametersJSON Schema
NameRequiredDescriptionDefault
frameIdNoframeId (omit=top)

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It does disclose the destructive nature ('Force-close + recreate'), but it does not mention potential side effects such as loss of in-memory state or any impact on existing extension contexts. This is adequate but not fully 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 entire description is one short, front-loaded sentence that immediately conveys the action and purpose. Every word earns its place; there is no filler or repetition.

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

Completeness4/5

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

For a simple tool with one optional parameter fully documented in the schema, the description plus schema provide enough context to invoke it correctly. It could be slightly more complete by noting side effects, but the core purpose and mechanics are clear.

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 fully describes the only parameter (frameId, omit=top), so the description adds no additional parameter meaning. The baseline of 3 applies because schema coverage is 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 uses a specific imperative verb and resource: it force-closes and recreates the offscreen document. It also states the intended outcome—loading the current on-disk extension code—which distinguishes this from any sibling tool.

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

Usage Guidelines4/5

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

The phrase 'so the CURRENT on-disk extension code loads' clearly implies use after code changes when a reload of the offscreen document is needed. It does not explicitly list exclusions or alternatives, but none of the sibling tools appear to provide equivalent functionality.

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

revealB

Pre-extract hidden content WITHOUT clicking: kind:"dropdown" (all options, native + ARIA) | "tabs" (all tab pa…

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
kindYesWhat to reveal
frameIdNoframeId (omit=top)

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full transparency burden. It clearly discloses that the tool does not click and that it covers native and ARIA variants for dropdowns, which is useful behavioral information. It does not describe the return format, possible state changes, limitations, or what happens for the truncated 'tabs' and 'accordion' cases.

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

Conciseness3/5

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

The description is concise and front-loaded with the core purpose, which is good. The enumeration by kind is efficient, but the description is truncated mid-phrase ('all tab pa…'), making the structure incomplete and reducing its usability as a reference.

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

Completeness2/5

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

This is a tool with three parameters, no output schema, and no annotations, so the description must carry substantial context. It explains some behavior and the meaning of 'kind', but it omits output details, 'ref' semantics, and full coverage of the enum values, while being cut off. An agent cannot fully understand what this tool returns or how to safely invoke it in all cases.

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

Parameters3/5

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

Schema description coverage is 67%, so the schema covers 'kind' and 'frameId' but not 'ref'. The tool description adds valuable meaning for the 'kind' parameter by specifying 'all options, native + ARIA' for dropdowns and 'all tab panels' for tabs. However, it does not clarify 'ref' and the tabs part is cut off, so parameter guidance is incomplete.

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

Purpose4/5

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

The description states a specific verb ('Pre-extract') and resource ('hidden content') and emphasizes that it works 'WITHOUT clicking', which helps distinguish it from click-based tools. The breakdown by kind ('dropdown', 'tabs', 'accordion') adds concrete scope. However, the description is visibly truncated ('all tab pa…'), so the full range of behavior is not completely clear.

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

Usage Guidelines3/5

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

The phrase 'WITHOUT clicking' implies this tool is for extracting hidden content without triggering UI interactions, giving some usage context. It does not explicitly name sibling alternatives or state when not to use it, so the guidance is implied rather than explicit. Sibling tools like click, read, and screenshot exist, but the description does not contrast against them.

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

screenshotA

Capture the visible tab via chrome.tabs.captureVisibleTab (chrome.tabs API — NO CDP, no bot-detection surface)…

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo
qualityNoJPEG quality 0-100 (default 80)

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the underlying API and highlights the absence of CDP/bot-detection surface, which is useful. But it does not describe the return format, what 'visible tab' means across states, or any permission or side-effect considerations.

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 one focused sentence with no filler, and the parenthetical method/anti-detection detail earns its place. The trailing ellipsis is a minor structural distraction and slightly undermines the otherwise tight presentation.

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

Completeness3/5

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

For a simple two-parameter tool, the description and schema give enough to invoke it, but the description does not state what the tool returns. Since there is no output schema, mentioning the return form would materially improve completeness.

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

Parameters3/5

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

The description adds no parameter-level meaning beyond the input schema. The schema already documents the 'quality' parameter and the 'format' enum values, and with 50% coverage the description does not need to carry the full load, but it also does not compensate for the undocumented half.

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

Purpose5/5

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

The description names a specific verb and resource: capture the visible tab via chrome.tabs.captureVisibleTab. It also distinguishes the tool from CDP-based capture approaches by stating 'NO CDP, no bot-detection surface', making the tool's purpose clear and differentiable.

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

Usage Guidelines3/5

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

The description implies this tool is the safe, non-CDP way to capture the visible tab, which is useful context for selection. However, it never explicitly states when to use this tool versus an alternative, nor does it name any sibling tool as a competing option.

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

scrollB

Scroll: direction:"down"+amount (ticks, 1 tick ≈ 80% viewport; ref scrolls that element's container) — or y:<p…

ParametersJSON Schema
NameRequiredDescriptionDefault
yNo
refNo
amountNo
frameIdNoframeId (omit=top)
intoViewNoRef to scroll into center of viewport
directionNo

TDQS

B3.1/5.0
Behavior3/5

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

The description adds useful behavioral context beyond the schema, notably '1 tick ≈ 80% viewport' and 'ref scrolls that element's container'. Since there are no annotations, these details matter. However, the description is truncated and leaves the behavior of other modes like y, intoView, and frameId partially unexplained.

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 visible text is compact and front-loaded with the main action, but it is visibly truncated ('— or y:<p…'). This makes the structure incomplete and prevents it from being cleanly assessable as a finished, well-formed definition.

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

Completeness2/5

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

The tool has six optional parameters, no required parameters, no output schema, and no annotations, so the description carries a heavy burden. The description covers only a subset of usage modes, omits combination semantics, and is cut off, leaving an agent without enough information to reliably construct every valid call.

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 only 33%, so the description has to compensate. It does by explaining the meaning of direction+amount as ticks, the approximate viewport proportion, and the ref parameter's container-scrolling behavior. It also begins to explain the y parameter, adding real semantic value over the bare schema.

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

Purpose4/5

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

The description clearly identifies the verb and resource by starting with 'Scroll:' and then demonstrating usage patterns. It distinguishes the tool's basic function, though it does not explicitly contrast with sibling tools like navigate or click.

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

Usage Guidelines2/5

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

No guidance is given for when to use this tool versus alternatives such as navigate, explore_page, or click. The description is purely syntax-oriented and does not state selection criteria or excluded cases.

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

sessionC

Exploration session: action:"reset" (clear map + tab binding — use when starting a new task) | "map" (pages vi…

ParametersJSON Schema
NameRequiredDescriptionDefault
opNotask: operation
goalNotask begin: the task goal
stepNotask done/skip: step label (omitting mar…
stepsNotask begin: ordered step labels
actionYes
detailNomermaid detail (default pages_actions)
directionNo

TDQS

C2.9/5.0
Behavior2/5

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

There are no annotations, so the description must carry the full burden of behavioral disclosure. It does reveal that reset clears the map and tab binding, which is useful, but it does not explain what map returns, what mermaid renders, what task operations do, or whether these actions mutate persistent session state. The truncated text also cuts off important behavior.

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

Conciseness3/5

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

The pipe-separated format is compact and front-loads the most important action, which is good. However, the description is visibly truncated mid-word after 'pages vi…', which is a structural defect rather than intentional conciseness.

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

Completeness2/5

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

With no annotations and no output schema, the description must provide sufficient context on its own. Given seven parameters, four enums, and multiple action modes, the provided text only covers reset and partially covers map, leaving mermaid, task, direction, outputs, and cross-sibling behavior unexplained.

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 71%, and the schema already describes op, goal, step, steps, and detail. The description adds meaning to the otherwise undocumented action enum by explaining reset and beginning to explain map. Direction and task-related semantics remain undocumented, but the description does add value beyond the schema.

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

Purpose3/5

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

The description establishes that this is an exploration-session control with actions like reset and map, and it gives a concrete meaning for reset: clear map + tab binding. However, it is truncated at 'pages vi…', never states the full scope of the tool, and does not clearly define what the session tool itself is responsible for relative to siblings like explore_page or status.

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

Usage Guidelines3/5

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

The description gives one explicit usage instruction: use reset when starting a new task. That is actionable. But it provides no guidance for map, mermaid, or task, and no comparison with sibling tools, so an agent cannot confidently decide when to use session instead of alternatives.

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

statusA

Diagnostics: kind:"page" (URL/title/modal/captcha/loading/viewport — call after actions) | "bridge" (hub+page …

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoDefault page

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does reveal the diagnostic categories returned for 'page' and partially for 'bridge', but it is truncated, does not mention side effects, response format, or error behavior, and leaves the 'doctor' and 'downloads' kinds unexplained.

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 front-loads the key concept and is compact, but it is truncated mid-phrase and does not form a complete, self-contained explanation. It is concise but at the cost of completeness.

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

Completeness2/5

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

Without an output schema or annotations, the description is the only source of behavioral and contextual information. The truncation leaves the 'bridge', 'doctor', and 'downloads' kinds unclear, and there is no guidance about return values or how this differs from sibling diagnostic tools.

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

Parameters4/5

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

Although schema coverage is 100%, the description adds meaning beyond the enum labels by explaining what 'page' and 'bridge' diagnostics include. This helps an agent select the right kind, even though the description is incomplete for the remaining enum values.

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

Purpose4/5

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

The description clearly identifies this as a diagnostics tool for checking page state (URL, title, modal, captcha, loading, viewport) and bridge state. It is reasonably clear about what the tool reports, though it lacks a specific verb and does not explicitly distinguish itself from sibling diagnostic tools like inspect or network_log.

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 a clear usage cue: call after actions for page diagnostics. However, it does not provide exclusions or mention when to prefer alternative tools, and the guidance appears to apply mainly to the 'page' kind rather than all enum values.

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

tabsC

Tab/window ops: action:"list" | "switch" (tabId) | "close" (tabId) | "bind" (tabId, activate? — route page ops…

ParametersJSON Schema
NameRequiredDescriptionDefault
tabIdNo
toTabNotransfer: destination tab
actionYes
fromTabNotransfer: source tab
activateNobind: also activate the tab
selectorNo
useValueNotransfer: copy input VALUE instead of vi…
windowIdNo
toSelectorNotransfer: destination selector
fromSelectorNotransfer: source selector

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It lists operations such as close, move, and transfer without explaining side effects, permissions, or return behavior, and the description trails off with 'route page ops…' without finishing. This is insufficient for agents deciding whether an action is destructive or safe.

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 compact and front-loaded with the most essential action syntax. The trailing ellipsis and fragmented 'route page ops…' make it feel cut off rather than deliberately concise, and important action definitions are missing.

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

Completeness2/5

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

With ten actions, ten parameters, no output schema, and no annotations, this description is far too thin. It does not enumerate all actions, explain parameter groupings per action, or describe what an agent should expect back, leaving substantial ambiguity for a tool with this much surface area.

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 description adds some parameter-to-action mapping by showing 'switch (tabId)', 'close (tabId)', and 'bind (tabId, activate?)', which goes beyond the raw schema. However, it covers only a subset of the ten actions and fails to document how selector, windowId, useValue, from/to params, and similar fields relate to the remaining actions. Schema coverage is 60%, so the description only partially compensates.

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

Purpose4/5

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

The description identifies the resource as tabs/windows and gives concrete action syntax examples (list, switch, close, bind), so an agent can recognize this as the tab/window management tool. It is less than complete because the action list is truncated with an ellipsis and not all ten enum actions are shown.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives like navigate, click, or reveal, and no exclusions are given. The action syntax implies usage for tab/window operations, but the agent is left to infer when this tool is appropriate.

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

type_textB

Fill input(s) with the React-safe native setter + input/change events. One field: ref+text.…

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
textNo
fieldsNoBatch mode: up to 50 fields
frameIdNoframeId (omit=top)
clearFirstNoClear before typing (default true)

TDQS

B3.1/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 behavioral disclosure burden. It usefully discloses that the tool uses the React-safe native setter and fires input/change events, which is important for React apps. However, it does not mention the default clear-before-typing behavior, batch limits, or any side effects, leaving significant behavioral gaps that the schema only partially covers.

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

Conciseness4/5

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

The description is concise and front-loaded with the primary action, and the technical mechanism is stated in as few words as possible. However, the phrase 'One field: ref+text…' is vague and reads like unfinished thought, which slightly reduces clarity. Overall, the length is appropriate but the structure could be improved with a less cryptic fragment.

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

Completeness2/5

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

Given no annotations and no output schema, the description is the main source of context, but it fails to explain batch mode through the 'fields' array, the purpose of frameId, or the default clearing behavior. The tool has multiple parameters and sibling tools with overlapping domains, yet the description leaves many operational details to be inferred. This is inadequate for a tool with this complexity.

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

Parameters3/5

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

Schema description coverage is 60%, covering fields, frameId, and clearFirst. The description adds a slight semantic hint that 'ref+text' are the core parameters for a single field, but it does not elaborate on their formats or relationships. It adds limited value beyond the schema and does not compensate for the 40% of parameters lacking descriptions.

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

Purpose4/5

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

The description clearly identifies the action ('Fill input(s)') and the resource ('input(s)'), with a specific technical mechanism ('React-safe native setter + input/change events') that distinguishes it from simpler approaches. The phrase 'One field: ref+text' is somewhat cryptic but does not obscure the core purpose. It differentiates from sibling tools like press_key and click, which target keyboard and mouse actions rather than text input.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use type_text versus alternatives such as form, press_key, or read. The 'One field: ref+text' hint implies a simple usage pattern but does not explain batch mode or when to prefer this tool over others. There are no exclusions or conditions specifying which scenario calls for this tool versus a sibling.

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

waitB

Block until a condition (poll) OR a page event. Conditions (ANDed): urlContains, hasModal, hasCaptcha, notLoad…

ParametersJSON Schema
NameRequiredDescriptionDefault
eventNoEvent mode: dialog_open, dialog_close, n…
pollMsNoDefault 400
scriptNoWait until JS expression truthy
hasModalNo
selectorNo
timeoutMsNoDefault 10000
hasCaptchaNo
notLoadingNo
urlContainsNo
pendingDialogsGtNo

TDQS

B3.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 of behavioral disclosure. It does disclose the core blocking behavior and the AND/OR semantics of conditions and events. However, it never states what happens on timeout (timeoutMs default 10000 implies a failure mode but it is not named), whether the operation is non-destructive, or how poll mode and event mode 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 one front-loaded sentence that leads with the action verb and packs both operating modes into the first clause. It is appropriately compact. The trailing ellipsis ('notLoad…') signals a truncated list rather than deliberate conciseness, which is a minor structural flaw.

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

Completeness2/5

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

For a tool with 10 parameters, zero annotations, and no output schema, this description is substantially incomplete. It fails to cover event-mode values, the timeout/failure contract, and the semantics of selector and pendingDialogsGt. An agent cannot fully predict this tool's behavior from the description and schema alone.

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

Parameters3/5

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

Schema description coverage is only 40%, so the description must compensate. It adds real meaning by explaining that urlContains, hasModal, hasCaptcha, and notLoading are conditions that are ANDed and polled — semantics the bare boolean/string schema fields do not convey. However, selector and pendingDialogsGt remain unexplained in both schema and description, and the event parameter's schema text is itself truncated.

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

Purpose4/5

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

The description uses a specific verb ('Block until') and names the resource: page conditions or page events. It enumerates concrete conditions (urlContains, hasModal, hasCaptcha) and states they are ANDed, which distinguishes this synchronization tool from action siblings like click, type_text, and navigate. However, the sentence ends truncated ('notLoad…'), leaving the full condition list unstated and the 'page event' branch vague.

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

Usage Guidelines3/5

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

The description implies the usage context: use it when a subsequent action depends on a page reaching a condition or an event firing, and it correctly conveys that conditions combine with AND. But it gives no exclusions, names no alternative sibling (e.g., status or read for non-blocking state checks), and offers no guidance on choosing between poll mode and event mode.

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

websense_guideA

START HERE. Full usage guide for the 21 consolidated WebSense tools: explore, read, click, type, form, scroll,…

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool is informational rather than mutating by calling it a 'usage guide' and listing the tools it covers. It does not describe output format or exact interaction mechanics, but for a zero-parameter, read-only guidance tool the behavioral risk is low and the description is sufficiently 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 extremely concise and front-loaded: 'START HERE.' immediately communicates priority, and the rest names scope and examples in one short sentence. Every word earns its place; there is no filler.

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 (zero parameters, no output schema, no complex side effects), the description is complete. It tells the agent to start here, identifies the full scope as the 21 consolidated WebSense tools, and gives representative examples so the agent knows what kind of guidance to expect. Nothing critical is 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 tool has zero parameters and the schema already fully reflects that. The description adds no parameter-specific details, but none are needed. Per the rubric, a zero-parameter tool earns a baseline score of 4.

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

Purpose5/5

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

The description clearly identifies the tool as a starting-point usage guide: 'START HERE. Full usage guide for the 21 consolidated WebSense tools.' It specifies the resource (the 21 WebSense tools) and distinguishes it from the operational sibling tools like explore, read, and click. The purpose is unambiguous and not a mere restatement of the name.

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

Usage Guidelines4/5

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

The description explicitly tells the agent when to use this tool: 'START HERE.' This is strong, clear usage guidance relative to the operational sibling tools. It does not explicitly state when not to use it, but for a meta-guide tool the intended ordering is obvious.

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. 5 tool updatesv1.1.1
    • Addedextension_reload
    • Changedform2 fields changed
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "state",
        -  "select",
        -  "toggle",
        -  "upload"
        -]New value: +[
        +  "state",
        +  "select",
        +  "toggle",
        +  "special",
        +  "upload"
        +]
      • addedInput schema / properties / clearAll
        Added value: +{
        +  "description": "select on multi-select: deselect non-mat…",
        +  "type": "boolean"
        +}
    • Addedreal_activate_tab
    • Addedreal_click
    • Addedreal_paste
  2. 24 tool updatesv1.0.0
    • First observedax
    • First observedclick
    • First observedclipboard
    • First observedconsole_log
    • First observedcookies
    • First observeddialog
    • First observedevaluate
    • First observedexplore_page
    • First observedform
    • First observedinspect
    • First observednavigate
    • First observednetwork_log
    • First observedpress_key
    • First observedread
    • First observedrespawn_offscreen
    • First observedreveal
    • First observedscreenshot
    • First observedscroll
    • First observedsession
    • First observedstatus
    • First observedtabs
    • First observedtype_text
    • First observedwait
    • First observedwebsense_guide

TDQS

C2.9/5.0
Disambiguation2/5

Several tools overlap in purpose, such as click vs real_click vs press_key, and type_text vs real_paste. The descriptions help somewhat, but an agent could easily select the wrong variant for text entry or element interaction.

Naming Consistency3/5

Names are descriptive and all snake_case, but conventions are mixed: single verbs like read/click/scroll, verb_noun forms like type_text/press_key, noun_verb forms like network_log/extension_reload, and the special real_* and websense_* prefixes. It is readable but not predictable enough for a coherent set.

Tool Count2/5

At 28 tools, the surface is heavy and exceeds the typical well-scoped range. Several tools are meta or highly specialized low-level variants (websense_guide, real_activate_tab, respawn_offscreen) that could be consolidated without losing core capability.

Completeness5/5

The tool set covers the full browser automation lifecycle: navigation, reading, clicking, typing, forms, scrolling, waiting, tabs, dialogs, cookies, console/network logs, screenshots, accessibility, JS evaluation, and session management. There are no obvious dead ends or major missing operations for its stated domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

  • F
    license
    Not graded
    quality
    B
    maintenance
    A semantic browser runtime for AI agents that replaces raw HTML with structured data and dynamic, page-specific tools. It features built-in site memory and automated bot detection bypass to enable efficient, self-healing web automation.
    1
    -
  • A
    license
    B
    quality
    F
    maintenance
    Enables AI agents to directly control your real Chrome browser with full context including login sessions, cookies, and open tabs. It provides tools for page scanning, JavaScript execution, CDP control, screenshots, and physical mouse/keyboard input for authentic browser automation.
    20
    241
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to declaratively control web pages using real mouse and keyboard events via Chrome DevTools Protocol, without executing page JavaScript.
    222
    1
    -

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/spliffspliff70-wq/websense-mcp'

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