WaveXisMCP
WaveXisMCP is a Python-based MCP server providing 156 browser automation tools for LLMs, enabling control of Chrome/Edge browsers (via CDP or BiDi protocols) without Node.js or Chromium downloads.
Session Management: Open/close persistent browser sessions with configurable backend, headless mode, viewport, proxy, and user agent. Inspect active session metadata.
Navigation: Navigate to URLs with configurable wait strategies, control browser history (back, forward, reload, stop), and wait for page conditions (selectors, URL patterns, load events).
Screenshots & Visual Capture: Take full-page or element-specific screenshots (PNG/JPEG), annotated screenshots with numbered element labels, PDFs with configurable paper/margin settings, and frame-by-frame screencasts.
Scraping & JavaScript: Scrape multiple URLs with pagination, evaluate arbitrary JS on pages, and execute JS inside iframes or shadow DOM contexts.
DOM Manipulation: Get/query elements, set/get/remove attributes, remove elements, focus, scroll, and capture full DOM snapshots.
User Interactions: Click, type, fill inputs, fill forms, select options, hover, press keys, drag-and-drop, tap (touch emulation), upload files, and check/uncheck checkboxes.
iframe & Shadow DOM: Click and fill elements inside iframes and shadow DOM trees.
Cookie & Tab Management: Get, set, delete, and clear cookies. List, open, close, and activate browser tabs.
Natural Language Interaction: Use wavexis_act to perform actions via plain English (e.g., "click the login button") using accessibility tree snapshots — no external LLM calls required.
Multi-Action YAML: Execute sequences of actions (navigate, screenshot, eval, click, type, fill) defined in a YAML file with a single tool call.
Resources & Prompts: Access read-only browser state (current URL, cookies, console, tabs) and use built-in workflow templates (scrape, audit, fill form, debug).
Flexible Deployment: Run as an HTTP server for CI/CD or Docker, choose CDP or BiDi per session, enable specific capability tiers (--caps) ranging from core (49 tools) to all (156 tools), and apply per-session rate limiting.
Offers experimental Bluetooth device emulation and interaction for testing Web Bluetooth API functionality.
Enables cross-browser automation of Firefox via the BiDi protocol, supporting navigation, interaction, and testing.
Integrates Google Lighthouse to run performance, accessibility, and best practice audits on web pages.
Provides experimental support for WebAuthn authentication, allowing testing of passwordless login and credential management.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@WaveXisMCPtake a full-page screenshot of the wavexis repo on GitHub"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP server that exposes the wavexis browser automation library to LLMs. 220 tools across 13 capability tiers. No Node.js, no Chromium download — uses your existing Chrome/Edge. 100% Python.
Quick demo
30 seconds to your first screenshot. Add this to your MCP client config (Claude Desktop, Cursor, Windsurf, VS Code):
{
"mcpServers": {
"wavexis": {
"command": "uvx",
"args": ["wavexis-mcp", "--caps", "all"]
}
}
}Then ask your LLM:
"Take a full-page screenshot of https://example.com"
The LLM calls wavexis_screenshot(url="https://example.com", full_page=true) and returns the screenshot. No Node.js, no Chromium download, no setup beyond the config above.
Related MCP server: DrissionPage MCP Server
Why WaveXisMCP?
WaveXisMCP wraps the wavexis browser automation library and exposes it as an MCP server. You don't need Node.js, Playwright, or a separate Chromium download — WaveXisMCP launches your existing Chrome or Edge installation directly.
Key features
220 tools — 3x more than Playwright MCP (21), 2x more than zendriver-mcp (96)
13 capability tiers — enable only what you need via
--caps. Start withcore(72 tools), add tiers as neededChrome + Firefox — CDP for Chrome/Edge, BiDi for Firefox. Both auto-launch their drivers from PATH
No Chromium download — uses your existing browser. ~5MB install vs ~400MB for Playwright MCP
Stealth mode —
stealth=truehidesnavigator.webdriver, fakes plugins/languages/chrome runtimeStructured errors — every error includes a
suggestionfield so the LLM self-corrects without human helpMulti-action YAML — chain navigate → click → fill → screenshot in a single tool call
Raw CDP/BiDi access — escape hatch for any browser feature not covered by a dedicated tool
Lighthouse audits, WebAuthn, Bluetooth, Cast — niche features no other MCP server covers
SSRF protection, path sandboxing, rate limiting — security built in from day one
593 tests, 90% coverage enforced, E2E with real Chrome — production-ready
How it works
You (natural language)
→ LLM decides which tool to call
→ WaveXisMCP receives the tool call
→ wavexis library executes it via CDP or BiDi
→ Chrome/Edge/Firefox performs the action
← Result returned as JSON (text, base64, file path)
← JSON passed back to LLM
← LLM summarizes the result for youThe LLM never sees the browser directly. It only sees tool definitions (name, description, parameters) and JSON responses. This means any MCP-compatible LLM client works out of the box — no custom integrations needed.
Core concepts
Tool — A single browser operation (screenshot, eval, click, etc.) exposed as an MCP tool that any LLM client can call.
Session — A persistent browser instance. Open a session, chain multiple tool calls, close when done. Avoids the overhead of launching a browser per action.
Stateless mode — Call any tool with a
urlparameter. The browser launches, executes, and closes automatically.Capability tiers — 13 tiers from
core(72 tools) toall(220 tools). Enable only what you need via--caps.Dual backend — CDP (Chromium-native, via cdpwave) and BiDi (W3C cross-browser, via bidiwave) with per-session selection.
Structured errors — Every error includes a
suggestionfield that tells the LLM what to do next, enabling self-correction without human intervention.
Install
pip install wavexis-mcpWith CDP backend (Chromium):
pip install "wavexis-mcp[cdp]"Or run without installing (recommended):
uvx wavexis-mcpRequirements
Python: 3.11, 3.12, or 3.13
Browser: Google Chrome, Microsoft Edge, or any Chromium/Chrome-based browser
BiDi backend (optional): ChromeDriver/EdgeDriver for Chrome, or geckodriver for Firefox
Quick start
Add to your MCP client config (Claude Desktop, Cursor, Windsurf, VS Code):
{
"mcpServers": {
"wavexis": {
"command": "uvx",
"args": ["wavexis-mcp", "--caps", "all"]
}
}
}Or with pip:
{
"mcpServers": {
"wavexis": {
"command": "wavexis-mcp",
"args": ["--caps", "all"]
}
}
}Stateless mode (one-shot)
Call any tool with a url parameter — the browser launches, executes, and closes automatically:
wavexis_screenshot(url="https://example.com", full_page=true)Session mode (multi-step)
Open a session, chain multiple actions, close when done:
wavexis_session_open(backend="cdp", headless=false)
→ {"session_id": "abc-123"}
wavexis_navigate(session_id="abc-123", url="https://example.com")
wavexis_click(session_id="abc-123", selector="#login")
wavexis_screenshot(session_id="abc-123")
wavexis_session_close(session_id="abc-123")Natural language interaction (M1)
Use wavexis_act to interact with pages using natural language:
wavexis_session_open(backend="cdp")
wavexis_navigate(session_id="abc-123", url="https://example.com")
wavexis_act(session_id="abc-123", instruction="click the login button")
→ {"action": "click", "element": {"ref": "el-3", "role": "button", "name": "Login"}, "status": "ok"}The wavexis_act tool takes an a11y snapshot, matches the instruction to an element using keyword scoring, and executes the detected action (click, type, fill, hover). No external LLM calls — pure heuristic matching.
Capability tiers
Tier | Flag | Tools | Key features |
Core | always on | 72 | Session, navigation, screenshot, PDF, scrape, eval, DOM, input, cookies, tabs, NL interaction, iframe, shadow DOM, events |
Network |
| 20 | Headers, UA, block, throttle, cache, HAR, intercept, mock, modify req/resp, request body, replay HAR, request list |
Storage |
| 18 | localStorage, sessionStorage, cache storage, IndexedDB, state save/restore |
Emulation |
| 9 | Device, viewport, geolocation, timezone, dark mode, locale, CPU, touch, sensors |
A11y |
| 4 | Accessibility tree snapshot, node traversal, axe-core audit |
Interactions |
| 5 | Dialogs, downloads, permissions |
DevTools |
| 31 | Performance, CSS, debugging, overlay, console, security, window mgmt, combined trace, annotated screenshot |
Vision |
| 7 | Coordinate-based mouse (pixel-precise) |
Video |
| 4 | Video recording, chapters, action overlay |
Testing |
| 6 | Assertions, locator generation |
Workflows |
| 6 | Multi-action YAML, raw CDP/BiDi, browser context CRUD |
Data |
| 7 | Codegen, Lighthouse audit, extract, websocket intercept, crawl, visual diff, core web vitals |
Experimental |
| 31 | Service workers, animations, WebAuthn, WebAudio, media, cast, bluetooth, extensions, prefs |
Total |
| 220 |
Default: --caps=core (72 tools). Enable all: --caps=all. Enable specific: --caps=network,storage,emulation.
Tip: Start with
--caps coreand add tiers as needed. Each tier adds tool definitions to the LLM's context, which consumes tokens. For most tasks,core,network,storage(110 tools) is a good balance.
Backends
WaveXisMCP supports two backends with full feature parity:
CDP (cdpwave) — default, Chrome DevTools Protocol. Direct WebSocket to Chrome/Edge. No driver needed. 57 CDP domains.
pip install "wavexis-mcp[cdp]"BiDi (bidiwave) — WebDriver BiDi protocol, W3C cross-browser (Firefox, Chrome). Needs chromedriver (Chrome) or geckodriver (Firefox); both are auto-launched from PATH if not already running.
pip install "wavexis-mcp[bidi]"
Select per session:
# CDP (default, Chrome/Edge only)
wavexis_session_open(backend="cdp")
# BiDi with Chrome (auto-launches chromedriver)
wavexis_session_open(backend="bidi", browser="chrome")
# BiDi with Firefox (auto-launches geckodriver)
wavexis_session_open(backend="bidi", browser="firefox")Connect to existing Chrome
Use connect_existing=True to launch Chrome with --remote-debugging-port and connect to it. Useful for reusing a browser profile with logged-in sessions:
# Launch Chrome with debug port and connect via CDP
wavexis_session_open(connect_existing=true)
# Reuse an existing Chrome profile (keeps logins, cookies, extensions)
wavexis_session_open(connect_existing=true, user_data_dir="C:/Users/me/ChromeProfile")Chrome is launched headed (headless is ignored). The browser subprocess is terminated when the session is closed.
Multi-action YAML
Chain multiple actions in a single tool call by passing a YAML string:
wavexis_multi_action(
config="""
actions:
- navigate: https://example.com
- screenshot:
full_page: true
- eval: document.title
- click: "#login"
- type:
selector: "#username"
text: admin@example.com
- screenshot: {}
""",
session_id="abc-123"
)Supported action types: navigate, screenshot, eval, click, type, fill. Set continue_on_error: true to keep executing on failures.
MCP resources & prompts (M3)
Resources (read-only browser state):
wavexis://session/{id}/url— current page URLwavexis://session/{id}/cookies— cookies as JSONwavexis://session/{id}/console— console messageswavexis://session/{id}/tabs— open tabs
Prompts (workflow templates):
scrape_page(url, selector)— scrape and extract contentaudit_page(url)— full a11y + performance auditfill_form(url, fields)— fill a form on a pagedebug_page(url)— debug console, network, performance
HTTP transport
Run WaveXisMCP as an HTTP server for CI/CD, shared instances, or Docker:
# HTTP on localhost
wavexis-mcp --transport http --port 8765
# HTTP with all tiers
wavexis-mcp --transport http --port 8765 --caps all
# HTTP with remote access (use behind a reverse proxy!)
wavexis-mcp --transport http --allow-remote --port 8765Binds to 127.0.0.1 by default. Use --allow-remote for 0.0.0.0.
Rate limiting (M4)
Per-session token bucket rate limiting:
# 10 calls/sec, burst of 5
wavexis-mcp --rate-limit 10 --rate-burst 5When exceeded, returns {"error": "rate_limited", "retry_after_ms": N}.
Docker
# Pull and run
docker run -p 8765:8765 ghcr.io/mathiaspaulenko/wavexis-mcp
# Or build locally
docker build -t wavexis-mcp .
docker run -p 8765:8765 wavexis-mcp
# Docker Compose
docker-compose upSee Docker docs for details.
Comparison
Feature | Playwright MCP | WaveXisMCP |
Language | TypeScript | Python |
Node.js required | ✗ | ✓ (no Node.js) |
Downloads Chromium (~200MB) | ✓ | ✗ (uses existing browser) |
Install size | ~400MB | ~5MB |
Cold start | 3.2s | 0.8s |
Total tools | ~21 | 220 |
Capability tiers (opt-in) | ✗ | ✓ (13 tiers) |
Dual protocol (CDP + BiDi) | ✗ | ✓ |
Firefox support | ✓ (basic) | ✓ (BiDi + geckodriver auto-launch) |
Backend selection (per session) | ✗ | ✓ |
Stealth / anti-bot mode | ✗ | ✓ |
Raw CDP/BiDi access | ✗ | ✓ (escape hatch) |
Multi-action YAML batching | ✗ | ✓ |
Video recording | ✗ | ✓ |
Lighthouse audit | ✗ | ✓ |
WebAuthn / Bluetooth / Cast | ✗ | ✓ |
Natural language interaction | ✗ | ✓ ( |
MCP resources & prompts | ✗ | ✓ |
Rate limiting | ✗ | ✓ |
SSRF protection | ✗ | ✓ |
Structured errors with suggestions | ✗ | ✓ |
Note: Playwright MCP supports WebKit (Safari) — WaveXisMCP does not (yet). See the roadmap for planned features.
Documentation
Full documentation, API reference, and examples are hosted at mathiaspaulenko.github.io/wavexis-mcp.
Key sections:
Error handling
All tools return structured error JSON on failure. Every error includes a suggestion field that guides the LLM toward the next action:
{
"error": "Session 'abc-123' not found.",
"tool": "wavexis_navigate",
"type": "SessionNotFoundError",
"message": "Session 'abc-123' not found.",
"suggestion": "Call wavexis_session_open first to create a browser session."
}This enables the LLM to self-correct without human intervention — it reads the suggestion and calls the recommended tool.
Architecture
WaveXisMCP sits at the top of a three-layer ecosystem:
WaveXisMCP (MCP server, 220 tools)
└─ wraps → wavexis (browser automation library)
├─ cdpwave (CDP backend, Chromium-native)
└─ bidiwave (BiDi backend, W3C cross-browser)cdpwave — low-level async Python library for the Chrome DevTools Protocol. Direct WebSocket to Chrome/Edge. No driver binary needed.
bidiwave — low-level async Python library for the WebDriver BiDi protocol (W3C standard). Works with Firefox, Chrome, and Edge.
wavexis — high-level browser automation library that abstracts cdpwave and bidiwave behind a unified
AbstractBackendinterface.WaveXisMCP — MCP server wrapping wavexis. Exposes each backend method as an MCP tool with Pydantic v2 input validation, JSON responses, and capability tier filtering.
See Architecture docs for the full system design, data flow diagrams, and ADRs.
Development
git clone https://github.com/MathiasPaulenko/wavexis-mcp.git
cd wavexis-mcp
pip install -e ".[dev]"
# Run quality checks
ruff check wavexis_mcp tests
ruff format --check
mypy wavexis_mcp
python -m bandit -r wavexis_mcp
# Run tests
pytest tests/unit -vContributing
Contributions are welcome. Please see CONTRIBUTING.md for the development workflow, coding standards, and pull request process. For security issues, see SECURITY.md.
Acknowledgements
WaveXisMCP is built on the wavexis browser automation library and the Model Context Protocol. Thanks to the open-source Python and MCP communities for the tools and standards that make this project possible.
License
MIT
mcp-name: io.github.MathiasPaulenko/wavexis-mcp
Available Tools
72 toolswavexis_actA
Execute a natural language instruction on the current page (M1).
Takes an a11y snapshot, matches the instruction to an element, and performs the detected action (click, type, fill, hover).
Args: input: Act parameters (instruction, session_id, max_retries).
Returns:
JSON string with action, element, score, status.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the tool's behavior: it takes a snapshot, matches instruction, and performs the action. It lists possible actions and the return format. Annotations indicate it is not read-only (readOnlyHint=false) and not idempotent, and not destructive. However, there is no mention of what happens if the instruction cannot be matched, or if the action fails, or any side effects like page navigation. The transparency is adequate but could be improved with more behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: two sentences for purpose, then a bulleted list of args and returns. No fluff. It immediately states the purpose and action detection mechanism.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the tool's mechanism, inputs, and output format. With an output schema described in the text, the agent has sufficient information to use the tool. However, it lacks examples of natural language instructions or usage patterns, which could enhance completeness. Still, it covers core contextual needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already includes descriptions for each parameter, such as 'Natural language instruction' and 'Active session ID'. The description only lists the parameter names without adding new semantics. Given the schema's comprehensive descriptions, the tool description does not provide additional value for parameter understanding. Hence score 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: executing natural language instructions on the current page using a11y snapshot and action detection. It explicitly lists the actions it can perform (click, type, fill, hover), which distinguishes it from sibling tools that are more specific (e.g., wavexis_click, wavexis_fill) or those that require explicit selectors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly provide usage guidelines or mention when to use this tool over alternatives like wavexis_nl_click or wavexis_nl_fill. It implies use for general natural language instructions but lacks direction on when not to use it or how it differs from other natural language tools. The required session_id parameter is documented, but no broader context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_activate_tabAIdempotent
Focus (bring to front) a browser tab by its ID.
Use to switch the active tab before running navigation or interaction tools; use wavexis_list_tabs to obtain tab IDs first.
Side effects: Changes the browser's active tab; subsequent tool calls operate on the newly focused tab. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and destructiveHint=false. The description adds valuable context: side effect of changing active tab and that subsequent calls operate on the new tab, plus return format. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is short, well-structured, and front-loaded. Each sentence serves a clear purpose: purpose, usage hint, side effects, and return value. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, prerequisites, side effects, and return format. Though it doesn't explicitly reiterate the required session_id from schema, the overall information is sufficient for correct usage with the input schema present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema already provides descriptions for both parameters ('Tab ID to operate on', 'Active session ID from wavexis_session_open'). The tool description does not add further parameter semantics, making it adequate but not enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Focus (bring to front) a browser tab by its ID', specifying the verb and resource. It distinguishes from sibling tools like wavexis_list_tabs (listing) and wavexis_new_tab (creating) by focusing on activation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use before navigation/interaction tools and to obtain tab IDs via wavexis_list_tabs first. This provides clear context and a prerequisite, though no explicit when-not-to-use advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_annotated_screenshotARead-onlyIdempotent
Capture a screenshot with numbered labels overlaid on elements.
Injects overlay divs with labels @e1, @e2, ... on each element matching the provided selectors, captures a screenshot, removes the overlays, and returns the image plus a label-to-selector map.
Use wavexis_screenshot for plain captures, or this tool when
visual element identification is needed for follow-up actions.
Side effects: uses an existing session backend, injects and removes
temporary overlay DOM nodes; writes to output_path when given.
Returns: JSON string with keys: 'status' ('ok'/'error'), 'format'
(str), 'base64' (str) or 'path' (str), 'size_bytes' (int), 'labels'
(dict[str, str]).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only and non-destructive. Description adds specifics: injects/removes overlays, writes to output_path. Provides more context than annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two paragraphs: first explains process, second gives usage guidance and side effects. Well-structured, though could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, process, side effects, return values. Output schema exists but description still provides necessary context. Complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% per context, but schema itself has descriptions for each parameter. Description mentions selectors and output_path but not session_id. Adds some value but not comprehensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool captures a screenshot with numbered labels on elements. Distinguishes from sibling wavexis_screenshot by specifying it is for visual element identification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use this tool vs wavexis_screenshot: 'Use wavexis_screenshot for plain captures, or this tool when visual element identification is needed for follow-up actions.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_backA
Navigate backward one step in the browser history.
Use for history navigation instead of wavexis_navigate when the target is the previous page.
Side effects: Changes the active page to the previous history entry; may trigger network requests if that page was not cached. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which are all false), the description discloses side effects: 'Changes the active page to the previous history entry; may trigger network requests if that page was not cached.' This adds valuable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with four sentences, each serving a distinct purpose: purpose, usage guidelines, side effects, and return format. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (one parameter, output schema exists), the description covers purpose, usage, side effects, and return format. It is complete for effective decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (context), meaning the description must compensate. However, the tool description does not mention the session_id parameter or its meaning, leaving the agent without any additional semantics beyond the schema's minimal description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action: 'Navigate backward one step in the browser history.' It clearly identifies the verb (navigate backward) and resource (browser history), and distinguishes from siblings like wavexis_navigate and wavexis_forward.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'Use for history navigation instead of wavexis_navigate when the target is the previous page.' This clearly indicates when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_backendsARead-onlyIdempotent
List installed browser backends and their versions without launching a browser.
Use wavexis_browser_version instead when you need the version of a
specific running session's backend.
Side effects: None; queries the local filesystem only. Returns: JSON string with keys: 'status' ('ok'/'error'), 'backends' (dict), 'available' (list[str]).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, destructiveHint, idempotentHint), description adds 'Side effects: None; queries the local filesystem only' and 'without launching a browser', giving rich behavioral context that matches annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose, alternative usage, side effects/return. Front-loaded, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, rich annotations, and output schema, description covers purpose, alternative, side effects, and return format. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so schema coverage is 100%. Description adds value by explaining the return format (JSON with keys), which is not required due to output schema existence but is helpful. Baseline 4 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists installed browser backends and their versions, using specific verb 'list' and resource 'backends'. It distinguishes from sibling tool 'wavexis_browser_version' by clarifying that sibling is for running sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides context for when to use this tool versus wavexis_browser_version, saying 'Use wavexis_browser_version instead when you need the version of a specific running session's backend'. No exclusion needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_browser_versionARead-onlyIdempotent
Query the active browser's version string via the selected backend.
Use wavexis_backends instead when you need a list of all installed
backends without launching a browser.
Side effects: Acquires (and may launch) a browser backend, then releases it. Returns: JSON string with keys: 'status' ('ok'/'error'), 'version' (str), 'backend' (str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, indicating no destructive side effects. The description adds critical behavior beyond annotations: 'Side effects: Acquires (and may launch) a browser backend, then releases it.' This discloses a launch-and-release cycle that is not captured by annotations. It also specifies the return format as a JSON string with keys, which is helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short paragraphs and one line for returns. The first sentence immediately states the purpose, the second places it relative to an alternative, and the third lists side effects and return format. Every sentence adds unique value, and there is no redundant or wasteful text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description is complete. It covers purpose, usage alternative, side effects, and return format. An output schema is present, so no need to detail return values. Annotations cover safety. The description does not miss any essential contextual information for an agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for both parameters (backend with enum and default, session_id with nullability and behavior). The description does not add any additional meaning beyond what the schema provides. Since schema description coverage is effectively high (each parameter has a description), a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Query the active browser's version string via the selected backend.' This specifies a verb ('query') and a resource ('browser version string'). It also implicitly distinguishes from the sibling tool 'wavexis_backends' by mentioning that the latter lists backends without launching a browser.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when not to use this tool: 'Use wavexis_backends instead when you need a list of all installed backends without launching a browser.' It clearly indicates that this tool acquires (and may launch) a browser backend, which is a key context. However, it does not explicitly state when to use this tool, though it is implied when you need the browser version.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_checkADestructiveIdempotent
Check a checkbox or radio button matching a CSS selector.
Use wavexis_uncheck to uncheck a checkbox or wavexis_click for generic element activation.
Side effects: Clicks the target checkbox/radio, toggling its checked state and firing change events. Returns: JSON string with keys: 'status' ('ok'/'error'), 'checked' (bool, the element's checked state after the action). On error also 'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description states toggling behavior which contradicts annotations idempotentHint=true (toggling is not idempotent). Per guidelines, score 1 for description contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four focused sentences: purpose, alternatives, side effects, return format. No redundancy, front-loaded with key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema and annotations, description covers purpose, side effects, return values. Missing explanation of idempotency discrepancy, but otherwise complete for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description adds context that selector targets checkbox/radio, but does not elaborate on session_id or format beyond schema. Schema descriptions are minimal, so baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Check a checkbox or radio button matching a CSS selector' and explicitly distinguishes from siblings wavexis_uncheck and wavexis_click.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Use wavexis_uncheck to uncheck a checkbox or wavexis_click for generic element activation', defining when to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_clickADestructive
Click an element matching a CSS selector.
Use wavexis_double_click for double clicks, wavexis_right_click for context menus, or wavexis_nl_click when you only have a text description.
Side effects: Triggers a click event on the target element, which may submit forms, toggle controls, or navigate the page. Returns: JSON string with keys: 'status' ('ok'/'error'). On error also 'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=false. The description adds specific side effects (triggers click, may submit forms, toggle controls, navigate page) and details the return format, providing useful context beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: three sentences covering purpose, alternatives, side effects, and return format. Every sentence earns its place, with no fluff. Front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of an output schema (not shown but indicated), the description adequately covers the core behavior, side effects, and return structure. It distinguishes itself among many siblings. Minor gap: no parameter constraints (e.g., selector must exist) beyond side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'CSS selector' but does not elaborate on other parameters like url, button, backend, or click_count. The schema itself provides descriptions for all parameters, so the description adds marginal value. Baseline score of 3 is appropriate given schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb-resource pair: 'Click an element matching a CSS selector.' It immediately distinguishes from siblings by naming alternative tools for double-click, right-click, and text-based clicking, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use alternative tools (wavexis_double_click, wavexis_right_click, wavexis_nl_click), providing clear context for selection. It lacks an explicit 'when not to use' but the alternatives cover the main exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_close_pageADestructive
Close a browser page/tab by target id, or the current page if omitted.
This tool mirrors Playwright's API for compatibility; use it to free resources. The session itself remains active for other tabs.
Side effects: Closes the specified browser target; destructive and irreversible. Returns: JSON string with keys: 'status' ('ok'/'error'), 'closed' (str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
This is far stronger than the annotations alone. It explicitly says the operation is destructive and irreversible, explains that the session stays alive, and documents the exact JSON return shape with 'status' and 'closed' keys. An agent knows both the side effects and the observable response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well organized: purpose, usage context, side effects, and return value are each covered in a few short sentences. Every sentence carries necessary information, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with a simple input shape and an output schema, this description covers the critical behavioral contract thoroughly. The only notable gap is that it does not clarify how to choose between this and wavexis_close_tab, which is important given the sibling list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The prose explains that tab_id is optional and that omitting it closes the current page, which matches the schema. It does not add much semantic detail about session_id, but the schema already describes it as the active session ID from wavexis_session_open, so the minimum needed to invoke the tool correctly is available.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description immediately identifies the action: 'Close a browser page/tab by target id' and clarifies the default behavior when no target is given. It is concrete and understandable, but it does not explicitly differentiate itself from the sibling tool wavexis_close_tab, which likely has a very similar purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear use context: free resources while keeping the session active for other tabs. It does not explicitly list alternatives or state 'when not to use', but the practical intent is clear enough for an agent to select the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_close_tabADestructiveIdempotent
Close a browser tab by its ID.
Use to clean up tabs created with wavexis_new_tab; use wavexis_session_close to terminate the entire session instead.
Side effects: Closes the specified tab and discards its page state. Destructive — unsaved data in that tab is lost. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond annotations: it states side effects ('Closes the specified tab and discards its page state') and notes data loss ('unsaved data in that tab is lost'). While annotations already indicate destructiveHint=true, the description enriches this with specific implications, though it omits details like authentication requirements or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: it starts with the main action, follows with usage context, side effects, and return format, all in a few sentences without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple close action, the description covers enough: it mentions the return format, side effects, and relationship to sibling tools. However, it could note that the tab ID comes from wavexis_list_tabs or similar, but the schema hints at the source. Overall sufficient given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though the context indicates 0% schema description coverage, the input schema actually provides clear descriptions for both parameters (tab_id and session_id). The tool description adds no further parameter meaning, so baseline 3 applies as the schema already does the job.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and resource: 'Close a browser tab by its ID.' It distinguishes from the sibling tool wavexis_session_close by noting that the latter terminates the entire session, making the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises when to use this tool ('clean up tabs created with wavexis_new_tab') and provides an alternative tool ('use wavexis_session_close to terminate the entire session instead'), offering clear guidance on usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_console_clearADestructiveIdempotent
Clear all buffered console messages for the session.
This tool mirrors Playwright's API for compatibility; use it before capturing a fresh set of console logs to avoid stale entries.
Side effects: Resets the session's in-memory console message buffer. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses the wholesale buffer reset ('Resets the session's in-memory console message buffer') and the exact return format ('JSON string with keys: status ('ok'/'error')'). This complements the annotations by clarifying what the destructive hint means in practice and what the caller will receive. No contradiction with the annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four precise sentences, each with a distinct role: operation, usage placement, side-effect disclosure, and return value. It is front-loaded with the action and contains no filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter utility with helpful annotations and a schema description for the parameter, the description fully covers the intended effect, the recommended timing, the session-scoped nature, and the expected response shape. An agent has everything needed to invoke it correctly and understand its impact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter, session_id, is already described in the schema as 'Active session ID from wavexis_session_open.' The tool's text does not mention the parameter, but the schema provides sufficient meaning and provenance. Given schema coverage exists, the description need not repeat it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Clear all buffered console messages for the session.' It clearly defines the operation's scope and distinguishes it from cookie- or tab-related tools in the sibling list. There is no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a direct usage trigger: 'use it before capturing a fresh set of console logs to avoid stale entries.' This gives the agent a concrete scenario for when to call the tool without requiring inference. It does not explicitly name alternatives or exclusions, but none are needed for this focused utility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_cookie_getARead-onlyIdempotent
Retrieve a single cookie by name (and optional domain/path) from the browser.
Use wavexis_cookie_list instead when you need multiple cookies or
broad filtering.
Side effects: None; reads cookie state from the browser session. Returns: JSON string with keys: 'status' ('ok'/'error'), 'cookie' (dict|null).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnlyHint, idempotentHint, and destructiveHint=false. The description reinforces this with 'Side effects: None; reads cookie state' and adds useful behavioral detail about the return shape (status and cookie keys). No annotation contradictions are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose first, usage routing second, then side effects and return format. Every sentence adds value, and there is no redundant or filler phrase.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only cookie getter, the description explains behavior, return shape, and sibling routing. The only notable gap is the lack of explicit mention that a valid session_id is required, but the schema covers this, so the context remains sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already includes helpful descriptions for name, path, domain, and session_id. The description only adds a high-level notion of optional domain/path filtering and does not explain the required session_id dependency. It is adequate but does not meaningfully improve on the schema's parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Retrieve' with a concrete resource ('a single cookie by name') and clearly defines the scope ('from the browser', optional domain/path). It also distinguishes this from wavexis_cookie_list, so an agent can tell them apart without opening the schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use a sibling tool instead: 'Use wavexis_cookie_list instead when you need multiple cookies or broad filtering.' This gives a clear when-to-use and when-not-to-use condition, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_cookie_listARead-onlyIdempotent
List browser cookies with optional name, domain, and path filters.
Use wavexis_cookie_get instead when you need a single named cookie.
Side effects: None; reads cookie state from the browser session. Returns: JSON string with keys: 'status' ('ok'/'error'), 'cookies' (list[dict]), 'count' (int).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states that there are no side effects and that it reads cookie state from the browser session, which aligns with and meaningfully supports the readOnlyHint and destructiveHint annotations. It also previews the JSON return keys, though, since an output schema is present, the return-shape detail provides only modest added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well front-loaded: action first, then the alternative tool, then side effects and return shape. Every sentence earns its place, with no filler or repetitive content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a cookie-listing tool, the definition is solid: it specifies filters, gives a safe alternative, states the lack of side effects, and covers the output shape. Remaining details such as limit defaults and session_id sourcing are present in the schema, so the description is not critically incomplete, though it does not define filter matching semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The prose names three optional filters (name, domain, path) but does not describe the limit parameter or clarify how multiple filters are combined. With the stated schema description coverage at 0%, the description carries a heavier burden, but it only partially compensates; the nested schema provides the missing details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise action-resource statement ('List browser cookies') and names the optional filters: name, domain, and path. It also explicitly differentiates this tool from wavexis_cookie_get, which is the closest sibling, by saying the latter is for a single named cookie.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the intended usage clear: use this tool to list browser cookies, optionally filtered. It also gives an explicit when-not condition, directing the agent to wavexis_cookie_get when a single named cookie is needed, which removes ambiguity among the cookie-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_cookies_clearADestructiveIdempotent
Clear all cookies from the browser session.
Use wavexis_cookies_delete to remove a specific cookie, or
wavexis_cookies_get to inspect cookies before clearing.
Side effects: uses an existing session backend, destructively removes all cookies from the browser. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint: true and idempotentHint: true. The description adds context about using an existing session backend and the return format (JSON with status). It does not contradict annotations and provides supplementary behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with 4 sentences front-loaded with the main action. Every sentence adds value: purpose, alternatives, side effects, and return format, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a single parameter and an output schema. The description covers purpose, alternatives, side effects, and return format. It could mention that a valid session is required, but overall it is fairly complete given the simplicity of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description does not add any meaning about the session_id parameter. The schema provides a basic description ('Active session ID from wavexis_session_open'), but the description misses an opportunity to compensate, leaving the parameter's role and prerequisites unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Clear all cookies from the browser session' with a specific verb and resource. It distinguishes itself from siblings wavexis_cookies_delete (specific cookie) and wavexis_cookies_get (inspect), fulfilling the criteria for a score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides usage context: when to clear all cookies, and when to use alternatives (wavexis_cookies_delete for a specific cookie, wavexis_cookies_get to inspect first). This offers clear guidance on when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_cookies_deleteADestructiveIdempotent
Delete cookies matching a name and domain in the browser.
Use wavexis_cookies_clear to remove all cookies, or
wavexis_cookies_set to add a new cookie.
Side effects: launches/acquires a browser backend, navigates to url
if provided, destructively removes matching cookies from browser state.
Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses side effects: launches/acquires browser backend, navigates if URL provided, destructively removes cookies. Annotations provide destructiveHint, but description adds valuable context about backend and navigation, fully aligning with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with purpose, then alternatives, side effects, and return. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive for a deletion tool: covers purpose, side effects, return format, and distinguishes from siblings. Output schema exists for return details, so no gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all parameters (name, domain, etc.). The tool description adds no new semantic info beyond mentioning 'matching a name and domain', which is covered by schema. Baseline 3 is appropriate given schema descriptions exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes cookies matching a name and domain, with specific verb and resource. It distinguishes from siblings like wavexis_cookies_clear and wavexis_cookies_set, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use this tool vs alternatives: use wavexis_cookies_clear to remove all cookies, or wavexis_cookies_set to add. Provides clear context and exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_cookies_getARead-onlyIdempotent
Retrieve all cookies for the current page context.
Use wavexis_cookies_set to add a cookie, or
wavexis_cookies_clear to remove all cookies at once.
Side effects: launches/acquires a browser backend, navigates to url
if provided; read-only with respect to browser state.
Returns: JSON string with keys: 'status' ('ok'/'error'), 'cookies'
(list[dict]), 'count' (int).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes side effects: launches browser backend, navigates if url provided, and declares read-only with respect to browser state. This aligns with annotations (readOnlyHint, idempotentHint, destructiveHint false) and adds useful context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, then alternative tools, side effects, and return format. Each sentence is efficient and necessary, with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and presence of annotations and output description, the description is mostly complete. It covers purpose, alternatives, side effects, and return format. However, it does not explain parameters like backend, headless, session_id, but these are documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the description mentions the url parameter's effect ('navigates to url if provided') and implies session context. However, it does not add significant meaning beyond the schema's existing parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Retrieve all cookies for the current page context' with a specific verb and resource. It distinguishes from siblings by mentioning wavexis_cookies_set and wavexis_cookies_clear for different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use alternatives: 'Use wavexis_cookies_set to add a cookie, or wavexis_cookies_clear to remove all cookies'. Provides clear context for when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_cookies_setA
Set a single cookie in the browser for the current page.
Use wavexis_cookies_get to read cookies, or
wavexis_cookies_delete to remove a specific cookie.
Side effects: launches/acquires a browser backend, navigates to url
if provided, mutates browser cookie state.
Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, etc.), the description details side effects: launches/acquires browser backend, navigates to url if provided, mutates cookie state. Return format is also specified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with front-loaded purpose, minimal waste. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, side effects, return, and sibling tools. Could mention session_id or prerequisites, but given the tool's simplicity and sibling context, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not repeat parameter details, but the schema already has descriptions for all parameters (high coverage). It adds value by noting that 'url' triggers navigation, which complements the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it sets a single cookie for the current page, distinguishes from sibling tools (get and delete), and mentions side effects like navigation and mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions alternative tools for reading and deleting cookies, providing clear when-to-use guidance. It could be stronger by adding when not to use or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_dom_focusAIdempotent
Focus an element matching a CSS selector.
Use wavexis_dom_click instead when the intent is to activate a control rather than focus it.
Side effects: Mutates DOM focus state; may trigger focus event handlers on the element. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (idempotentHint=true, destructiveHint=false), the description discloses that the tool mutates DOM focus state and may trigger focus event handlers. This adds valuable behavioral context not captured by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no unnecessary words. First sentence states purpose, second provides usage guidance, third covers side effects and return format. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage differentiation, side effects, and return. Could mention that focusing may scroll the element into view, but that's a common behavior. Overall quite complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes both parameters (selector and session_id) with clear descriptions. The tool description does not add additional meaning beyond mentioning 'CSS selector' implicitly. Schema coverage by the description is minimal, but the schema itself is well-documented, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool focuses an element via CSS selector. It explicitly distinguishes from wavexis_dom_click by advising use of that tool for activation rather than focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use this tool (focusing) versus the alternative (clicking for activation). It does not address other potential alternatives like direct focus via evaluation, but the main distinction is covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_dom_getARead-onlyIdempotent
Retrieve the HTML of an element matching a CSS selector.
Use wavexis_dom_query instead when you need element metadata rather than raw HTML.
Side effects: None; read-only. May navigate to url if provided.
Returns: JSON string with keys: 'status' ('ok'/'error'), 'html' (str), 'selector' (str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, etc. The description adds that the tool is read-only and may navigate to a URL, and specifies the return format (JSON with status, html, selector). This adds useful behavioral context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with 3 sentences plus a returns line. It is well-structured, front-loaded with the purpose, and every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has a well-described schema, annotations, and an output schema mentioned in the description, the description covers purpose, usage distinction, side effects, and return format. It is complete for the complexity of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has detailed descriptions for all parameters, so schema coverage is effectively high. The tool description does not add additional parameter information beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Retrieve the HTML of an element matching a CSS selector,' which is a specific verb+resource combination. It explicitly distinguishes from the sibling tool 'wavexis_dom_query' by noting that tool is for metadata. This meets the highest standard for purpose clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool vs. 'wavexis_dom_query' (raw HTML vs metadata). It mentions side effects are none and that it may navigate to a URL if provided, providing clear context for when to invoke.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_dom_get_attrARead-onlyIdempotent
Read an attribute value from an element matching a CSS selector.
Use wavexis_dom_set_attr to write an attribute value.
Side effects: None; read-only. Returns: JSON string with keys: 'status' ('ok'/'error'), 'value' (str|None), 'selector' (str), 'name' (str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description states 'Side effects: None; read-only' which aligns with annotations. It also details the return format (JSON string with keys), adding value beyond the readOnlyHint and idempotentHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: three sentences covering purpose, sibling, and behavior/return. It is front-loaded and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description's return format detail is sufficient. It covers side effects and key parameters. Missing error handling details, but overall adequate for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It mentions 'CSS selector' and 'attribute value' but does not clarify that the 'name' parameter is the attribute name. The schema does provide some descriptions for nested parameters, but the description adds minimal extra meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads an attribute value from an element using a CSS selector. It distinguishes from sibling wavexis_dom_set_attr (write) and implies difference from wavexis_dom_get (which likely gets text).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions the write alternative (wavexis_dom_set_attr). It could improve by noting when to use this over other read tools like wavexis_dom_get, but it provides clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_dom_queryARead-onlyIdempotent
Query elements by CSS selector and return paginated metadata.
Use wavexis_dom_get instead when you only need the raw HTML of a single element.
Side effects: None; read-only. May navigate to url if provided.
Returns: JSON string with keys: 'status' ('ok'/'error'), 'elements' (list[dict]),
'count' (int), 'total' (int).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by explicitly stating 'Side effects: None; read-only. May navigate to url if provided.' This informs the agent about potential navigation side effects beyond the DOM query, which is not captured in annotations. It also mentions the return format structure (JSON keys).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: three sentences that front-load the purpose, provide a usage guideline, and summarize side effects and return format. Every sentence serves a clear purpose with no redundancy or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple parameters, nested input) and the presence of an output schema, the description provides essential context: it explains the return keys (status, elements, count, total), notes pagination (offset/limit), and mentions potential navigation. It does not detail each element's fields, but that is covered by the output schema. It could improve by clarifying the relationship between session_id and url, but overall it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides comprehensive descriptions for each parameter (e.g., 'Return all matches (True) or first only (False)' for 'all', 'URL to navigate to' for 'url'). The description itself adds little beyond mentioning 'CSS selector' and 'paginated metadata'. Since the schema covers the parameter semantics thoroughly, the description's contribution is minimal, warranting a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Query elements by CSS selector and return paginated metadata.' It also distinguishes itself from the sibling tool wavexis_dom_get, which is for retrieving raw HTML of a single element. This provides a specific verb+resource and explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use an alternative: 'Use wavexis_dom_get instead when you only need the raw HTML of a single element.' It also notes that the tool may navigate to a URL if provided, implying it can also be used for navigation-based queries. However, it does not provide exclusions for when not to use this tool beyond that single sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_dom_removeADestructiveIdempotent
Remove an element matching a CSS selector from the DOM.
Use wavexis_dom_set_attr to hide an element (e.g. display:none) instead of deleting it.
Side effects: Destructive; permanently removes the matched element from the live DOM. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint true; description adds 'permanently removes' and 'Destructive' side effects, plus return format. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three efficient sentences, front-loaded purpose, no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, alternative usage, side effects, and return format. Complete for a simple destructive DOM removal tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides descriptions for both parameters (selector, session_id), so baseline 3. Description does not add extra semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'remove' and resource 'element matching CSS selector'. Distinguishes from sibling wavexis_dom_set_attr for hiding instead of deleting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises using wavexis_dom_set_attr for hiding instead of this tool, providing clear when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_dom_remove_attrADestructiveIdempotent
Remove an attribute from an element matching a CSS selector.
Use wavexis_dom_set_attr to restore or change an attribute instead of removing it.
Side effects: Mutates the DOM by deleting the attribute from the matched element. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true), description explicitly states 'Mutates the DOM by deleting the attribute' and specifies return format ('JSON string with keys: status'). Adds value by detailing the exact mutation and response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose, alternative usage, and side effects/return. Key information is front-loaded with zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple attribute removal tool, description covers purpose, alternative, side effects, and return. Output schema exists and annotations provide safety hints. Could mention idempotency or error handling, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but parameter names are self-explanatory (name, selector, session_id) and schema provides types and minLength. The tool description does not add extra parameter details, leaving schema as the sole source. Adequate but not enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action ('remove an attribute') and the target ('element matching a CSS selector'). Explicitly distinguishes from sibling wavexis_dom_set_attr, providing a precise purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions when to use the alternative tool (wavexis_dom_set_attr) for restoring or changing attributes, giving clear guidance. Could additionally note prerequisites like having a valid session, but schema covers required parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_dom_scrollAIdempotent
Scroll to an element or by a pixel offset.
Use wavexis_dom_get to inspect an element's position before scrolling by offset.
Side effects: Changes the page scroll position; may trigger scroll event listeners. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true, destructiveHint=false. The description adds useful behavioral context: 'Changes the page scroll position; may trigger scroll event listeners' and return format. This goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three well-structured sentences, front-loaded with the core action, efficient use of words, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of annotations, output schema, and siblings, the description covers side effects, return format, and a usage hint. Lacks explicit precedence when both selector and offsets are provided, but overall complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the schema itself provides parameter descriptions. The description only repeats the 'element or offset' choice without detailing parameter interplay or edge cases. Adds modest value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Scroll to an element or by a pixel offset', using a specific verb and resource. It distinguishes from siblings like wavexis_dom_get by suggesting use of that tool for inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises using wavexis_dom_get to inspect positions, which provides some context, but lacks explicit when-to-use vs alternatives or exclusions. No guidance on when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_dom_set_attrAIdempotent
Set an attribute on an element matching a CSS selector.
Use wavexis_dom_get_attr to read the current value before setting.
Side effects: Mutates the DOM by writing the attribute on the matched element. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true and destructiveHint=false. The description adds value by explicitly stating 'Mutates the DOM by writing the attribute on the matched element' and outlining the return format as a JSON string with status keys. It clarifies the mutation behavior beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences. The first sentence front-loads the primary action, the second provides a usage hint, and the third covers side effects and return. No redundant or unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple set-attribute operation, the description covers the operation, side effects, and return format. It does not explain error conditions or prerequisites, but the schema covers the session_id requirement. The output schema is described adequately. Overall, it is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for all four parameters (name, value, selector, session_id). The description does not add new information about the parameters beyond implying the selector is a CSS selector, which is already in the schema. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set', the resource 'attribute on an element', and the method 'CSS selector'. It explicitly distinguishes from the sibling tool 'wavexis_dom_get_attr' by recommending its use for reading before setting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises using 'wavexis_dom_get_attr' to read the current value before setting, providing clear context for when to use this tool and a direct alternative. It does not explicitly list when not to use it, but the guidance is sufficient for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_dom_snapshotARead-onlyIdempotent
Capture a full DOM snapshot of the page including iframes and shadow roots.
Use wavexis_dom_query for lightweight element metadata instead of a full snapshot.
Side effects: None; read-only. Returns: JSON string with keys: 'status' ('ok'/'error'), 'snapshot' (dict), 'documents' (int).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's mention of 'Side effects: None; read-only' is consistent but redundant. However, it adds value by describing return format (JSON string with keys 'status', 'snapshot', 'documents') and the scope of including iframes and shadow roots, which annotations do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: four short sentences covering purpose, alternative, side effects, and return format. Every sentence adds value, and the purpose is front-loaded. No redundant or vague statements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, read-only operation) and the presence of annotations and an output schema (mentioned in description), the description covers all essential aspects: functionality, alternative usage, safety, and return structure. It is fully adequate for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the single parameter 'session_id' as 'Active session ID from wavexis_session_open'. The tool description does not add any further semantic information about this parameter. With full schema coverage for the parameter, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Capture'), resource ('full DOM snapshot'), and scope ('including iframes and shadow roots'). It distinguishes from sibling wavexis_dom_query, which is a lightweight alternative. The purpose is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool vs. an alternative: 'Use wavexis_dom_query for lightweight element metadata instead of a full snapshot.' While it only mentions one alternative, it is highly relevant and helps the agent choose appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_double_clickADestructive
Double-click an element matching a CSS selector.
Use wavexis_click for single clicks or wavexis_nl_click when you only have a natural language description of the element.
Side effects: Fires two rapid click events on the element, which may open files, edit cells, or trigger application-specific actions. Returns: JSON string with keys: 'status' ('ok'/'error'). On error also 'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and openWorldHint=true. The description adds concrete side effects ('Fires two rapid click events... may open files, edit cells') and return format, enhancing transparency. However, it does not mention session or browser state implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence adds value: purpose, alternatives, side effects, and return format. Front-loaded with the core action. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and that output schema exists, the description covers purpose, usage guidance, side effects, and return structure. It lacks mention of session management but overall is adequate for selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has descriptions for all parameters (100% coverage), so baseline is 3. The tool description adds no additional meaning beyond what the schema already provides, so it meets baseline without adding extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Double-click an element matching a CSS selector', using a specific verb and resource. It clearly distinguishes itself from siblings by explicitly mentioning alternatives (wavexis_click for single clicks, wavexis_nl_click for natural language).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit context on when to use alternatives and describes side effects. However, it does not explicitly state when not to use this tool or mention prerequisites (e.g., needing a session), leaving minor gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_dragADestructive
Drag an element from a source selector to a target selector.
Use wavexis_drop when you need to drop arbitrary MIME data or files onto an element rather than dragging an existing DOM element.
Side effects: Performs a drag-and-drop operation between two elements, firing drag/dragstart/dragend and drop events. Returns: JSON string with keys: 'status' ('ok'/'error'). On error also 'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds context by listing side effects ('fires drag/dragstart/dragend and drop events') and the return format, which goes beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loading the main purpose. Every sentence adds value (action, alternative, side effects/return). No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, alternative, side effects, and return format. It does not explain input parameters, but the schema handles that. Given the tool's complexity and sibling context, it is nearly complete; a minor gap is the lack of mention of session requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has detailed descriptions for all parameters (high coverage), so baseline is 3. The description does not add any parameter-specific information, but it is not necessary given the schema's thoroughness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Drag an element from a source selector to a target selector.' It uses a specific verb and resource, and distinguishes itself from the sibling tool wavexis_drop by explaining when to use the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides an alternative: 'Use wavexis_drop when you need to drop arbitrary MIME data or files onto an element rather than dragging an existing DOM element.' This gives clear guidance on when to use 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.
wavexis_dropADestructive
Drop files or MIME-typed data onto an element via drag events.
Use wavexis_set_files for standard <input type="file"> uploads or
wavexis_drag for dragging an existing DOM element to another element.
Side effects: Dispatches dragEnter, dragOver, and drop events with the supplied data and files onto the target element's coordinates. Returns: JSON string with keys: 'status' ('ok'/'error'), 'selector' (str), 'x' (float), 'y' (float), 'data_types' (list[str]), 'files' (list[str]). On error also 'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, which the description aligns with. Beyond annotations, it details side effects (dispatches dragEnter, dragOver, drop events) and return format, adding useful context. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: purpose first, then alternatives, side effects, return. It is informative but slightly long; could be trimmed without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (many parameters, side effects), the description covers purpose, alternatives, behavior, and return format. With an output schema present, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not elaborate on individual parameters; the schema (with 0% coverage from the description) already has detailed descriptions for each property. The description adds no extra parameter guidance, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it drops files or MIME-typed data onto an element via drag events. It explicitly distinguishes from sibling tools wavexis_set_files (for file inputs) and wavexis_drag (for dragging DOM elements).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'Use wavexis_set_files for standard <input type="file"> uploads or wavexis_drag for dragging an existing DOM element to another element.' This clearly indicates when to use alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_evalA
Evaluate a JavaScript expression in the browser context and return the result.
Use wavexis_scrape when the same expression must run across many
pages, or wavexis_act for natural-language interaction instead of
raw JS.
Side effects: launches/acquires a browser backend, navigates to url
if provided, executes arbitrary JS in the page (may trigger network
requests or DOM mutations).
Returns: JSON string with keys: 'status' ('ok'/'error'), 'result'
(Any), 'type' (str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide generic flags, so the description carries the burden of explaining side effects. It does this well: it discloses browser backend acquisition, optional navigation, and the fact that arbitrary JS may trigger network requests or DOM mutations. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states purpose, the second gives routing guidance, the third discloses side effects, and the final line documents the JSON return shape. No sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an eval tool with multiple configuration params and strong side effects, the description covers the key behavioral boundaries (browser, network, mutations), alternative tool selection, and the return contract. It stops short of describing the parameter wiring, but the nested schema contains descriptions for those fields, so the gap is acceptable. Overall it is nearly complete for a custom browser-eval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage for the top-level parameter is reported as 0%, so the description should compensate for undeclared parameter semantics. It clarifies only the `url` side effect and the result format, but it does not explain `session_id`, `backend`, `headless`, `wait_timeout`, or `await_promise`. These are meaningful choices an agent must correctly interpret to invoke the tool well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Evaluate') and resource ('JavaScript expression in the browser context'), and states that it returns the result. It also names two sibling tools it is not, which differentiates it clearly from wavexis_scrape and wavexis_act.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use wavexis_scrape ('when the same expression must run across many pages') and wavexis_act ('for natural-language interaction instead of raw JS'). This gives a clear decision rule for choosing this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_fillADestructive
Fill an input element with a value, replacing existing content.
Use wavexis_type for character-by-character typing with key events, or wavexis_fill_form when filling multiple fields in one call.
Side effects: Clears the target input/textarea and sets its value to the provided string, firing a single input event. Returns: JSON string with keys: 'status' ('ok'/'error'). On error also 'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true; description adds specific side effects: clears target, sets value, fires single input event. Also documents return format with status and error details. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, well-structured: purpose first, then usage guidelines, side effects, and return format. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given sibling tools, annotations, and schema descriptions, the description fully covers behavior, side effects, and return format. Output schema exists but description still documents return format explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema includes detailed descriptions for all parameters (e.g., selector, value). Description does not add additional parameter info but maintains baseline. Context signal indicates schema description coverage 0% but schema clearly has descriptions; if coverage were actually 0%, would need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Fill an input element with a value, replacing existing content.' Explicitly contrasts with sibling tools wavexis_type and wavexis_fill_form, specifying unique verb-resource-action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Use wavexis_type for character-by-character typing with key events, or wavexis_fill_form when filling multiple fields in one call.' This clearly differentiates usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_fill_formADestructive
Fill multiple form fields in one call (convenience composite tool).
Use wavexis_fill for a single field or wavexis_type when per-keystroke events are required.
Side effects: Clears and sets the value of each field in the provided list, firing input events on every targeted element. Returns: JSON string with keys: 'status' ('ok'/'error'), 'fields_filled' (int, number of fields successfully filled). On error also 'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses side effects beyond annotations: 'Clears and sets the value of each field, firing input events on every targeted element.' It also details the return JSON structure, including error keys. This adds significant value given the tool has destructiveHint and no idempotentHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (4 sentences) and well-structured: purpose first, usage guidance, side effects, return format. No extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple parameters, nested objects, no output schema in structured format), the description covers purpose, alternatives, side effects, and return values comprehensively. The return format is fully described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite a reported 0% schema description coverage, the actual input schema contains detailed descriptions for all parameters (e.g., 'CSS selector for the input element', 'Value to fill'). The description does not add further parameter-level information, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fills multiple form fields in one call, identifies itself as a convenience composite tool, and distinguishes its purpose from sibling tools like wavexis_fill (single field) and wavexis_type (per-keystroke).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly guides when to use this tool vs alternatives: 'Use wavexis_fill for a single field or wavexis_type when per-keystroke events are required.' This provides clear decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_findARead-onlyIdempotent
Search the accessibility snapshot for nodes matching text or a regex pattern.
Use wavexis_act instead for natural-language element interaction;
this tool mirrors Playwright's snapshot search for compatibility.
Side effects: None; fetches and searches the a11y tree read-only. Returns: JSON string with keys: 'status' ('ok'/'error'), 'matches' (list[dict]), 'count' (int).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description clarifies that this tool read-only fetches and searches the a11y tree and exposes the exact return shape ('status', 'matches', 'count'), including that results are returned as a JSON string. It does not discuss regex syntax limits or how 'limit' affects results, but it provides substantial operational detail without contradicted annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and logically ordered: the core functionality, the main alternative, side effects, and return schema are each mentioned in separate, crisp sentences. No unnecessary words or filler distract from the message.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only search tool, the description covers operation, safety, alternative routing, side effects, and return format. Together with rich annotations and a schema that explains required fields, an agent has enough context to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents each parameter: text or regex to search, maximum number of matches, and the active session ID. The tool description does not add substantial parameter-level meaning beyond that, so the baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: searching the accessibility snapshot for nodes matching text or regex. It differentiates from wavexis_act by calling out that tool for natural-language interaction, but does not distinguish itself from the similarly named wavexis_find_by_text sibling, which keeps it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly directs users to wavexis_act for natural-language element interaction, and the Playwright-compatibility note gives useful context for expected behavior. However, it does not explain when to choose waveaxis_find over wavexis_find_by_text or other snapshot/DOM search tools, so only one alternative is fully covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_find_by_textARead-onlyIdempotent
Find element selector(s) by visible text content without interacting.
Use this to locate elements before calling wavexis_click or wavexis_fill when you know the visible text but not the CSS selector.
Side effects: None — this is a read-only lookup that does not modify the page or interact with any element. Returns: JSON string with keys: 'selector' (str, first match) when all=False, or 'selectors' (list[str]) and 'count' (int) when all=True. On error also 'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds details beyond annotations: it states no side effects, that it is read-only, and does not interact. It also describes the return format and error structure. Annotations already indicate readOnlyHint=true, but the description reinforces and expands on behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: three short paragraphs with clear separation of purpose, usage context, and return format. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with few parameters. Annotations are present, and the description covers purpose, usage, side effects, and return format. No gaps remain, making it fully complete for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all three parameters (query, all, session_id). The tool description does not add new parameter information beyond what the schema already covers. With schema_description_coverage effectively high, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it finds element selectors by visible text content. The verb 'find' and resource 'element selector(s)' are specific. It is distinct from siblings like wavexis_dom_query or wavexis_find because it specifies 'by visible text content' and 'without interacting'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using this tool before wavexis_click or wavexis_fill when the visible text is known but the CSS selector is not. This provides clear context and ties to sibling tools, though it does not explicitly mention when not to use it or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_forwardA
Navigate forward one step in the browser history.
Use after wavexis_back to restore a page; use wavexis_navigate for direct URL navigation instead.
Side effects: Changes the active page to the next history entry; may trigger network requests if that page was not cached. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description adds valuable context: side effects (changes active page, may trigger network requests) and the return format (JSON with status). It does not cover error cases explicitly, but the return format implies errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: four sentences each serving a distinct purpose (action, usage, side effects, return). No unnecessary words; front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple navigation tool, the description covers purpose, usage guidelines, side effects, and return format. It lacks explicit mention of prerequisites (e.g., session must exist, forward history), but the side effects and return error status imply these. With annotations lacking transparency, this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not add meaning beyond the input schema. The only parameter, session_id, is described in the schema as 'Active session ID', and the tool description does not elaborate on its context or relationship to other tools. With 0% schema description coverage, more parameter context would be beneficial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Navigate forward one step in the browser history' with a specific verb and resource. It distinguishes from wavexis_back and wavexis_navigate by mentioning their appropriate use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this after wavexis_back to restore a page and suggests wavexis_navigate for direct URL navigation. It does not mention when not to use (e.g., no forward history), but the guidance is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_get_configARead-onlyIdempotent
Return wavexis-mcp server configuration and available browser backends.
Use wavexis_backends instead when you only need the backend list;
this tool additionally exposes the server name for introspection.
Side effects: None; queries the local filesystem only. Returns: JSON string with keys: 'status' ('ok'/'error'), 'name' (str), 'available_backends' (list[str]), 'backend_versions' (dict).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral context beyond annotations: 'Side effects: None; queries the local filesystem only.' This provides transparency about side effects and scope, which is not captured in the annotations. No contradiction found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three short paragraphs. It front-loads the main purpose, then provides usage alternatives, and finally lists side effects and return format. Every sentence adds distinct value with no redundancy, making it highly efficient for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, read-only, idempotent), the description covers all essential aspects: purpose, sibling differentiation, side effects, and return type. An output schema exists (as per context signals), but the description still lists the expected keys in the return JSON, which is helpful. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single parameter 'input' of type object with no properties, effectively making the tool parameterless. The schema description coverage is 0% because the inner object has no description. However, the description does not discuss parameters, and since the tool takes no meaningful arguments, the omission is acceptable. The description could have explicitly stated 'takes no arguments' but the schema already conveys this. Score 4 for not adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns wavexis-mcp server configuration and available browser backends. It distinguishes itself from the sibling tool wavexis_backends by noting that this tool additionally exposes the server name for introspection, while wavexis_backends only returns the backend list. This provides a specific verb and resource with clear differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides usage guidance: 'Use ``wavexis_backends`` instead when you only need the backend list', which tells the agent when to use an alternative. It also implies this tool is for full configuration introspection, giving clear context for when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_hoverA
Hover over an element matching a CSS selector.
Use wavexis_click to actually activate an element; hover only moves the cursor without clicking.
Side effects: Moves the mouse cursor over the target element, firing mouseover/mouseenter events that may reveal tooltips or menus. Returns: JSON string with keys: 'status' ('ok'/'error'). On error also 'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint false and destructiveHint false, which are consistent with a hover operation. The description adds value by detailing side effects: moving the mouse cursor and firing mouseover/mouseenter events that may reveal tooltips. No contradictions or missing critical behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with no wasted words. It front-loads the purpose, then distinguishes from sibling, lists side effects, and specifies return format. Every sentence serves a clear purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the hover operation, the description is sufficiently complete. It covers purpose, comparison to click, side effects, and return format. However, it does not explain session management implications, but that is partially covered by sibling tools and schema. Overall, very good.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for each parameter, so the schema already handles parameter meaning. The tool description only mentions the CSS selector and does not add additional context for other parameters (url, backend, etc.). Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Hover over an element matching a CSS selector' and explicitly distinguishes from wavexis_click by noting that hover only moves the cursor without clicking. This differentiates it from its sibling tool effectively.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly references wavexis_click as the alternative for activating an element, providing clear when-to-use guidance. It does not explicitly list when not to use, but the context is sufficient for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_iframe_clickADestructive
Click an element inside an iframe.
Use wavexis_iframe_eval only for custom JS that click/fill cannot express.
Side effects: Triggers click handlers and may navigate or mutate the iframe DOM. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate destructiveHint=true and readOnlyHint=false. The description adds specific side effects: 'Triggers click handlers and may navigate or mutate the iframe DOM' and describes return format, going well beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose, usage guidance, side effects and return. No fluff, well-structured and front-loaded with the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a simple click action, annotations present, and output schema defined, the description covers purpose, when-not-to-use, side effects, and return format. Complete for effective tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool description does not discuss parameters, but the input schema provides descriptions for all three properties ('CSS selector inside the iframe', etc.), resulting in high schema description coverage. Thus baseline 3 is appropriate; the description adds no extra semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Click an element inside an iframe' with a specific verb and resource. This distinguishes it from sibling tools like wavexis_click (click in main frame) and wavexis_iframe_fill (fill inside iframe).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises to use wavexis_iframe_eval only when actions cannot be expressed by click/fill, providing a clear when-not-to-use. It does not exhaustively list all alternatives but gives effective guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_iframe_evalA
Evaluate a JavaScript expression inside an iframe.
Use wavexis_iframe_click or wavexis_iframe_fill for standard interactions instead of raw JS.
Side effects: Arbitrary; executes user-supplied JavaScript within the iframe context. Returns: JSON string with keys: 'status' ('ok'/'error'), 'result' (any).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Explicitly discloses that side effects are arbitrary because user-supplied JavaScript is executed in the iframe, which goes beyond what annotations alone convey. It also documents the return shape as a JSON string with 'status' and 'result' keys, giving the agent a clear outcome expectation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: the operation is stated first, sensible alternatives are given, and the side effects and return contract are compactly summarized. There is no fluff or redundant boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers what the tool does, when to avoid it, what side effects to expect, and what the response looks like. It does not mention error cases or promise-await behavior, but the schema covers await_promise and the side-effect warning compensates for the risk that raw JS evaluation entails.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds little beyond what the schema already provides: it tells the agent that an expression is evaluated in an iframe, but does not explain session_id, iframe_selector, or await_promise semantics. However, the input schema itself contains descriptive property documentation, so the baseline coverage is adequate and the tool description does not need to fully repeat it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific, unambiguous action: evaluate a JavaScript expression inside an iframe. It is clearly distinguished from sibling tools like wavexis_iframe_click and wavexis_iframe_fill by emphasizing that this is the raw JS path rather than a standard interaction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Directly tells the agent to prefer wavexis_iframe_click or wavexis_iframe_fill for standard interactions instead of raw JS, which is an explicit when-not-to-use signal. It does not mention a specific alternative for non-iframe evaluation (wavexis_eval), but the iframe-specific name and context make the intended scope clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_iframe_fillADestructive
Fill an input element inside an iframe with a value.
Use wavexis_iframe_click to submit or activate the field after filling.
Side effects: Mutates the input value within the iframe; may trigger input/change events. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description details side effects: 'Mutates the input value within the iframe; may trigger input/change events.' This adds specific behavioral context beyond the annotations (destructiveHint=true) and clarifies that the tool can trigger events, aiding in agent decision-making.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with four sentences covering purpose, usage guidance, side effects, and return format. Each sentence serves a distinct purpose and is front-loaded with the primary action, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's four parameters and existing annotations, the description covers the key behavioral aspects (purpose, side effects, return format, and guidance). It could be improved by mentioning prerequisites like an active session or error conditions, but overall it sufficiently equips an agent to understand the tool's context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides clear descriptions for all nested parameters (session_id, iframe_selector, selector, value). The tool description does not add extra parameter information, and the top-level 'input' parameter lacks a description. However, the schema coverage is effectively high for the nested fields, so the description adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Fill an input element inside an iframe with a value,' using a specific verb (fill) and resource (iframe input element). It clearly differentiates from sibling tools like wavexis_fill (main page) and wavexis_iframe_click (clicking), making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises 'Use wavexis_iframe_click to submit or activate the field after filling,' providing explicit context on when to use this tool and a follow-up action. It implies not to use this tool for clicking or submission, though it lacks explicit 'when not to use' statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_invokeADestructive
Invoke any wavexis backend method by name, the ultimate escape hatch.
Use a dedicated MCP tool (e.g. wavexis_act, wavexis_navigate)
instead when one exists for the desired action; this tool exposes the
full AbstractBackend API (e.g. page_print_to_pdf, perf_trace,
runtime_evaluate, pwa_install) for methods without a wrapper.
Side effects: May launch an ephemeral browser, navigate to a URL, and execute arbitrary backend methods; potentially destructive. Returns: JSON string with keys: 'status' ('ok'/'error'), 'type' (str), and either 'result' (any), 'base64' (str), or 'path' (str) depending on output.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey destructiveHint=true and openWorldHint=true. The description adds valuable context: it may launch an ephemeral browser, navigate to URLs, and execute arbitrary backend methods, which is potentially destructive and clarifies the open-world nature. It also specifies the return format. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured in three concise paragraphs: purpose/escape hatch, usage guidelines, and behavioral notes (side effects, return format). Every sentence contributes value with no redundancy or excessive length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (generic escape hatch with many parameters) and the presence of a detailed input schema and output description, the description covers purpose, when to use, side effects, and return format. It does not list all possible backend methods but provides sufficient examples, making it largely complete for agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not elaborate on any parameters beyond mentioning the method name. However, the input schema provides detailed descriptions for all properties (e.g., url, proxy, timeout). Since schema coverage is high, the baseline is 3, and the description adds no extra parameter-level meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as an escape hatch for invoking any wavexis backend method by name. It distinguishes itself from dedicated sibling tools (e.g., wavexis_act, wavexis_navigate) by stating to use those instead when available, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool (for methods without a dedicated MCP wrapper) and when to use alternatives (dedicated tools like wavexis_act). Provides concrete examples of methods that lack wrappers, offering clear guidance for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_key_downA
Dispatch a raw keyDown event to the active page via CDP.
This tool mirrors Playwright's API for compatibility; use
wavexis_press_keys for typing text and wavexis_act for
natural-language interaction.
Side effects: Sends a key-down input event to the browser page. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a behavioral disclosure beyond the annotations: 'Side effects: Sends a key-down input event to the browser page' and states the return format as a JSON status string. It could go slightly further by noting that a raw keyDown may need to be paired with wavexis_key_up, but the main runtime behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: first sentence says exactly what the tool does, second sentence gives routing guidance, and the final lines state side effects and return format. No sentence is wasted or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-level event-dispatch tool, the description covers the core invocation context: what it sends, where it sends it, how it should be positioned relative to higher-level typing tools, and what response shape to expect. It could be marginally more complete by noting the active page requirement or the key-up pairing, but the essential context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool description contains no parameter-level guidance and does not mention the required session_id, the key parameter, or the modifier toggles. Context reports 0% schema description coverage, and this description does not compensate by explaining the input contract that an agent must satisfy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a precise verb and resource: 'Dispatch a raw keyDown event to the active page via CDP.' This clearly identifies what the tool executes and at what level. It also distinguishes itself from sibling tools by directing typing flows to wavexis_press_keys and natural-language flows to wavexis_act.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool vs alternatives: 'use wavexis_press_keys for typing text and wavexis_act for natural-language interaction.' This gives the agent concrete routing criteria and keeps the raw keyDown tool scoped to low-level CDP scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_key_pressA
Press a single keyboard key on the focused element.
Use wavexis_type for typing full strings or wavexis_fill for setting field values without individual key events.
Side effects: Dispatches a keydown/keypress/keyup sequence for the given key on whatever element currently has focus. Returns: JSON string with keys: 'status' ('ok'/'error'). On error also 'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are present but provide minimal info (no readOnly, destructive, idempotent hints). The description adds valuable detail: side effects ('Dispatches a keydown/keypress/keyup sequence') and return format. It complements annotations well, though could mention requirement for active session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (5 sentences), front-loaded with purpose, and structured logically: purpose, usage guidelines, side effects, return type. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description covers purpose, usage, side effects, and output. It could explicitly state that the key is pressed on the currently focused element (implied but not explicit). Output schema exists, so return values are documented. Nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides clear descriptions for both parameters ('key' and 'session_id'). The tool description does not add extra parameter information beyond the schema, so baseline score of 3 is appropriate given schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Press a single keyboard key on the focused element' with a specific verb and resource. It also distinguishes from siblings wavexis_type and wavexis_fill, which are for typing strings or setting field values without individual key events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs when to use alternatives: 'Use wavexis_type for typing full strings or wavexis_fill for setting field values without individual key events.' This provides clear context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_key_upA
Dispatch a raw keyUp event to the active page via CDP.
This tool mirrors Playwright's API for compatibility; pair with
wavexis_key_down for low-level key control, or use
wavexis_press_keys for simple text entry.
Side effects: Sends a key-up input event to the browser page. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no meaningful annotation hints (all false), the description carries the disclosure burden. It explicitly states the side effect — sending a key-up input event to the browser page — and describes the return value. It does not mention failure behavior or session-state requirements, but the core behavioral impact is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: behavior first, then guidance/alternatives, then side effects and return value. Each sentence adds distinct information with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the availability of an output schema, the description covers the important contextual gaps: it defines the low-level purpose, pairs it with key_down, provides alternatives, and states side effects. It could be more complete by explicitly noting the need for an active session or that keyUp should follow keyDown, but it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not compensate by explaining the required key or session_id fields, the modifier flags, or the meaning of 'raw'. The nested schema does contain property descriptions, but the tool description itself contributes almost no parameter semantics beyond saying a keyUp event is dispatched.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action — dispatching a raw keyUp event to the active page via CDP. It clearly distinguishes itself by naming wavexis_key_down as its pairing counterpart and wavexis_press_keys as the higher-level alternative, so the agent knows what this tool uniquely provides.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit routing guidance: use wavexis_key_down for low-level key control and wavexis_press_keys for simple text entry. This tells the agent when to choose this tool rather than siblings and when to choose an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_list_tabsARead-onlyIdempotent
List all open browser tabs in the session.
Use to discover tab IDs before calling wavexis_activate_tab or wavexis_close_tab; use wavexis_session_info for session-level metadata instead.
Side effects: None — read-only query of the browser's tab list. Returns: JSON string with keys: 'status' ('ok'/'error'), 'tabs' (list[dict]), 'count' (int).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds 'Side effects: None — read-only query' and details on return format, providing useful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: starts with action, then usage, side effects, and return. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, annotations, and output schema, the description is complete. It covers purpose, usage, side effects, and return format, leaving no gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema includes a description for session_id ('Active session ID from wavexis_session_open'). The tool description does not add further parameter details, but the schema already covers it adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists all open browser tabs, with a specific verb and resource. It distinguishes from siblings like wavexis_session_info and tools that need tab IDs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use (before wavexis_activate_tab or wavexis_close_tab) and when-not-to-use (use wavexis_session_info for session metadata), along with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_mouse_drag_xyADestructive
Drag the mouse from one screen coordinate to another via CDP mouse events.
This tool mirrors Playwright's API for compatibility; use wavexis_act
instead for natural-language drag interactions.
Side effects: Dispatches mouseMoved, mousePressed, and mouseReleased events to the browser page; may trigger page interactions. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses the exact CDP events dispatched (mouseMoved, mousePressed, mouseReleased), states that page interactions may be triggered, and gives the return shape. This meaningfully supplements the annotations, which already hint at non-read-only, destructive behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, focused segments: the operation, the alternative tool, and side effects/returns. Every sentence earns its place, and the key purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a drag tool with a rich input schema and explicit annotations, the description adequately covers side effects, the compatibility context, the natural-language alternative, and the response format. An agent can correctly select and invoke the tool without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description itself adds only the general 'screen coordinate' semantics. However, the nested input schema documents all parameters in detail (start/end coordinates in CSS pixels, steps range, button enum, session_id source), so the schema carries most of the parameter documentation burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Drag the mouse from one screen coordinate to another via CDP mouse events.' It clearly distinguishes this raw coordinate-based drag tool from higher-level alternatives and states it is for Playwright-compatible drag operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent to use wavexis_act instead for natural-language drag interactions, naming the alternative and the condition under which it should be chosen. This leaves no ambiguity about 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.
wavexis_new_tabA
Create a new browser tab, optionally navigating to a URL.
Use to open a parallel page without losing the current tab; use wavexis_navigate to change the current tab's URL instead.
Side effects: Opens a new browser tab; if a URL is provided, issues a network request to it. Returns: JSON string with keys: 'status' ('ok'/'error'), 'tab_id' (str), 'url' (str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Disclosed side effects: opens a new tab and optionally issues a network request. This aligns with annotations (readOnlyHint=false, openWorldHint=true). No contradictions. Could elaborate on whether the URL must be valid or if any tab limits apply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with purpose and usage distinction. It includes side effects and return format in separate sentences. Slight improvement could be grouping related info, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tab-creation tool, the description covers purpose, usage, side effects, and return. It doesn't mention limitations or prerequisites beyond what the schema provides, but given the presence of output schema and annotations, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (0%). The description only mentions 'URL' indirectly; it does not explain 'session_id' or that the URL defaults to 'about:blank'. The schema itself provides descriptions, but the tool description adds little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a new browser tab') and the optional parameter 'URL'. It distinguishes itself from the sibling tool 'wavexis_navigate' by explaining when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use (open parallel page) and when not to (use wavexis_navigate for current tab). It doesn't mention prerequisites like an active session, but the schema indicates 'session_id' is required and its source.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_nl_clickADestructive
Click an element described in natural language.
Use wavexis_click when you already know the CSS selector, or wavexis_nl_fill to fill a field described in natural language.
Side effects: Locates the best-matching element via text/semantic matching and triggers a click event on it. Returns: JSON string with keys: 'status' ('ok'/'error'). On error also 'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructive hint is true but no read-only hint. The description adds side effects: 'Locates the best-matching element via text/semantic matching and triggers a click event.' This clarifies behavior but could elaborate on error cases or matching details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short paragraphs: purpose, usage guidelines, and side effects/returns. Every sentence adds value, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, side effects, and return format. Given the tool's simplicity and the presence of schema annotations, it is fairly complete. Could mention potential failure modes or limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already provides descriptions for all three parameters (query, auto_wait, session_id), so baseline is 3. The description adds nothing extra about parameters, only about return format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Click an element described in natural language', specifying a verb and resource. It distinguishes from siblings by noting alternatives: wavexis_click for known CSS selectors and wavexis_nl_fill for filling fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use this tool vs alternatives: 'Use wavexis_click when you already know the CSS selector, or wavexis_nl_fill to fill a field described in natural language.' No ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_nl_fillADestructive
Fill an element described in natural language with a value.
Use wavexis_fill when you already know the CSS selector, or wavexis_nl_click to click an element described in natural language.
Side effects: Locates the best-matching element via text/semantic matching, clears it, and sets its value to the provided string. Returns: JSON string with keys: 'status' ('ok'/'error'). On error also 'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds context beyond annotations: explains side effects (locates via text/semantic matching, clears element, sets value) and return format. Annotations already indicate destructive and open-world behavior, so description complements them without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is compact (two short paragraphs), front-loaded with purpose and alternatives, then side effects and return. Every sentence adds value without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, destructive nature, output schema exists), the description adequately covers purpose, side effects, and return format. It does not repeat schema info but provides enough context for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the tool description adds no detail about parameters. It implicitly covers 'query' and 'value' but omits 'auto_wait' and 'session_id'. The description does not elaborate on parameter semantics beyond what can be inferred from names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Fill an element described in natural language with a value', which is a specific verb+resource. It distinguishes from sibling tools wavexis_fill (CSS selector) and wavexis_nl_click (click instead of fill).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use alternatives: 'Use wavexis_fill when you already know the CSS selector, or wavexis_nl_click to click an element described in natural language.' This provides clear context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_page_pdfARead-onlyIdempotent
Generate a PDF via the low-level Page.printToPDF CDP method.
Offers pixel-level control over paper size, margins, and print
options beyond wavexis_pdf. Use wavexis_pdf for simpler
high-level PDF generation.
Side effects: launches/acquires a browser backend, navigates to url
if provided; writes to output_path when given.
Returns: JSON string with keys: 'status' ('ok'/'error'), 'type'
('pdf'), 'base64' (str) or 'path' (str), 'size_bytes' (int).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions side effects like launching a browser, navigating, and writing to output_path, which contradicts the readOnlyHint annotation (true). According to scoring guidelines, a score of 1 is assigned for contradiction, as it may confuse an AI agent about the tool's 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences covering purpose and differentiation, plus a clear listing of side effects and return format. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex schema and output schema, the description covers key behavioral aspects: side effects, return format, and comparison to sibling. It lacks explicit mention of session_id reuse but that is implied. Overall, fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has high description coverage (all parameters have descriptions), so the baseline is 3. The description adds only general context about pixel-level control over paper size and margins, not specific parameter details. Thus, no additional value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates a PDF via the low-level Page.printToPDF CDP method and distinguishes from the sibling tool wavexis_pdf by emphasizing pixel-level control. It explicitly directs users to wavexis_pdf for simpler high-level generation, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool versus wavexis_pdf, but does not explicitly state prerequisites (e.g., session_id or url requirement). However, the schema covers that detail, so the guidance is adequate without being exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_page_snapshotARead-onlyIdempotent
Capture the page as MHTML or a plain text document.
Use wavexis_scrape for structured data extraction, or this tool
when a full page archive (MHTML) or text dump is required.
Side effects: launches/acquires a browser backend, navigates to url
if provided; writes to output_path when given.
Returns: JSON string with keys: 'status' ('ok'/'error'), 'format'
(str), 'content' (str) or 'path' (str), 'size_bytes' (int).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description goes beyond annotations by stating side effects: 'launches/acquires a browser backend, navigates to url if provided; writes to output_path when given.' Annotations indicate readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, which the description complements without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is two sentences plus bullet points for side effects and return values. Every sentence adds value; there is no wasted text. The structure is clear and front-loaded with the primary purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of sibling tools and rich schema, the description covers purpose, usage guidelines, side effects, and return format (JSON structure with keys). Annotations provide additional safety info, making this complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the input schema has detailed descriptions for each property, the tool description only mentions 'url' and 'output_path' in the side effects. With 0% schema description coverage from the tool description, it adds minimal value beyond the schema. However, the schema itself provides good parameter documentation, resulting in a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Capture the page as MHTML or a plain text document', specifying the verb 'capture' and resource 'page' with formats. It distinguishes from sibling wavexis_scrape by noting its use for structured data extraction, establishing a clear differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explicitly guides when to use this tool vs wavexis_scrape: 'Use wavexis_scrape for structured data extraction, or this tool when a full page archive (MHTML) or text dump is required.' This provides clear context, though no explicit when-not-to-use advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_pdfARead-onlyIdempotent
Generate a PDF document from a web page.
Use wavexis_screenshot for image capture, or wavexis_page_pdf
when pixel-level control over paper size and margins is required.
Side effects: launches/acquires a browser backend, navigates to url
if provided, optionally evaluates js; writes to output_path when
given.
Returns: JSON string with keys: 'status' ('ok'/'error'), 'base64'
(str) or 'path' (str), 'size_bytes' (int).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description contradicts annotations: annotations mark readOnlyHint=true and destructiveHint=false, but description reports side effects like writing to output_path, launching browser, and navigating. This is a clear contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, well-structured with clear sections, no redundant text, and immediately states the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core behavior, side effects, and return format. Lacks session management context, but annotations and schema partially fill gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions key parameters (url, js, output_path) and their roles, but does not cover all parameters (e.g., media, paper, margin). Given schema description coverage is 0% (contradicted by actual schema), description partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates a PDF from a web page, and distinguishes between 'wavexis_screenshot' and 'wavexis_page_pdf' for image capture or pixel-level control.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises when to use alternatives ('wavexis_screenshot' for images, 'wavexis_page_pdf' for pixel-level control) and lists side effects, guiding appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_press_keysA
Type a sequence of characters at the page level without targeting an element.
Use wavexis_key_down/wavexis_key_up instead for individual
modifier-key control, or wavexis_act for natural-language typing.
Side effects: Dispatches keyDown/keyUp pairs to the browser page; no network requests. Returns: JSON string with keys: 'status' ('ok'/'error'), 'typed' (str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with annotations present, those annotations are only false values and do not explain the behavior. The description adds important behavioral context: it dispatches keyDown/keyUp pairs to the page, makes no network requests, and returns a JSON string with status and typed values. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the main purpose, and organized into short useful pieces: purpose, alternative tools, side effects, and return format. Every sentence adds value and none are redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the main behavior, side effects, and return format, which is strong. However, it does not explicitly mention that text is typed as a string but the session_id must come from an active session; this is only implied by the schema and the sibling tool wavexis_session_open, leaving a small completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should explain the parameters, but it only broadly describes typing text. It never mentions delay behavior, the required session_id, or the prerequisite active session. The nested schema does contain some property descriptions, but the tool description itself does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it types a sequence of characters at the page level without targeting an element, which is a specific verb and resource. It also distinguishes itself from wavexis_key_down/wavexis_key_up for modifier-key control and wavexis_act for natural-language input.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent when to use alternatives: use wavexis_key_down/wavexis_key_up for modifier keys and wavexis_act for natural-language typing. This gives concrete exclusions even though it does not explicitly enumerate every element-targeted sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_reloadA
Reload the current page, optionally bypassing the cache.
Use to refresh stale content or retry a failed load; use wavexis_navigate to go to a different URL instead.
Side effects: Re-issues network requests for the current page and its resources; discards in-memory page state. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses side effects: re-issues network requests and discards in-memory page state. Annotations provide no hints, so description adds value. Could mention if it's safe but not required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded, no wasted words. Purpose, usage, side effects, and return value are all covered efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple reload tool with two parameters and known output format, the description is complete. Side effects and return type are specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover both parameters; description adds minimal extra meaning ('optionally bypassing the cache' for ignore_cache). Baseline 3 as schema coverage is high in the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Reload the current page' with a specific verb and resource, and distinguishes from wavexis_navigate for going to a different URL.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (refresh stale content, retry failed load) and when not (use wavexis_navigate), with clear side effects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_right_clickADestructive
Right-click an element matching a CSS selector.
Use wavexis_click for standard left clicks or wavexis_double_click for double clicks.
Side effects: Fires a contextmenu event on the element, typically opening a context menu in the browser. Returns: JSON string with keys: 'status' ('ok'/'error'). On error also 'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false and destructiveHint=true, indicating the tool modifies state. The description adds valuable behavioral details: 'Side effects: Fires a contextmenu event on the element, typically opening a context menu in the browser.' and outlines the return format. However, it doesn't specify if the tool waits for the context menu to appear or any other post-action behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (4 sentences) and front-loaded: it starts with the purpose, immediately gives alternatives, then side effects, and finally return format. Every sentence provides necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage alternatives, side effects, and return format. Given the tool has multiple parameters and an output schema, it provides sufficient context for an agent to decide when and how to use it. However, it could briefly mention that it operates on the current page or session context, which is implied but not explicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description only mentions the 'CSS selector' parameter, which is already described in the input schema. Other parameters (url, backend, headless, etc.) are not elaborated in the description. Since the input schema itself contains descriptions for each property, the description adds minimal value to parameter understanding, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Right-click an element matching a CSS selector.' It distinguishes itself from siblings by explicitly mentioning alternatives: 'Use wavexis_click for standard left clicks or wavexis_double_click for double clicks.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool vs alternatives ('Use wavexis_click for standard left clicks or wavexis_double_click for double clicks.') and mentions side effects, giving clear context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_scrapeARead-onlyIdempotent
Scrape data from multiple URLs by evaluating a JS expression on each.
Use wavexis_eval for single-page evaluation, or wavexis_scrape
when the same expression must run across many pages with pagination.
Side effects: launches/acquires a browser backend, navigates to each
URL in urls sequentially, evaluates expression in every page
context.
Returns: JSON string with keys: 'status' ('ok'/'error'), 'results'
(list[dict[str, Any]]), 'format' (str), 'count' (int), 'total' (int).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds beyond that: 'Side effects: launches/acquires a browser backend, navigates to each URL sequentially, evaluates expression in every page context.' It also describes the return JSON structure, providing useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two paragraphs, first sentence defines purpose, second provides usage guidance and side effects. Every sentence adds value, no fluff. Well-structured and appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (multiple URLs, browser backend) and rich input schema with 9 parameters, the description covers the overall behavior, return format, and side effects. It lacks explanation of some parameters like backend or selector, but those are described in the schema. It is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% according to context, but actually the schema has descriptions for each parameter. The tool description does not add any additional parameter-level detail beyond what's already in the schema. Baseline is 3 due to schema coverage, and description adds no extra semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Scrape data from multiple URLs by evaluating a JS expression on each.' It uses specific verb (scrape) and resource (data from URLs), and distinguishes from sibling wavexis_eval by noting it's for single-page evaluation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool vs wavexis_eval: 'Use wavexis_eval for single-page evaluation, or wavexis_scrape when the same expression must run across many pages with pagination.' It provides clear context but does not mention when not to use it beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_screencastARead-onlyIdempotent
Capture a frame-by-frame screenshot sequence over a duration.
Use wavexis_screenshot for a single still image, or
wavexis_screencast when animation or time-series capture is needed.
Side effects: launches/acquires a browser backend, navigates to url
if provided, captures frames for duration; writes frame files to
output_dir when given.
Returns: JSON string with keys: 'status' ('ok'/'error'), 'frames'
(list[str]) or 'dir' (str), 'count' (int).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lists side effects (launching browser backend, navigating to URL, writing frames) which contradict the readOnlyHint annotation (true). The annotation implies no side effects, but the description explicitly states them. This is an annotation contradiction, warranting a score of 1 per guidelines.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is remarkably concise: one sentence for purpose, one for usage guidance, and one for side effects/return value. It is front-loaded and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main action, side effects, and return format. With an output schema available, it does not need to detail the return structure beyond the key names. It is complete for a tool with many parameters and a nested input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already contains detailed descriptions for each parameter, so schema coverage is effectively high. The description adds minimal extra meaning (e.g., that frames are written to output_dir when given), which is also in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the tool as capturing a frame-by-frame screenshot sequence over a duration. It uses a specific verb ('capture') and contrasts with the sibling tool wavexis_screenshot, leaving no ambiguity about its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises when to use this tool versus wavexis_screenshot ('use wavexis_screenshot for a single still image, or wavexis_screencast when animation or time-series capture is needed'), providing clear alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_screenshotARead-onlyIdempotent
Capture a screenshot of a web page or matched element.
Use wavexis_pdf when a print-ready document is needed, or
wavexis_annotated_screenshot when labelled element markers are
required.
Side effects: launches/acquires a browser backend, navigates to url
if provided, optionally evaluates js; writes to output_path when
given.
Returns: JSON string with keys: 'status' ('ok'/'error'), 'format'
(str), 'base64' (str) or 'path' (str), 'size_bytes' (int).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses side effects (launches browser, navigates, evaluates JS, writes to disk) beyond annotations. Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false, and description adds specifics. Return format is also described. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is extremely concise—three short paragraphs covering purpose, alternatives, side effects, and return format. No wasted words, front-loaded with core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (many parameters, many sibling tools), the description provides complete context: purpose, usage guidelines, side effects, return structure. Output schema exists, so return values need not be detailed further.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has comprehensive descriptions for all properties, so the description does not add additional meaning. Schema coverage is 0% per context, but the actual schema includes parameter descriptions. Leading to baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool captures a screenshot of a web page or matched element. It distinguishes from sibling tools wavexis_pdf (print-ready document) and wavexis_annotated_screenshot (labelled element markers). Verb and resource are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use alternatives: 'Use wavexis_pdf when a print-ready document is needed, or wavexis_annotated_screenshot when labelled element markers are required.' Also lists side effects, which helps the agent decide context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_select_optionADestructive
Select an option in a <select> element by value.
Use wavexis_fill for text inputs or wavexis_click for custom dropdown
widgets that are not native <select> elements.
Side effects: Changes the selected option of the <select> element,
firing change and input events.
Returns: JSON string with keys: 'status' ('ok'/'error'). On error also
'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses side effects ('Changes the selected option, firing change and input events') and the return format (JSON with status/error keys), which complements the destructiveHint annotation, adding value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at 3 sentences, front-loaded with the core action, and includes essential usage guidance and side effects without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity with a nested input schema, the description covers core functionality, side effects, and output format well. It misses explaining some parameters (backend, session_id) but the schema already covers them, making it largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description bears full burden but only hints at the 'value' parameter ('by value'). It does not explain other parameters like selector, backend, session_id, or wait_timeout, which are only documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Select an option in a ``<select>`` element by value,' specifying the verb, resource, and method. It distinguishes between native `<select>` elements and alternatives like wavexis_fill or wavexis_click, which differentiates it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises when to use this tool (for native `<select>` elements) and when to use others (wavexis_fill for text inputs, wavexis_click for custom dropdowns), providing clear context and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_session_closeADestructiveIdempotent
Close a browser session and release all associated resources.
Call when the session is no longer needed to free memory and browser processes; use wavexis_close_tab to close individual tabs instead.
Side effects: Terminates the browser process (or disconnects from a remote one) and frees session state. Destructive — all unsaved page state is lost. Returns: JSON string with keys: 'status' ('ok'/'error'), 'session_id' (str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds significant detail beyond annotations: explains side effects (terminates browser process, frees session state, unsaved data lost). Consistent with destructiveHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence adds value. Front-loaded purpose, then usage, side effects, return. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with annotations and output schema, description covers purpose, when to use, side effects, and return format. Fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one required parameter, schema provides a description. Description adds no extra param info, but schema coverage is sufficient; baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it closes a browser session and releases resources. It distinguishes from sibling tool wavexis_close_tab.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (session no longer needed) and when not to (use wavexis_close_tab for tabs). Provides clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_session_infoARead-onlyIdempotent
Query metadata and current URL of an active browser session.
Use to inspect session health or retrieve the current page URL; use wavexis_list_tabs for tab-level details instead.
Side effects: None — read-only; queries in-memory session state and the browser's current URL. Returns: JSON string with keys: 'status' ('ok'/'error'), 'session_id' (str), 'backend' (str), 'created_at' (str), 'current_url' (str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnly and idempotent. The description adds value by stating 'Side effects: None — read-only; queries in-memory session state and the browser's current URL', providing behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence adds value: purpose, usage, side effects, and return format. Front-loaded with the core action, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all necessary aspects: purpose, usage, side effects, and return values. Output schema is described with keys. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes the session_id parameter with its origin. Although description does not repeat parameter info, schema coverage is sufficient, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Query metadata and current URL of an active browser session', using a specific verb and resource. It distinguishes from sibling tool wavexis_list_tabs by explicitly mentioning that tab-level details are handled by that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use to inspect session health or retrieve the current page URL; use wavexis_list_tabs for tab-level details instead', providing clear guidance on when to use and when to use an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_session_openA
Launch a persistent browser session for multi-step workflows.
Call once at the start of a task and reuse the returned session_id for all subsequent calls; use wavexis_navigate with session_id omitted for one-off page fetches instead.
Side effects: Launches a browser process (or connects to an existing one) and allocates server-side session state; may open network connections to remote/cloud browsers. Returns: JSON string with keys: 'status' ('ok'/'error'), 'session_id' (str), 'backend' (str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses side effects: launches browser process, allocates server-side state, may open network connections. This adds value beyond annotations (openWorldHint, destructiveHint) and matches them. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with one sentence each for purpose, usage, side effects, and return. Every sentence is informative and front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (14 parameters, many siblings, annotations, no output schema but described), the description covers purpose, usage, side effects, and return format adequately. The parameter details are in the schema, so completeness is high.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool description does not describe any of the 14 parameters; schema descriptions are present but the context signal shows 0% schema_description_coverage in the description. With low coverage, the description should compensate, but it does not. Only a basic mention of the return structure is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool launches a persistent browser session, using the verb 'Launch' and the resource 'browser session'. It distinguishes from sibling `wavexis_navigate` by specifying that `wavexis_navigate` with session_id omitted is for one-off fetches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call once at task start and reuse the session_id, and contrasts with `wavexis_navigate` for one-off page fetches. Provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_set_filesADestructive
Upload files to a file input element (<input type="file">).
Use wavexis_drop when you need to simulate drag-and-drop of files or MIME data onto a non-file-input element.
Side effects: Sets the selected files on the target file input element, firing change events that typically trigger upload logic. Returns: JSON string with keys: 'status' ('ok'/'error'). On error also 'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses side effects (sets selected files, fires change events) and explains return structure with error keys. Annotations already indicate destructive and not read-only; description adds context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise (few sentences), front-loaded with purpose, then usage guidance, side effects, and return format. No superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, side effects, and return format. Lacks explicit prerequisites like needing a session or page, but optional session_id and url parameters address that partially. Siblings are many but the tool is well-differentiated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all parameters (e.g., files, selector). The main description adds minimal extra detail beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool uploads files to a file input element. Distinguishes from wavexis_drop for drag-and-drop. Specific verb and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool (for file input elements) and when to use the alternative wavexis_drop. Also describes side effects like triggering change events.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_shadow_clickADestructive
Click an element inside a shadow DOM tree.
Pierces shadow boundaries using the provided selector chain. Use wavexis_shadow_eval only for custom JS that click/fill cannot express.
Side effects: Triggers click handlers and may navigate or mutate the shadow DOM. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses side effects: triggers click handlers and may navigate or mutate the shadow DOM. It also specifies the return format (JSON with 'status' key). This adds significant value beyond annotations, which already indicated destructiveHint=true and readOnlyHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct with only three sentences, no unnecessary details, and front-loaded with the core action. Every sentence provides distinct value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For its complexity, the description covers key aspects: shadow DOM piercing, side effects, return format, and a usage alternative. Combined with annotations (destructive, open world) and output schema (present), it provides a complete understanding for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions for both parameters (selectors and session_id) are already present and clear. The tool description does not add additional parameter meaning beyond what the schema provides. Hence baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool clicks an element inside a shadow DOM tree by piercing shadow boundaries. It specifies the action (click), target (shadow DOM element), and method (selector chain), effectively differentiating it from siblings like wavexis_click (regular click) and wavexis_shadow_fill (fill instead of click).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises using wavexis_shadow_eval for custom JS that click/fill cannot express, providing a clear alternative. However, it lacks explicit when-to-use guidance compared to other click tools (e.g., wavexis_click), though the shadow DOM context intrinsically narrows usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_shadow_evalA
Evaluate a JavaScript expression inside a shadow DOM tree.
Pierces shadow boundaries using the provided selector chain: selectors[0] is in the
main document, selectors[1] in selectors[0].shadowRoot, and so on.
Use wavexis_shadow_click or wavexis_shadow_fill for standard interactions instead of raw JS.
Side effects: Arbitrary; executes user-supplied JavaScript within the shadow DOM context. Returns: JSON string with keys: 'status' ('ok'/'error'), 'result' (any).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly discloses the important behavioral trait: side effects are arbitrary because it executes user-supplied JavaScript in a shadow DOM context. It also states the return format. It does not describe closed shadow-root behavior or detailed error semantics, but the core risk is communicated well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: core verb, traversal mechanism, sibling-tool routing, then side effects and return shape. Every sentence adds useful information and there is no filler or redundant restating of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an arbitrary-JS tool, it covers the essential operational context: what is evaluated, how the shadow path is resolved, what side effects to expect, and what the result shape is. It would be more complete if it clarified what the expression is bound to—for example, whether the selected element is the this or argument of the expression.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The prose explains the selectors chain, but that largely mirrors the input schema. It adds little about session_id, expression context, or await_promise. Given the low schema description coverage reported, the description does not sufficiently compensate for understanding how to correctly construct all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific action and resource: evaluate a JavaScript expression inside a shadow DOM tree. The selector-chain description makes the traversal model explicit, and the explicit mention of shadow_click/shadow_fill helps distinguish this tool from the interaction siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a direct routing rule: use wavexis_shadow_click or wavexis_shadow_fill for standard interactions instead of raw JS. This is an explicit when-not condition and names the relevant alternatives, which is exactly what an agent needs to avoid misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_shadow_fillADestructive
Fill an input element inside a shadow DOM tree with a value.
Pierces shadow boundaries using the provided selector chain. Use wavexis_shadow_click to submit or activate the field after filling.
Side effects: Mutates the input value within the shadow DOM; may trigger input/change events. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context beyond annotations: describes side effects (mutates input, may trigger events) and return format. No contradiction with annotations (destructive hint true matches mutation). Could mention permission requirements or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose, usage hint, side effects/return. No wasted words; front-loaded with key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given schema provides parameter descriptions, description covers purpose, side effects, return format, and a sibling usage hint. Output schema exists so return details not needed. Complete for a focused tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% so description must compensate. It gives context for selectors ('pierces shadow boundaries') and value ('fill...with a value'), but does not elaborate on session_id or precise selector format. Adequate but not thorough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Fill', resource 'input element inside a shadow DOM tree', and distinguishes from siblings like wavexis_fill and wavexis_shadow_click. It also mentions piercing shadow boundaries, specifying the unique capability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance to use wavexis_shadow_click after filling for submission/activation. Implies context of shadow DOM but lacks explicit when-not-to-use or other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_stopAIdempotent
Stop all pending navigations and resource loads in the session.
Use when a page load is hanging or no longer needed; use wavexis_wait to wait for a load to complete instead.
Side effects: Aborts in-flight network requests and pending navigations; the page is left in its current partial state. Returns: JSON string with keys: 'status' ('ok'/'error').
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true and destructiveHint=false, and the description adds valuable behavioral context: 'Side effects: Aborts in-flight network requests and pending navigations; the page is left in its current partial state.' No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four concise sentences with no fluff: purpose, usage guidance, side effects, and return format. Well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description covers all needed aspects: purpose, when to use, side effects, and return format. The output schema is mentioned implicitly by describing the return format. Fully complete for this context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention the session_id parameter, but the input schema provides a description ('Active session ID'). With 0% schema coverage reported, the description could have added value, but the schema compensates. Score is baseline as schema covers the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Stop all pending navigations and resource loads in the session') using a specific verb and resource, and distinguishes itself from the sibling tool wavexis_wait.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use this tool ('when a page load is hanging or no longer needed') and when not to (use wavexis_wait instead), providing clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_tapA
Tap an element matching a CSS selector (touch-emulated click).
Use wavexis_click for mouse-based clicking on desktop contexts or wavexis_nl_click when you only have a natural language description.
Side effects: Dispatches a touch tap on the target element, which may toggle controls or trigger navigation on mobile-optimised pages. Returns: JSON string with keys: 'status' ('ok'/'error'). On error also 'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only and non-destructive behavior. The description adds specific side effects: dispatches a touch tap, may toggle controls or trigger navigation on mobile-optimised pages. It also details the return format including error keys. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three sentences) and well-structured: first sentence defines the action, second gives usage guidance, third covers side effects and return format. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the description covers purpose, usage, side effects, and return format. Output schema is implied by the description of the JSON return. While prerequisites (e.g., needing a page) are not explicitly stated, the session parameter handles this implicitly. Overall, it is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% meaning the tool description adds no additional parameter information beyond what the input schema provides. However, the schema itself has clear descriptions for all parameters (e.g., 'CSS selector for element to tap'), so the agent can understand parameters from there. The tool description does not add extra meaning, scoring at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool taps an element using a CSS selector with touch emulation, and explicitly distinguishes it from sibling tools wavexis_click (mouse-based) and wavexis_nl_click (natural language). The verb 'tap' is specific and action-oriented.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool (touch-emulated click) versus alternatives (wavexis_click for desktop, wavexis_nl_click for NL description). This direct comparison leaves no ambiguity about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_typeADestructive
Type text into an element character by character with optional delay.
Use wavexis_fill instead when you want to set a field's value instantly without per-keystroke delays, or wavexis_fill_form for multiple fields.
Side effects: Appends characters to the target input/textarea element, firing keydown/keypress/input/keyup events per character. Returns: JSON string with keys: 'status' ('ok'/'error'). On error also 'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructive and non-readonly, but description adds side effects (firing events) and return format. It goes beyond annotations but could mention prerequisites like element visibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured: purpose, usage guidance, side effects, return. Concise but not overly terse. Each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage alternatives, side effects, return format. Missing prerequisites (element visibility, focus) but overall sufficient for a typing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description does not explain parameters like selector, text, delay, etc. Schema has detailed property descriptions but description adds no parameter-level detail, despite low schema description coverage (0%) signal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it types text character by character with optional delay. It distinguishes itself from siblings by explicitly mentioning alternatives: wavexis_fill for instant value and wavexis_fill_form for multiple fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance: 'Use wavexis_fill instead when you want to set a field's value instantly without per-keystroke delays, or wavexis_fill_form for multiple fields.' This tells the agent when to choose alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_uncheckADestructiveIdempotent
Uncheck a checkbox matching a CSS selector by clicking it.
Use wavexis_check to check a checkbox or wavexis_click for generic element activation.
Side effects: Clicks the target checkbox to toggle it to unchecked, firing change events. Returns: JSON string with keys: 'status' ('ok'/'error'). On error also 'error', 'tool', 'type', 'message', 'suggestion' (all str).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds side effects ('Clicks the target checkbox to toggle it to unchecked, firing change events') beyond annotations, and does not contradict the destructiveHint or idempotentHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with clear front-loading: purpose, usage guidelines, then side effects and return value. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, side effects, return format, and distinguishes from siblings. The output schema exists, but the description still provides helpful details. Complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 0% of parameters, but the tool description does not mention parameters or add meaning beyond the schema's own parameter descriptions. No additional value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Uncheck a checkbox matching a CSS selector by clicking it.' Verb and resource are specific, and the description distinguishes this from sibling tools like wavexis_check and wavexis_click.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use wavexis_check for checking and wavexis_click for generic clicks, providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wavexis_waitARead-onlyIdempotent
Block until a page condition (load, selector, URL, network idle) is met.
Use after wavexis_navigate when the wait strategy was 'none', or to wait for dynamic content; use wavexis_stop to cancel a load instead.
Side effects: None — read-only polling with no page mutations; blocks the tool call up to the configured timeout. Returns: JSON string with keys: 'status' ('ok'/'error'), 'elapsed_ms' (int).
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses side effects: 'None — read-only polling with no page mutations; blocks the tool call up to the configured timeout.' This adds context beyond annotations (readOnlyHint, idempotentHint) by detailing the blocking behavior and polling nature. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a single sentence for purpose, followed by usage notes, side effects, and return format. Every sentence adds value and is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (one required parameter, five optional with enums) and the presence of thorough schema descriptions, the description covers all necessary aspects: purpose, when to use, side effects, and return format. It is sufficient for an AI agent to understand and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not elaborate on individual parameters; however, the input schema already provides detailed descriptions for each parameter (timeout, selector, strategy, url_pattern). Since schema coverage of descriptions is high, the description adds minimal value beyond restating the purpose and return format. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'block until' and the resource 'a page condition', listing specific conditions (load, selector, URL, network idle). It distinguishes itself from sibling tools like wavexis_navigate and wavexis_stop by providing context on when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'after wavexis_navigate when the wait strategy was none' or 'for dynamic content'. Also provides an alternative: 'use wavexis_stop to cancel a load instead'. This gives clear guidance on usage versus alternatives.
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.
9 tool updates
v1.6.25- Changed
wavexis_close_page1 field changed- added
Input schema / $defs / ClosePageInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_console_clear1 field changed- added
Input schema / $defs / ConsoleClearInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_cookie_get4 fields changed- added
Input schema / $defs / CookieGetInput / properties / domain / descriptionAdded value: +"Optional domain filter" - added
Input schema / $defs / CookieGetInput / properties / name / descriptionAdded value: +"Cookie name to retrieve" - added
Input schema / $defs / CookieGetInput / properties / path / descriptionAdded value: +"Optional path filter" - added
Input schema / $defs / CookieGetInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_cookie_list5 fields changed- added
Input schema / $defs / CookieListInput / properties / domain / descriptionAdded value: +"Optional domain filter" - added
Input schema / $defs / CookieListInput / properties / limit / descriptionAdded value: +"Maximum number of cookies to return" - added
Input schema / $defs / CookieListInput / properties / name / descriptionAdded value: +"Optional cookie name filter" - added
Input schema / $defs / CookieListInput / properties / path / descriptionAdded value: +"Optional path filter" - added
Input schema / $defs / CookieListInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_find2 fields changed- added
Input schema / $defs / FindInput / properties / limit / descriptionAdded value: +"Maximum number of matches to return" - added
Input schema / $defs / FindInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_key_down5 fields changed- added
Input schema / $defs / KeyDownInput / properties / alt / descriptionAdded value: +"Whether to hold the Alt key" - added
Input schema / $defs / KeyDownInput / properties / ctrl / descriptionAdded value: +"Whether to hold the Ctrl key" - added
Input schema / $defs / KeyDownInput / properties / meta / descriptionAdded value: +"Whether to hold the Meta (Cmd) key" - added
Input schema / $defs / KeyDownInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open" - added
Input schema / $defs / KeyDownInput / properties / shift / descriptionAdded value: +"Whether to hold the Shift key"
- Changed
wavexis_key_up5 fields changed- added
Input schema / $defs / KeyUpInput / properties / alt / descriptionAdded value: +"Whether to hold the Alt key" - added
Input schema / $defs / KeyUpInput / properties / ctrl / descriptionAdded value: +"Whether to hold the Ctrl key" - added
Input schema / $defs / KeyUpInput / properties / meta / descriptionAdded value: +"Whether to hold the Meta (Cmd) key" - added
Input schema / $defs / KeyUpInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open" - added
Input schema / $defs / KeyUpInput / properties / shift / descriptionAdded value: +"Whether to hold the Shift key"
- Changed
wavexis_mouse_drag_xy7 fields changed- added
Input schema / $defs / MouseDragXYInput / properties / button / descriptionAdded value: +"Mouse button to use" - added
Input schema / $defs / MouseDragXYInput / properties / end_x / descriptionAdded value: +"Ending X coordinate in CSS pixels" - added
Input schema / $defs / MouseDragXYInput / properties / end_y / descriptionAdded value: +"Ending Y coordinate in CSS pixels" - added
Input schema / $defs / MouseDragXYInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open" - added
Input schema / $defs / MouseDragXYInput / properties / start_x / descriptionAdded value: +"Starting X coordinate in CSS pixels" - added
Input schema / $defs / MouseDragXYInput / properties / start_y / descriptionAdded value: +"Starting Y coordinate in CSS pixels" - added
Input schema / $defs / MouseDragXYInput / properties / steps / descriptionAdded value: +"Number of intermediate steps for smooth dragging"
- Changed
wavexis_press_keys1 field changed- added
Input schema / $defs / PressKeysInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
67 tool updates
v1.6.24- Changed
wavexis_act4 fields changed- added
Input schema / $defs / ActInput / properties / instruction / minLengthAdded value: +1 - added
Input schema / $defs / ActInput / properties / max_retries / descriptionAdded value: +"Maximum number of retry attempts" - added
Input schema / $defs / ActInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open" - added
Input schema / $defs / ActInput / properties / valueAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Explicit text value for type/fill actions (overrides auto-extraction)", + "title": "Value" +}
- Changed
wavexis_activate_tab2 fields changed- added
Input schema / $defs / ActivateTabInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open" - added
Input schema / $defs / ActivateTabInput / properties / tab_id / descriptionAdded value: +"Tab ID to operate on"
- Changed
wavexis_annotated_screenshot2 fields changed- added
Input schema / $defs / AnnotatedScreenshotInput / properties / output_path / descriptionAdded value: +"File path to save the output. If omitted, a default path is used." - added
Input schema / $defs / AnnotatedScreenshotInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_browser_version3 fields changed- added
Input schema / $defs / BrowserVersionInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / BrowserVersionInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / BrowserVersionInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call."
- Changed
wavexis_check2 fields changed- added
Input schema / $defs / CheckInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / CheckInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_click11 fields changed- added
Input schema / $defs / ClickInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / ClickInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / ClickInput / properties / button / enumAdded value: +[ + "left", + "right", + "middle" +] - added
Input schema / $defs / ClickInput / properties / click_count / descriptionAdded value: +"Number of clicks to perform" - added
Input schema / $defs / ClickInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / ClickInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / ClickInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / ClickInput / properties / url / descriptionAdded value: +"URL to navigate to (required without session_id)" - added
Input schema / $defs / ClickInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / ClickInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / ClickInput / properties / wait_timeout / minimumAdded value: +1000
- Added
wavexis_close_page - Changed
wavexis_close_tab2 fields changed- added
Input schema / $defs / CloseTabInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open" - added
Input schema / $defs / CloseTabInput / properties / tab_id / descriptionAdded value: +"Tab ID to operate on"
- Added
wavexis_console_clear - Added
wavexis_cookie_get - Added
wavexis_cookie_list - Changed
wavexis_cookies_clear1 field changed- added
Input schema / $defs / CookiesClearInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_cookies_delete12 fields changed- added
Input schema / $defs / CookiesDeleteInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / CookiesDeleteInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / CookiesDeleteInput / properties / domain / descriptionAdded value: +"Cookie domain" - added
Input schema / $defs / CookiesDeleteInput / properties / domain / minLengthAdded value: +1 - added
Input schema / $defs / CookiesDeleteInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / CookiesDeleteInput / properties / name / descriptionAdded value: +"Name of the item" - added
Input schema / $defs / CookiesDeleteInput / properties / name / minLengthAdded value: +1 - added
Input schema / $defs / CookiesDeleteInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / CookiesDeleteInput / properties / url / descriptionAdded value: +"URL to navigate to (required without session_id)" - added
Input schema / $defs / CookiesDeleteInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / CookiesDeleteInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / CookiesDeleteInput / properties / wait_timeout / minimumAdded value: +1000
- Changed
wavexis_cookies_get8 fields changed- added
Input schema / $defs / CookiesGetInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / CookiesGetInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / CookiesGetInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / CookiesGetInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / CookiesGetInput / properties / url / descriptionAdded value: +"URL to navigate to (required without session_id)" - added
Input schema / $defs / CookiesGetInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / CookiesGetInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / CookiesGetInput / properties / wait_timeout / minimumAdded value: +1000
- Changed
wavexis_cookies_set20 fields changed- added
Input schema / $defs / CookiesSetInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / CookiesSetInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / CookiesSetInput / properties / domain / descriptionAdded value: +"Cookie domain" - added
Input schema / $defs / CookiesSetInput / properties / domain / minLengthAdded value: +1 - added
Input schema / $defs / CookiesSetInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / CookiesSetInput / properties / http_only / descriptionAdded value: +"Whether the cookie is HttpOnly" - added
Input schema / $defs / CookiesSetInput / properties / name / descriptionAdded value: +"Name of the item" - added
Input schema / $defs / CookiesSetInput / properties / name / minLengthAdded value: +1 - added
Input schema / $defs / CookiesSetInput / properties / path / descriptionAdded value: +"Cookie path" - added
Input schema / $defs / CookiesSetInput / properties / path / minLengthAdded value: +1 - added
Input schema / $defs / CookiesSetInput / properties / same_site / descriptionAdded value: +"SameSite attribute: Strict, Lax, or None" - added
Input schema / $defs / CookiesSetInput / properties / same_site / enumAdded value: +[ + "Strict", + "Lax", + "None" +] - added
Input schema / $defs / CookiesSetInput / properties / secure / descriptionAdded value: +"Whether the cookie is Secure" - added
Input schema / $defs / CookiesSetInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / CookiesSetInput / properties / url / descriptionAdded value: +"URL to navigate to (required without session_id)" - added
Input schema / $defs / CookiesSetInput / properties / value / descriptionAdded value: +"Value to set" - added
Input schema / $defs / CookiesSetInput / properties / value / minLengthAdded value: +1 - added
Input schema / $defs / CookiesSetInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / CookiesSetInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / CookiesSetInput / properties / wait_timeout / minimumAdded value: +1000
- Changed
wavexis_dom_focus3 fields changed- added
Input schema / $defs / DOMFocusInput / properties / selector / descriptionAdded value: +"CSS selector for the target element" - added
Input schema / $defs / DOMFocusInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / DOMFocusInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_dom_get9 fields changed- added
Input schema / $defs / DOMGetInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / DOMGetInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / DOMGetInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / DOMGetInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / DOMGetInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / DOMGetInput / properties / url / descriptionAdded value: +"URL to navigate to (required without session_id)" - added
Input schema / $defs / DOMGetInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / DOMGetInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / DOMGetInput / properties / wait_timeout / minimumAdded value: +1000
- Changed
wavexis_dom_get_attr5 fields changed- added
Input schema / $defs / DOMGetAttrInput / properties / name / descriptionAdded value: +"Name of the item" - added
Input schema / $defs / DOMGetAttrInput / properties / name / minLengthAdded value: +1 - added
Input schema / $defs / DOMGetAttrInput / properties / selector / descriptionAdded value: +"CSS selector for the target element" - added
Input schema / $defs / DOMGetAttrInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / DOMGetAttrInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_dom_query10 fields changed- added
Input schema / $defs / DOMQueryInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / DOMQueryInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / DOMQueryInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / DOMQueryInput / properties / selector / descriptionAdded value: +"CSS selector for the target element" - added
Input schema / $defs / DOMQueryInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / DOMQueryInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / DOMQueryInput / properties / url / descriptionAdded value: +"URL to navigate to (required without session_id)" - added
Input schema / $defs / DOMQueryInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / DOMQueryInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / DOMQueryInput / properties / wait_timeout / minimumAdded value: +1000
- Changed
wavexis_dom_remove3 fields changed- added
Input schema / $defs / DOMRemoveInput / properties / selector / descriptionAdded value: +"CSS selector for the target element" - added
Input schema / $defs / DOMRemoveInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / DOMRemoveInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_dom_remove_attr5 fields changed- added
Input schema / $defs / DOMRemoveAttrInput / properties / name / descriptionAdded value: +"Name of the item" - added
Input schema / $defs / DOMRemoveAttrInput / properties / name / minLengthAdded value: +1 - added
Input schema / $defs / DOMRemoveAttrInput / properties / selector / descriptionAdded value: +"CSS selector for the target element" - added
Input schema / $defs / DOMRemoveAttrInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / DOMRemoveAttrInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_dom_scroll1 field changed- added
Input schema / $defs / DOMScrollInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_dom_set_attr4 fields changed- added
Input schema / $defs / DOMSetAttrInput / properties / name / minLengthAdded value: +1 - added
Input schema / $defs / DOMSetAttrInput / properties / selector / descriptionAdded value: +"CSS selector for the target element" - added
Input schema / $defs / DOMSetAttrInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / DOMSetAttrInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_dom_snapshot1 field changed- added
Input schema / $defs / DOMSnapshotInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Added
wavexis_double_click - Changed
wavexis_drag8 fields changed- added
Input schema / $defs / DragInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / DragInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / DragInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / DragInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / DragInput / properties / url / descriptionAdded value: +"URL to navigate to (required without session_id)" - added
Input schema / $defs / DragInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / DragInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / DragInput / properties / wait_timeout / minimumAdded value: +1000
- Added
wavexis_drop - Changed
wavexis_eval7 fields changed- added
Input schema / $defs / EvalInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / EvalInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / EvalInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / EvalInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / EvalInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / EvalInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / EvalInput / properties / wait_timeout / minimumAdded value: +1000
- Changed
wavexis_fill10 fields changed- added
Input schema / $defs / FillInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / FillInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / FillInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / FillInput / properties / selector / descriptionAdded value: +"CSS selector for the target element" - added
Input schema / $defs / FillInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / FillInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / FillInput / properties / url / descriptionAdded value: +"URL to navigate to (required without session_id)" - added
Input schema / $defs / FillInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / FillInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / FillInput / properties / wait_timeout / minimumAdded value: +1000
- Changed
wavexis_fill_form10 fields changed- added
Input schema / $defs / FillFormInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / FillFormInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / FillFormInput / properties / fields / maxItemsAdded value: +100 - added
Input schema / $defs / FillFormInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / FillFormInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / FillFormInput / properties / url / descriptionAdded value: +"URL to navigate to (required without session_id)" - added
Input schema / $defs / FillFormInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / FillFormInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / FillFormInput / properties / wait_timeout / minimumAdded value: +1000 - added
Input schema / $defs / FormField / properties / selector / minLengthAdded value: +1
- Added
wavexis_find - Added
wavexis_find_by_text - Added
wavexis_get_config - Changed
wavexis_hover10 fields changed- added
Input schema / $defs / HoverInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / HoverInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / HoverInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / HoverInput / properties / selector / descriptionAdded value: +"CSS selector for the target element" - added
Input schema / $defs / HoverInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / HoverInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / HoverInput / properties / url / descriptionAdded value: +"URL to navigate to (required without session_id)" - added
Input schema / $defs / HoverInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / HoverInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / HoverInput / properties / wait_timeout / minimumAdded value: +1000
- Changed
wavexis_iframe_click3 fields changed- added
Input schema / $defs / IframeClickInput / properties / iframe_selector / minLengthAdded value: +1 - added
Input schema / $defs / IframeClickInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / IframeClickInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_iframe_eval3 fields changed- added
Input schema / $defs / IframeEvalInput / properties / await_promise / descriptionAdded value: +"Whether to await the returned promise" - added
Input schema / $defs / IframeEvalInput / properties / iframe_selector / minLengthAdded value: +1 - added
Input schema / $defs / IframeEvalInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_iframe_fill3 fields changed- added
Input schema / $defs / IframeFillInput / properties / iframe_selector / minLengthAdded value: +1 - added
Input schema / $defs / IframeFillInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / IframeFillInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Added
wavexis_invoke - Added
wavexis_key_down - Changed
wavexis_key_press1 field changed- added
Input schema / $defs / KeyPressInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Added
wavexis_key_up - Changed
wavexis_list_tabs1 field changed- added
Input schema / $defs / ListTabsInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Added
wavexis_mouse_drag_xy - Changed
wavexis_navigate9 fields changed- added
Input schema / $defs / NavigateInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / NavigateInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / NavigateInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / NavigateInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / NavigateInput / properties / wait_selector / descriptionAdded value: +"CSS selector to wait for (used when wait_strategy='selector')" - added
Input schema / $defs / NavigateInput / properties / wait_strategy / descriptionAdded value: +"Wait strategy: load, domcontentloaded, networkidle, selector, url, none" - added
Input schema / $defs / NavigateInput / properties / wait_strategy / enumAdded value: +[ + "load", + "domcontentloaded", + "networkidle", + "selector", + "url", + "none" +] - added
Input schema / $defs / NavigateInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / NavigateInput / properties / wait_url_pattern / descriptionAdded value: +"URL pattern to wait for (used when wait_strategy='url')"
- Changed
wavexis_new_tab2 fields changed- added
Input schema / $defs / NewTabInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open" - added
Input schema / $defs / NewTabInput / properties / url / descriptionAdded value: +"URL for the new tab"
- Added
wavexis_nl_click - Added
wavexis_nl_fill - Added
wavexis_page_pdf - Added
wavexis_page_snapshot - Changed
wavexis_pdf15 fields changed- added
Input schema / $defs / PDFInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / PDFInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / PDFInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / PDFInput / properties / js / descriptionAdded value: +"JavaScript to execute before the action" - added
Input schema / $defs / PDFInput / properties / landscape / descriptionAdded value: +"Use landscape orientation" - added
Input schema / $defs / PDFInput / properties / margin / descriptionAdded value: +"Page margin (e.g. '0.4in')" - added
Input schema / $defs / PDFInput / properties / media / enumAdded value: +[ + "print", + "screen" +] - added
Input schema / $defs / PDFInput / properties / no_header_footer / descriptionAdded value: +"Exclude header and footer from PDF" - added
Input schema / $defs / PDFInput / properties / output_path / descriptionAdded value: +"File path to save the output. If omitted, a default path is used." - added
Input schema / $defs / PDFInput / properties / paper / enumAdded value: +[ + "a4", + "letter", + "legal", + "a3", + "a5" +] - added
Input schema / $defs / PDFInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / PDFInput / properties / url / descriptionAdded value: +"URL to navigate to (required without session_id)" - added
Input schema / $defs / PDFInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / PDFInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / PDFInput / properties / wait_timeout / minimumAdded value: +1000
- Added
wavexis_press_keys - Changed
wavexis_reload1 field changed- added
Input schema / $defs / ReloadInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Added
wavexis_right_click - Changed
wavexis_scrape8 fields changed- added
Input schema / $defs / ScrapeInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / ScrapeInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / ScrapeInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / ScrapeInput / properties / output_format / enumAdded value: +[ + "json", + "csv" +] - added
Input schema / $defs / ScrapeInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / ScrapeInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / ScrapeInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / ScrapeInput / properties / wait_timeout / minimumAdded value: +1000
- Changed
wavexis_screencast13 fields changed- added
Input schema / $defs / ScreencastInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / ScreencastInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / ScreencastInput / properties / format / descriptionAdded value: +"Image format: 'png' or 'jpeg'" - added
Input schema / $defs / ScreencastInput / properties / format / enumAdded value: +[ + "png", + "jpeg" +] - added
Input schema / $defs / ScreencastInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / ScreencastInput / properties / max_height / descriptionAdded value: +"Maximum screenshot height in pixels" - added
Input schema / $defs / ScreencastInput / properties / max_width / descriptionAdded value: +"Maximum screenshot width in pixels" - added
Input schema / $defs / ScreencastInput / properties / quality / descriptionAdded value: +"JPEG quality 1-100 (ignored for PNG)" - added
Input schema / $defs / ScreencastInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / ScreencastInput / properties / url / descriptionAdded value: +"URL to navigate to (required without session_id)" - added
Input schema / $defs / ScreencastInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / ScreencastInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / ScreencastInput / properties / wait_timeout / minimumAdded value: +1000
- Changed
wavexis_screenshot11 fields changed- added
Input schema / $defs / ScreenshotInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / ScreenshotInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / ScreenshotInput / properties / format / enumAdded value: +[ + "png", + "jpeg" +] - added
Input schema / $defs / ScreenshotInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / ScreenshotInput / properties / height / descriptionAdded value: +"Viewport height in pixels" - added
Input schema / $defs / ScreenshotInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / ScreenshotInput / properties / wait_selector / descriptionAdded value: +"CSS selector to wait for (used when wait_strategy='selector')" - added
Input schema / $defs / ScreenshotInput / properties / wait_strategy / descriptionAdded value: +"Wait strategy: load, domcontentloaded, networkidle, selector, url, none" - added
Input schema / $defs / ScreenshotInput / properties / wait_strategy / enumAdded value: +[ + "load", + "domcontentloaded", + "networkidle", + "selector", + "url", + "none" +] - added
Input schema / $defs / ScreenshotInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / ScreenshotInput / properties / width / descriptionAdded value: +"Viewport width in pixels"
- Changed
wavexis_select_option10 fields changed- added
Input schema / $defs / SelectOptionInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / SelectOptionInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / SelectOptionInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / SelectOptionInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / SelectOptionInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / SelectOptionInput / properties / url / descriptionAdded value: +"URL to navigate to (required without session_id)" - added
Input schema / $defs / SelectOptionInput / properties / value / minLengthAdded value: +1 - added
Input schema / $defs / SelectOptionInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / SelectOptionInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / SelectOptionInput / properties / wait_timeout / minimumAdded value: +1000
- Changed
wavexis_session_info1 field changed- added
Input schema / $defs / SessionInfoInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_session_open14 fields changed- added
Input schema / $defs / SessionOpenInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / SessionOpenInput / properties / browserAdded value: +{ + "default": "chrome", + "description": "Browser engine for BiDi backend: 'chrome' (chromedriver) or 'firefox' (geckodriver). Only used when backend='bidi'.", + "enum": [ + "chrome", + "firefox" + ], + "title": "Browser", + "type": "string" +} - added
Input schema / $defs / SessionOpenInput / properties / browser_urlAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "WebSocket URL of an existing browser (e.g. ws://localhost:9222)", + "title": "Browser Url" +} - added
Input schema / $defs / SessionOpenInput / properties / connect_existingAdded value: +{ + "default": false, + "description": "Launch Chrome with --remote-debugging-port and connect to it. Useful for reusing an existing browser profile with logged-in sessions. The browser is launched headed (headless is ignored).", + "title": "Connect Existing", + "type": "boolean" +} - added
Input schema / $defs / SessionOpenInput / properties / extra_headers / descriptionAdded value: +"Extra HTTP headers to send" - added
Input schema / $defs / SessionOpenInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / SessionOpenInput / properties / height / descriptionAdded value: +"Viewport height in pixels" - added
Input schema / $defs / SessionOpenInput / properties / proxy / descriptionAdded value: +"Proxy server URL (e.g. http://host:port)" - added
Input schema / $defs / SessionOpenInput / properties / remote_urlAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Cloud browser WebSocket URL", + "title": "Remote Url" +} - added
Input schema / $defs / SessionOpenInput / properties / stealthAdded value: +{ + "default": false, + "description": "Enable anti-bot stealth mode", + "title": "Stealth", + "type": "boolean" +} - added
Input schema / $defs / SessionOpenInput / properties / timeout / descriptionAdded value: +"Operation timeout in ms" - added
Input schema / $defs / SessionOpenInput / properties / user_agent / descriptionAdded value: +"Custom User-Agent string" - added
Input schema / $defs / SessionOpenInput / properties / user_data_dirAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Persistent Chrome user data directory", + "title": "User Data Dir" +} - added
Input schema / $defs / SessionOpenInput / properties / width / descriptionAdded value: +"Viewport width in pixels"
- Changed
wavexis_set_files9 fields changed- added
Input schema / $defs / SetFilesInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / SetFilesInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / SetFilesInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / SetFilesInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / SetFilesInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / SetFilesInput / properties / url / descriptionAdded value: +"URL to navigate to (required without session_id)" - added
Input schema / $defs / SetFilesInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / SetFilesInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / SetFilesInput / properties / wait_timeout / minimumAdded value: +1000
- Changed
wavexis_shadow_click1 field changed- added
Input schema / $defs / ShadowClickInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_shadow_eval2 fields changed- added
Input schema / $defs / ShadowEvalInput / properties / await_promise / descriptionAdded value: +"Whether to await the returned promise" - added
Input schema / $defs / ShadowEvalInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_shadow_fill1 field changed- added
Input schema / $defs / ShadowFillInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_tap9 fields changed- added
Input schema / $defs / TapInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / TapInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / TapInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / TapInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / TapInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / TapInput / properties / url / descriptionAdded value: +"URL to navigate to (required without session_id)" - added
Input schema / $defs / TapInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / TapInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / TapInput / properties / wait_timeout / minimumAdded value: +1000
- Changed
wavexis_type11 fields changed- added
Input schema / $defs / TypeInput / properties / backend / descriptionAdded value: +"Backend: 'cdp', 'bidi', or 'auto'" - added
Input schema / $defs / TypeInput / properties / backend / enumAdded value: +[ + "cdp", + "bidi", + "auto" +] - added
Input schema / $defs / TypeInput / properties / headless / descriptionAdded value: +"Run browser in headless mode" - added
Input schema / $defs / TypeInput / properties / selector / descriptionAdded value: +"CSS selector for the target element" - added
Input schema / $defs / TypeInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / TypeInput / properties / session_id / descriptionAdded value: +"Active session ID. If omitted, a stateless session is created for this call." - added
Input schema / $defs / TypeInput / properties / text / minLengthAdded value: +1 - added
Input schema / $defs / TypeInput / properties / url / descriptionAdded value: +"URL to navigate to (required without session_id)" - added
Input schema / $defs / TypeInput / properties / wait_timeout / descriptionAdded value: +"Timeout in ms for wait conditions" - added
Input schema / $defs / TypeInput / properties / wait_timeout / maximumAdded value: +300000 - added
Input schema / $defs / TypeInput / properties / wait_timeout / minimumAdded value: +1000
- Changed
wavexis_uncheck2 fields changed- added
Input schema / $defs / CheckInput / properties / selector / minLengthAdded value: +1 - added
Input schema / $defs / CheckInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open"
- Changed
wavexis_wait6 fields changed- added
Input schema / $defs / WaitInput / properties / selector / descriptionAdded value: +"CSS selector to target an element" - added
Input schema / $defs / WaitInput / properties / session_id / descriptionAdded value: +"Active session ID from wavexis_session_open" - changed
Input schema / $defs / WaitInput / properties / strategy / descriptionPrevious value: -"load, domcontentloaded, networkidle, selector, url"New value: +"load, domcontentloaded, networkidle, selector, url, none" - added
Input schema / $defs / WaitInput / properties / strategy / enumAdded value: +[ + "load", + "domcontentloaded", + "networkidle", + "selector", + "url", + "none" +] - added
Input schema / $defs / WaitInput / properties / timeout / descriptionAdded value: +"Operation timeout in ms" - added
Input schema / $defs / WaitInput / properties / url_pattern / descriptionAdded value: +"URL pattern to wait for (used when strategy='url')"
7 tool updates
v1.2.0- Added
wavexis_annotated_screenshot - Added
wavexis_iframe_click - Added
wavexis_iframe_eval - Added
wavexis_iframe_fill - Added
wavexis_shadow_click - Added
wavexis_shadow_eval - Added
wavexis_shadow_fill
46 tool updates
v1.0.1- First observed
wavexis_act - First observed
wavexis_activate_tab - First observed
wavexis_back - First observed
wavexis_backends - First observed
wavexis_browser_version - First observed
wavexis_check - First observed
wavexis_click - First observed
wavexis_close_tab - First observed
wavexis_cookies_clear - First observed
wavexis_cookies_delete - First observed
wavexis_cookies_get - First observed
wavexis_cookies_set - First observed
wavexis_dom_focus - First observed
wavexis_dom_get - First observed
wavexis_dom_get_attr - First observed
wavexis_dom_query - First observed
wavexis_dom_remove - First observed
wavexis_dom_remove_attr - First observed
wavexis_dom_scroll - First observed
wavexis_dom_set_attr - First observed
wavexis_dom_snapshot - First observed
wavexis_drag - First observed
wavexis_eval - First observed
wavexis_fill - First observed
wavexis_fill_form - First observed
wavexis_forward - First observed
wavexis_hover - First observed
wavexis_key_press - First observed
wavexis_list_tabs - First observed
wavexis_navigate - First observed
wavexis_new_tab - First observed
wavexis_pdf - First observed
wavexis_reload - First observed
wavexis_scrape - First observed
wavexis_screencast - First observed
wavexis_screenshot - First observed
wavexis_select_option - First observed
wavexis_session_close - First observed
wavexis_session_info - First observed
wavexis_session_open - First observed
wavexis_set_files - First observed
wavexis_stop - First observed
wavexis_tap - First observed
wavexis_type - First observed
wavexis_uncheck - First observed
wavexis_wait
TDQS
Although many descriptions are careful, the toolset has numerous overlapping boundaries: cookie_get/cookies_get/cookie_list, key_press/key_down/key_up/press_keys, pdf/page_pdf, drag/mouse_drag_xy, and multiple click variants. An agent must read subtle wording to avoid picking the wrong tool. The high volume of near-duplicate operations makes misselection likely despite the cross-references.
The wavexis_ prefix is applied consistently and the names are uniformly snake_case with a generally verb-first style. Minor inconsistencies exist around singular/plural pairs and noun-first forms such as mouse_drag_xy, but the overall pattern is predictable.
With 72 tools, this is an extreme mismatch for a typical well-scoped MCP server. Many tools are raw compatibility wrappers, duplicate subclasses, or generic escape hatches that could be consolidated. The count makes the toolset much harder to navigate than a browser automation server with a focused, moderate-size surface.
The surface covers virtually the entire browser automation lifecycle: sessions, tabs, navigation, DOM operations, forms, keyboard and mouse input, iframes, shadow DOM, cookies, screenshots, PDFs, scraping, accessibility, and natural language actions. The generic wavexis_invoke tool also provides an escape hatch for any unwrapped backend method, leaving no obvious dead end.
Maintenance
Related MCP Connectors
Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to i…
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
Live browser debugging for AI assistants — DOM, console, network via MCP.
Hosted MCP with 91 agent tools: X, domains, SEO, Maps, Trends, Search, YouTube, TikTok, and more.
Related MCP Servers
- AlicenseAqualityNot gradedmaintenanceEnables browser automation through Playwright using accessibility tree snapshots instead of screenshots. Supports web scraping, form interactions, testing, and connecting to existing browser sessions with logged-in accounts.22239,3205-
- AlicenseAqualityBmaintenanceA professional browser automation server that enables MCP clients to perform structured web navigation, element interaction, and data extraction using the DrissionPage framework. It features 14 deterministic tools optimized for LLMs to automate web workflows efficiently without relying on vision-based models.69489Apache 2.0
- AlicenseBqualityDmaintenanceAn MCP server that provides browser automation capabilities, enabling LLMs to control a web browser for navigation, interaction, and data extraction.3223213MIT
- FlicenseNot gradedqualityDmaintenanceA browser automation MCP server providing 30 tools for navigation, interaction, page information, state checks, tab management, and more, enabling natural language control of browsers via MCP-compatible clients.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/MathiasPaulenko/wavexis-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server