Skip to main content
Glama
jumodada

DrissionPage MCP Server

by jumodada

DrissionPage MCP Server

Professional browser automation for Codex, Claude Code, and MCP clients, powered by DrissionPage.

DrissionPage is a Python web automation library built around direct Chromium/CDP control with requests-style HTTP session support. This server exposes its browser-facing capabilities as typed, atomic MCP tools.

PyPI Downloads License Python Version CI codecov Status

DrissionPage MCP interactive Browser Lab

Open the interactive Browser Lab to replay bounded natural pointer motion, drag controls, and verify observable state.

Official Repositories: GitHub | GitCode

English Version | 中文版本

🖱️ Atomic Browser Control with Natural Pointer Motion

DrissionPage MCP 0.8.7 exposes 69 typed browser capabilities. The MCP server provides accurate low-level observation and interaction; the client or an optional Skill composes those capabilities for a site, component library, challenge, or business workflow.

The model decides what to do; the MCP executes the requested browser operation exactly.

Screenshot / page observation
        ↓
Multimodal model identifies viewport coordinates
        ↓
page_click_xy(x=442, y=369, profile="natural")
        ↓
24-step eased cubic path → exact target → press → release
        ↓
Observe and verify the resulting page state

Core interaction guarantees

  • Two bounded profiles: direct emits one exact move; natural emits a deterministic 24-step eased cubic path with reproducible 8-14ms intervals and exact final arrival.

  • No hidden randomness: the same start, target, and profile produce the same path; there is no jitter, overshoot, or anti-detection logic. Pointer position is stateful, so a repeated call can begin from the previous endpoint.

  • Explicit sequences: click is the selected move profile, optional caller-specified delay, press, release; drag keeps one press across the selected path and ordered waypoints.

  • Failure-safe input: a pressed pointer button is released if execution fails after the press.

  • Fresh browser evidence: selector geometry is resolved immediately before selector-backed drag operations.

  • Typed results: outputs report the executed coordinates, button, step count, and explicit delay metadata.

Use structured DOM targets when reliable selectors exist. Use coordinates, natural motion, and explicit drag waypoints for canvas controls, editors, maps, charts, and other visual-only surfaces. Component-specific target discovery, challenge observation, multi-click sequencing, login procedures, and other business policy belong in the client or an optional Skill.

{
  "x": 442,
  "y": 369,
  "profile": "natural",
  "button": "left",
  "element": "visually identified control"
}

Designed for authorized browser automation, testing, accessibility workflows, and technical research. The core does not provide challenge-specific or site-specific workflows.

Related MCP server: WaveXisMCP

🧭 Client Setup Navigation


🚀 What is DrissionPage MCP?

DrissionPage MCP Server is a local Model Context Protocol (MCP) server that brings DrissionPage browser automation tools to Codex CLI/IDE, Claude Code, Claude Desktop, and other MCP clients.

The standalone server exposes 69 typed tools, zero MCP prompts, and one static optional-Skills catalog resource. Version 0.8.7 keeps that registry stable while adding explicit tab targeting, per-tab action isolation, and controlled background/window/context tab creation. Every tool loads by default; there is no capability profile or opt-in full mode. Models compose these atomic capabilities, while reusable challenge and site procedures live outside the distribution as optional Skills. Browser execution is powered by DrissionPage.

🌟 Why Choose DrissionPage MCP?

  • Structured-First, Vision-Ready: Uses DOM structure when available and multimodal coordinates when visual interaction is the better tool

  • Deterministic: Reliable element selection with CSS/XPath normalization for LLM-friendly selectors

  • Natural Pointer Motion: Offers exact direct movement and a bounded deterministic 24-step eased trajectory from the same atomic tools

  • Fast & Lightweight: Built on DrissionPage's efficient engine with minimal overhead

  • Type-Safe: Full type hints and Pydantic validation for all tools

  • Open-source Friendly: Includes compatibility notes, troubleshooting, and CI checks for maintainable contributions

  • Easy Integration: Simple pip install + Codex TOML or MCP JSON configuration

✅ Quality and Real-World Validation

DrissionPage MCP is backed by a strict regression suite and browser-backed scenario checks:

  • Strict automated tests: unit, protocol, schema snapshot, response-contract, resource, release-metadata, security-policy, browser-integration, and coverage checks run in CI.

  • 95% coverage floor: CI enforces the current 95% coverage threshold and uploads coverage reports.

  • Real browser verification: Chrome/Chromium-backed integration tests exercise the same MCP tools exposed to clients.

  • Document-boundary verification: focused browser tests prove cross-origin OOPIF reads and DrissionPage-exposed closed Shadow DOM lookup without JavaScript piercing fallbacks.

  • Challenge-surface verification: local fixtures cover normal, hidden, off-viewport, delayed, and CSS 3D cross-origin widgets; official Turnstile dummy keys cover visible, invisible, pass, fail, and forced-interactive callbacks without retaining tokens.

  • Scenario validation: the playground MCP Lab covers realistic forms, commerce pages, social feeds, timelines, dynamic waits, iframe cases, and recovery paths without depending on public demo websites.


⚡ First Success Path

# Install or update Codex CLI (macOS/Linux)
curl -fsSL https://chatgpt.com/codex/install.sh | sh

# Install from PyPI
python -m pip install -U "drissionpage-mcp>=0.8.7"

# Verify package and environment
drissionpage-mcp --version
drissionpage-mcp doctor

The official installer updates an existing Codex CLI installation as well. For Windows and the Codex desktop app, see the official Codex CLI and app documentation.

Then add the Codex or MCP client configuration below and restart your client.


📦 Setup in Codex CLI/IDE (30 seconds)

Codex supports local stdio MCP servers through config.toml; the CLI and IDE extension share the same MCP configuration.

  1. Edit Codex configuration:

    • User-level: ~/.codex/config.toml

    • Project-level: .codex/config.toml inside a trusted project

  2. Add this configuration:

    [mcp_servers.drissionpage]
    command = "drissionpage-mcp"
    startup_timeout_sec = 20
    tool_timeout_sec = 60
  3. Restart Codex. In the TUI, run /mcp; from a shell, run codex mcp list.

For Claude Code, Claude Desktop, and other JSON-based MCP clients, see Integration Examples.


🎯 Quick Examples

Navigate and Screenshot

"Visit https://example.com and take a screenshot for me"

Search and Extract

"Go to Wikipedia, search for Python, and get the first paragraph"

Form Automation

"Fill out the form at https://httpbin.org/forms/post and submit it"

Data Scraping

"Get the top 10 news headlines from news.ycombinator.com"

🛠️ 69 Typed Browser Tools

All 63 tab-scoped tools accept an optional tab_id. Omit it to capture the MCP current tab once at call start, or pass an MCP/native DrissionPage tab id to target explicitly. Successful tab-scoped results return the resolved MCP tab_id; independent tabs can run concurrently while actions on one tab remain serialized.

🌐 Navigation (5 tools)

  • page_navigate - Navigate to any URL; target an existing tab_id, or combine new_tab=true with optional background, new_window, or new_context; observe returns a change summary

  • page_navigate_with_http_auth - Navigate through a scoped HTTP auth challenge in a dedicated disposable Chromium context without returning credentials

  • page_go_back - Navigate backward in browser history

  • page_go_forward - Navigate forward in browser history

  • page_refresh - Reload current page

🗂️ Tab Operations (3 tools)

  • tab_list - List open browser tabs with stable MCP tab IDs

  • tab_switch - Switch to a tab returned by tab_list

  • tab_close - Reject new work, drain in-flight actions, then close one tab without closing the whole browser

🎯 Element Interaction & Extraction (16 tools)

  • element_find - Find one element by CSS selector or XPath; bare selectors like h1 are treated as CSS

  • element_find_all - Extract bounded repeated elements with text, attributes, and recommended selectors

  • element_click - Click any element with additive left/right/middle and single/double-click semantics

  • element_click_and_download - Correlate one selector, coordinate, or keyboard trigger with one integrity-checked artifact under DP_MCP_DOWNLOAD_ROOT

  • element_type - Input text into elements

  • element_upload_file - Use element_upload_file(paths=[...]) to upload files from DP_MCP_UPLOAD_ROOT to input[type=file]

  • element_click_and_upload - Arm Chromium's file chooser, click its trigger, inject approved files, and clean interception without an operating-system picker

  • element_scroll_into_view - Bring an element into the viewport before acting

  • element_hover - Hover an element to trigger menu/tooltip states

  • element_select - Select an option by value, text, or index

  • element_check - Check or uncheck checkbox/radio controls

  • element_get_text - Get element or page text

  • element_get_attribute - Get an HTML attribute

  • element_get_property - Get a live DOM property such as an input value

  • element_get_html - Get element or page HTML

  • element_state_get - Read live DrissionPage state flags and document/viewport geometry for one element

📸 Page Operations (18 tools)

  • page_screenshot - Capture an inline full-page or viewport screenshot

  • page_screenshot_save - Save a screenshot under DP_MCP_SCREENSHOT_ROOT

  • page_export_artifact - Generate a managed PDF or MHTML artifact under DP_MCP_ARTIFACT_ROOT with SHA-256 and receipt evidence

  • page_snapshot - Return a bounded page outline with headings, links, buttons, inputs, forms, and selector recommendations

  • page_accessibility_snapshot - Return a bounded Chromium accessibility tree for the page or a scoped element, with field values redacted unless explicitly requested

  • page_observe - Return a compact page fingerprint with URL, title, counts, visible text samples, active element, and recent console summary

  • page_evaluate - Run bounded JavaScript in the current page and return a JSON-safe result

  • page_scroll - Use page_scroll(pixels=...) for relative scrolling, or pass x/y for an absolute position

  • keyboard_press - Send keys to the active element/page without echoing the input in results

  • page_resize - Adjust browser window

  • page_pointer_move - Move to exact viewport CSS coordinates with direct or bounded deterministic natural motion

  • page_pointer_drag - Perform one failure-safe coordinate drag through up to six optional ordered waypoints with the selected profile

  • page_pointer_drag_element - Resolve source and destination geometry immediately before dragging; supports CSS/XPath in the top document or one same-origin iframe, plus CSS paths through nested open Shadow DOM hosts

  • page_click_xy - Move with direct or natural motion, optionally wait for an explicit delay, then press and release at the exact target

  • page_close - Close browser

  • page_get_url - Get current URL

  • page_dialog_observe - Wait for and inspect a pending native alert, confirm, or prompt without handling it

  • page_dialog_respond - Use page_dialog_respond(action="accept") (or "dismiss") for one pending alert, confirm, or prompt

🧱 Frame / Shadow DOM (5 tools)

  • frame_list - List iframe/frame contexts without changing global frame state

  • frame_snapshot - Use frame_snapshot(frame_selector="...") or frame_index to inspect one iframe with bounded outline data

  • frame_find - Find an element inside a selected iframe

  • shadow_find - Find one element inside a shadow root exposed by the current supported DrissionPage runtime, including tested closed roots

  • shadow_find_all - Extract repeated elements from a DrissionPage-exposed shadow root

🌍 Browser Environment (6 tools)

  • browser_headers_set - Replace extra request headers and return names with redacted values; an empty object clears them

  • browser_user_agent_set - Override the user agent and optional platform, returning both the accepted and previous user agents

  • browser_cache_clear - Clear HTTP cache while preserving Cookies, localStorage, and sessionStorage

  • browser_permission_get - Query one browser permission for the current document origin without opening an OS prompt

  • browser_permission_set - Use browser_permission_set(setting="granted") (or "denied"/"prompt") for an exact origin/current Chromium context

  • browser_permissions_reset - Reset permission overrides for the current Chromium context

🍪 Cookies & Storage (7 tools)

  • browser_cookies_get - Read normalized cookies with values redacted by default

  • browser_cookies_set - Set up to 100 cookies in one call and return accepted metadata with redacted values

  • browser_cookies_delete - Delete one named cookie with optional URL/domain/path scope

  • browser_cookies_clear - Clear all browser cookies

  • storage_get - Read localStorage/sessionStorage by key or as a map, with values redacted unless include_values=true

  • storage_set - Set one localStorage/sessionStorage item without echoing the value

  • storage_clear - Clear one storage key or an entire storage area

🧪 Debug / Observability (1 tool)

  • page_console_logs - Read bounded browser console messages with level filtering, cursor pagination, and limits

⏱️ Wait Operations (4 tools)

  • wait_for_element - Wait for element to appear (with timeout)

  • wait_for_url - Use wait_for_url(url_pattern="...") until the current URL contains the supplied text

  • wait_until - Use wait_until(condition="text_contains", value="...") or another documented condition/value pair

  • wait_time - Delay execution

🌐 Network Control & Observation (4 tools)

  • network_listen_start - Start bounded HTTP/XHR/Fetch observation through DrissionPage

  • network_listen_wait - Wait for bounded packet metadata with optional redacted headers or body excerpts

  • network_listen_stop - Stop observation and optionally clear queued packets

  • network_blocked_urls_set - Use network_blocked_urls_set(urls=[...]) to replace blocked URL patterns; an empty list clears them

🧩 Optional Skills Discovery

  • Resource: drissionpage://skills/catalog

  • Prompts: none

  • Repository examples: cross-origin-iframe-probe, turnstile-testing, and xiaohongshu-content-research

  • Entry point: skills/<skill-name>/SKILL.md; catalog schema v2 includes Skill/MCP versions, required tools, fixture, fixed v0.8.4 source revision, verification status, and SHA-256

  • Skills are Markdown procedures for the MCP host. They are not Python modules, are not executed by the server, and are excluded from wheel/sdist packages.

Validate a source checkout with python playground/validate_skills.py --json. Install the fixed catalog release from skills-manager@v0.8.4 with python install.py install --client codex --json or python install.py install --client claude --json.

📖 Skills and Reusable Procedures

The MCP core exposes atomic browser operations. Skills provide reusable, reviewable procedures outside the server:

Example Skill

What it demonstrates

Stop boundary

cross-origin-iframe-probe

Frame discovery, cross-origin diagnosis, coordinate fallback, and outside verification

Cannot read the inner DOM of a cross-origin iframe

turnstile-testing

Cloudflare test fixtures, authorized production challenge interaction, coordinate geometry, and parent-page checks

Use the documented support matrix and verify the resulting page state

xiaohongshu-content-research

Bounded read-only note research and the deterministic social-notes fixture

Stop on robots, login, captcha, safety page, or rate limit

Read the full Skills guide before publishing a new procedure. Skills must use existing typed tools, collect fresh evidence, verify postconditions, redact secrets, and state unsupported cases. They do not add new MCP tools or override the server's navigation and safety policy. Multi-tab Skills should carry the returned MCP tab_id into later tab-scoped calls rather than relying on mutable current-tab state.


📚 Documentation

Guide

Description

README.md

Installation, tools, and architecture

docs/compatibility.md

Supported Python, DrissionPage, MCP, and browser versions

docs/tool-contract.md

Public MCP tool names, inputs, annotations, and response shape

docs/troubleshooting.md

Doctor command, browser startup, and client setup fixes

CHANGELOG.md

Release notes


🏗️ Architecture

Built with clean, modular design:

DrissionMCP/
├── drissionpage_mcp/
│   ├── cli.py              # Process entry point
│   ├── server.py           # MCP transport and request routing
│   ├── context.py          # Browser and tab lifecycle facade
│   ├── runtime.py          # Operation keys, receipts, artifacts, and capability state
│   ├── tool_outputs.py     # Typed public result contracts
│   ├── browser/            # Focused DrissionPage capabilities and page scripts
│   └── tools/              # 69 typed MCP tool definitions and thin adapters
├── tests/                  # Unit tests
└── playground/             # MCP Lab business-scenario playground

Key Principles:

  • ✅ Type-safe Pydantic models for all tools

  • ✅ Async/await throughout

  • ✅ Clean separation of concerns

  • ✅ Comprehensive error handling

  • ✅ Unit and protocol test coverage for core tool registration/response behavior


🔧 Configuration

[mcp_servers.drissionpage]
command = "drissionpage-mcp"
startup_timeout_sec = 20
tool_timeout_sec = 60

# Optional browser/runtime environment variables:
# [mcp_servers.drissionpage.env]
# CHROME_PATH = "/custom/path/to/chrome"
# DP_HEADLESS = "1"

You can also add it with the Codex CLI:

codex mcp add drissionpage -- drissionpage-mcp

If Codex/Cursor/Claude Desktop is launched from a GUI and cannot see your shell PATH or virtualenv, use the absolute Python executable instead:

[mcp_servers.drissionpage]
command = "/absolute/path/to/python"
args = ["-m", "drissionpage_mcp.cli"]
startup_timeout_sec = 20
tool_timeout_sec = 60

JSON MCP Clients

{
  "mcpServers": {
    "drissionpage": {
      "command": "drissionpage-mcp"
    }
  }
}

Advanced JSON Setup

{
  "mcpServers": {
    "drissionpage": {
      "command": "drissionpage-mcp",
      "args": ["--log-level", "DEBUG"],
      "env": {
        "CHROME_PATH": "/custom/path/to/chrome"
      }
    }
  }
}

Absolute-Python fallback for GUI clients:

{
  "mcpServers": {
    "drissionpage": {
      "command": "/absolute/path/to/python",
      "args": ["-m", "drissionpage_mcp.cli"],
      "env": {
        "CHROME_PATH": "/custom/path/to/chrome",
        "DP_HEADLESS": "1"
      }
    }
  }
}

📋 Requirements

  • Python 3.10+ (3.11+ recommended)

  • Chrome or Chromium browser

  • Any MCP-compatible client: Codex CLI/IDE, Claude Code, Claude Desktop, Cursor, VS Code, etc.


🧪 Testing

Verify Installation

# Environment diagnostics; add --launch-browser for a browser startup check
drissionpage-mcp doctor
drissionpage-mcp doctor --launch-browser

# Source checkout tests
python -m pip install -e ".[dev]"
python -m pytest tests/

# Coverage report (CI enforces the current 95% floor and uploads coverage.xml)
python -m pytest tests/ --cov=drissionpage_mcp --cov-report=term-missing --cov-report=xml

# Browser-backed MCP Lab scenario checks
DP_HEADLESS=1 python playground/run_mcp_lab.py --all --json

GitHub Actions runs lint, unit, protocol, package, browser integration, and coverage jobs. Codecov is configured through codecov.yml and the CI workflow.

Try It Out

# No-browser MCP registry check
python playground/run_mcp_lab.py --case registry

# Local deterministic site check
python playground/run_mcp_lab.py --case site

# Browser-backed form inspection scenario
DP_HEADLESS=1 python playground/run_mcp_lab.py --case form-inspect

🚀 Use Cases

Automated Testing - Test web applications ✅ Data Scraping - Extract structured data from websites ✅ Form Automation - Fill and submit forms ✅ Monitoring - Check for updates or changes ✅ Screenshot Verification - Capture and verify page state ✅ Content Analysis - Analyze web content programmatically


🐛 Troubleshooting

Tools Not Loading?

drissionpage-mcp --version

Should output the installed package version, for example drissionpage-mcp 0.8.7.

drissionpage-mcp doctor must also report both mcp_supported and mcp_server_wiring as ok; package-version output alone does not prove that an MCP client can initialize the server.

Browser Issues?

# Check browser installation
which google-chrome    # Linux
which chromium         # macOS

Codex / MCP Client Not Finding Server?

  • Codex: run codex mcp list; in the TUI, run /mcp

  • JSON clients: verify config file path and JSON syntax

  • Restart Codex or your MCP client after changes

  • Check logs: drissionpage-mcp --log-level DEBUG

See docs/troubleshooting.md for the complete troubleshooting guide.


📊 Project Status

Component

Status

Core Features

✅ Complete

Testing

✅ Strict unit/protocol/schema checks plus browser-backed scenarios

Documentation

✅ Setup, compatibility, troubleshooting, and public tool contracts

Package

✅ PyPI metadata and build checks

Status

🟡 Beta; real browser behavior depends on local Chrome/Chromium and target sites

Version: 0.8.7 | License: Apache 2.0 | Maintained: ✅ Active


🗺️ Roadmap

Current (v0.8.7)

  • 69 atomic navigation, tab/frame/shadow, accessibility, observation, interaction, browser-environment, network, Cookie/storage, wait, and console tools, all loaded by default

  • stdio MCP server integration

  • Doctor diagnostics for local setup

  • Stable JSON mirror, structuredContent, and typed per-tool MCP outputSchema

  • Structured recovery hints in error.details.hints for common failures

  • Sanitized browser failures with DIALOG_PENDING/DIALOG_NOT_FOUND recovery and strict standards-compliant JSON for non-finite JavaScript values

  • Balanced page_snapshot output so link-heavy pages still expose controls and forms

  • Atomic type, select, check, click, keyboard, upload, wait, and state-read tools cover native controls and framework-driven widgets without library-specific branches

  • Stable optional tab_id targeting across 63 tab-scoped tools, per-tab action serialization, cross-tab parallelism, and draining close/cleanup semantics

  • Tab management with tab_list, tab_switch, tab_close, and page_navigate(new_tab=true, background=..., new_window=..., new_context=...)

  • Observable actions with page_observe, page_evaluate, wait_until, and optional observe=true changes on navigation, click, and type

  • Console observability with page_console_logs, console summary in page_observe, and console change fields in observe=true

  • Form, component-library, challenge, and convenience workflows remain outside the MCP core

  • Repository example Skills for cross-origin iframes, authorized Turnstile fixtures, and bounded Xiaohongshu-like research are discoverable through the static catalog and excluded from wheel/sdist packages

  • Capability-probed page_dialog_respond, additive double/context click behavior, and selector/coordinate/keyboard download correlation with safe ArtifactRef metadata

  • Secret-bearing Web Storage values require include_values=true; keyboard and keyboard-download results expose redacted metadata only

  • Per-tab download trigger locking, shared deadlines, cleanup/replay guarantees, and a 250ms fail-closed late-mission guard

  • Reproducible W01-W08 public-tool benchmark with ten isolated runs per workload, machine-readable evidence, and zero duplicate side effects

  • Network listener beta with network_listen_start, network_listen_wait, and network_listen_stop for HTTP/XHR/Fetch observation

  • Public-response redaction for URLs, credentials, headers, Cookies, network bodies, errors, receipts, and text mirrors; listener waits are isolated from unrelated browser actions

  • Browser-only request environment control with redacted header, user-agent, and blocked-URL write results plus cache-only clearing that preserves Cookies and Web Storage

  • direct and deterministic bounded natural profiles for page_pointer_move, page_pointer_drag, and page_click_xy, with exact endpoints and failure-safe release

  • Optional bounded page_pointer_drag.waypoints for one held multi-segment canvas, map, box-selection, or visual-editor gesture

  • File upload, scrolling, hover, select/check, keyboard, iframe, shadow DOM, cookie, and storage tools for DrissionPage 4.x

  • Pure browser Cookie set/get/delete/clear flow, including bounded batch writes whose successful results retain metadata with redacted values

  • Ten-cycle controlled and validation input replacement through native DrissionPage input on the supported browser matrix

  • Cross-origin OOPIF reads through frame_* and closed Shadow DOM lookup through DrissionPage-backed shadow_*, with narrower pointer targeting documented separately

  • Frame boundary/document-access classification plus outer presentation, top-level viewport coordinate, scroll receipt, and coordinate-actionability evidence for production challenge workflows

  • Local challenge-surface and opt-in official Turnstile test-key benchmarks with parent-page postconditions, screenshots, and token-safe evidence

  • Backward-compatible string or structured selector/accessibility targets across element reads, actions, waits, uploads, and click-download correlation, resolving ordered frames first and then ordered Shadow DOM hosts

  • Bounded accessibility snapshots, non-handling native dialog observation, and live element state/geometry for autonomous locate-act-verify loops

  • Browser permission observation/set/reset, managed PDF/MHTML artifacts, automatic file chooser interception, and credential-redacted HTTP auth isolated by disposable Chromium context

  • Chrome sandbox remains enabled by default; DP_NO_SANDBOX=1 is reserved for restricted container/root environments

  • No retained action history, generated code snippets, or absolute screenshot paths in public results

  • Opt-in local safety policy for navigation and screenshot paths

  • One optional-Skills catalog resource with repository example metadata, zero prompts, plus Skills, eval, compatibility, and troubleshooting documentation

  • PyPI distribution

  • Official MCP Registry package metadata and tag-gated publishing workflow


📖 Integration Examples

Codex CLI / IDE

[mcp_servers.drissionpage]
command = "drissionpage-mcp"
startup_timeout_sec = 20
tool_timeout_sec = 60

Verify with:

codex mcp list

Claude Code

{
  "mcpServers": {
    "drissionpage": {
      "command": "drissionpage-mcp"
    }
  }
}

Config file: ~/.config/claude-code/mcp_settings.json (macOS/Linux) or %APPDATA%\claude-code\mcp_settings.json (Windows).

Cursor

{
  "mcpServers": {
    "drissionpage": {
      "command": "drissionpage-mcp"
    }
  }
}

Config file: ~/.cursor/mcp.json (global) or .cursor/mcp.json (project). You can also add it from Cursor Settings → Tools & MCPs → New MCP Server.

Claude Desktop

{
  "mcpServers": {
    "drissionpage": {
      "command": "drissionpage-mcp"
    }
  }
}

Once connected, the tools load automatically:


🤝 Contributing

Contributions are welcome!

  1. Fork the repository

  2. Create a feature branch

  3. Make focused changes

  4. Run the relevant checks

  5. Submit a pull request

See CONTRIBUTING.md for setup, validation, and compatibility expectations.


🔒 Security

  • Runs locally in your environment

  • Uses a local browser that may have access to authenticated sessions, cookies, downloads, and page content

  • Can open and interact with any site reachable from the local machine

  • Does not require external API credentials

Best Practices:

  • Use a dedicated browser profile for sensitive workflows

  • Review MCP client prompts before allowing actions on authenticated or production systems

  • Respect website terms of service, robots.txt, and rate limits

  • See SECURITY.md for reporting and safe-usage guidance


📄 License

Licensed under Apache License 2.0 - see LICENSE


📈 Statistics

Downloads PyPI Version


🌟 Show Your Support

If you find this project useful, please consider:

  • ⭐ Starring on GitHub

  • 📤 Sharing with your network

  • 💬 Leaving feedback or suggestions

  • 🐛 Reporting issues to help improve


Made with ❤️ by Wukunyun

Ready to automate your workflows? Install now: python -m pip install -U drissionpage-mcp


🆕 Latest Version: v0.8.7

Released on 2026-08-31. This release keeps the 69-tool registry while making multi-tab execution explicit and isolated:

  • Adds optional tab_id to every tab-scoped tool; omission captures the current tab once, and successful results return the resolved MCP id.

  • Replaces the global browser action lane with per-tab action locks, allowing independent tabs to progress concurrently while keeping same-tab actions serialized.

  • Makes tab_close and browser cleanup reject new work and drain in-flight tab actions before closing native browser state.

  • Extends page_navigate(new_tab=true) with explicit background, new_window, and disposable new_context creation semantics.

  • Keeps the public surface at 69 tools, zero prompts, and one Skills catalog resource. The external Skills catalog remains pinned to skills-manager v0.8.4.

Available Tools

69 tools
browser_cache_clearClear Browser CacheA
DestructiveIdempotent

Clear HTTP cache without clearing cookies or Web Storage.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true. The description adds useful context by specifying that cookies and Web Storage are preserved, which is a key behavioral trait. No contradictions 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.

Conciseness5/5

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

A single, concise sentence fully captures the tool's purpose and scope. No unnecessary words or repetition.

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

Completeness5/5

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

For a tool with no parameters and a clear action, the description is complete. It explains the operation and its boundary conditions, and with an output schema present, no additional return-value information is needed.

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

Parameters4/5

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

The tool has 0 parameters, and the schema coverage is 100%. The description adds no parameter details since none exist, matching the baseline for parameter-less tools.

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

Purpose5/5

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

The description clearly states the tool's function: 'Clear HTTP cache without clearing cookies or Web Storage.' It uses a specific verb and resource, and explicitly distinguishes itself from cookie and storage clearing tools.

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

Usage Guidelines4/5

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

The description implies when to use this tool by stating what it does not clear, which differentiates it from browser_cookies_clear and storage_clear. However, it lacks explicit when-to-use or alternative guidance beyond that scope limitation.

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

browser_cookies_clearClear Browser CookiesA
DestructiveIdempotent

Clear all cookies from the active browser context.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already disclose destructiveHint=true and readOnlyHint=false, so the description adds little beyond confirming the action. It does specify 'active browser context' as scope, but no additional behavioral traits like irreversibility or side effects are disclosed.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundancy. It contains exactly the necessary information for a simple parameterless destructive action.

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

Completeness4/5

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

The tool is simple with no parameters and an output schema indicating return-value documentation is not needed. The description fully conveys the action and scope. It could add a note on irreversibility, but annotations already flag destructive behavior.

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

Parameters4/5

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

The tool has zero parameters, and the base score for parameter-less tools is 4. The description adds no parameter details, but none are needed, and the schema confirms no parameters.

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

Purpose5/5

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

The description uses a specific verb ('Clear') and resource ('all cookies') with explicit scope ('active browser context'). It clearly distinguishes from sibling tool browser_cookies_delete by specifying 'all cookies' rather than a subset.

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

Usage Guidelines3/5

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

The phrase 'Clear all cookies' implies this is for a full cookie reset, but there is no explicit when-to-use/when-not-to-use guidance or mention of alternatives like browser_cookies_delete for targeted removal. The usage context is only lightly implied.

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

browser_cookies_deleteDelete Browser CookieA
DestructiveIdempotent

Delete one named browser cookie with optional URL/domain/path scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
nameYes
pathNo
domainNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false. The description adds the scoping context ('with optional URL/domain/path scope'), which clarifies the parameter space. It does not contradict annotations and provides enough behavioral clarity for a simple delete operation.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the action and then specifies optional parameters. Every word is necessary, and it is not padded with redundant information.

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

Completeness4/5

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

The tool is simple with only 4 parameters and an output schema. The description, combined with annotations (destructive, idempotent, openWorld), provides sufficient context for an agent to understand the operation. It could mention the risk of deleting cookies with the same name across scopes, but the openWorldHint annotation partially covers this, so the description remains adequate.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate for parameter meaning. It states that name identifies the cookie and url/domain/path are optional scope, but it does not explain how these scope parameters interact or what happens when omitted. This adds some value but is not comprehensive, so a baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Delete') and a clear resource ('one named browser cookie'), and distinguishes it from the sibling browser_cookies_clear by specifying 'one named' rather than all cookies. The optional scope parameters are also mentioned, making the tool's function unambiguous.

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

Usage Guidelines3/5

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

The description implies a use case for deleting a single cookie, but it does not explicitly state when to use it versus alternatives like browser_cookies_clear or how to choose between url/domain/path. There is no explicit exclusion or alternative guidance, so it earns a mid-range score.

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

browser_cookies_getGet Browser CookiesA
Read-onlyIdempotent

Read normalized cookies with values redacted by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
all_infoNo
all_domainsNo
include_valuesNoReturn cookie values. Defaults to false to avoid leaking secrets.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare readOnlyHint, idempotentHint, and destructiveHint, establishing safety. The description adds valuable behavioral context: cookies are normalized and values are redacted by default, which is critical for privacy. 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.

Conciseness5/5

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

The description is a single concise sentence that immediately conveys the core action and key nuance (redaction). There is no extraneous information, and it is front-loaded for quick comprehension.

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

Completeness4/5

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

The tool is simple with three boolean parameters, and the description covers the main behavioral nuance (redaction). An output schema exists to detail return values. While 'normalized' is not elaborated, the combination of annotations, schema, and description provides sufficient context for typical use.

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

Parameters2/5

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

Only the 'include_values' parameter has a schema description; the description mentions redaction, which relates to this parameter. However, 'all_info' and 'all_domains' have no explanation in either the schema or description, leaving their semantics unclear. With 33% schema coverage, the description does not adequately compensate for the gap.

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

Purpose5/5

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

The description clearly states the tool reads cookies, specifies they are normalized, and notes that values are redacted by default. The verb 'read' and resource 'cookies' are explicit, and there are no sibling tools with similar functionality, so purpose is unambiguous.

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

Usage Guidelines4/5

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

The description implies use for reading cookies without explicit when/when-not guidance. However, since no sibling tools compete for this function, the context is clear enough for an agent to select it appropriately.

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

browser_cookies_setSet Browser CookiesB
DestructiveIdempotent

Set a bounded batch of browser cookies. The successful result echoes cookie values by default for MCP callbacks and verification.

ParametersJSON Schema
NameRequiredDescriptionDefault
cookiesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior4/5

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

The description adds behavioral context beyond the annotations: it mentions that successful results echo cookie values for MCP callbacks and verification, and that the batch is bounded. This provides useful insight into return behavior and limitations without contradicting the annotations (readOnlyHint=false, 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.

Conciseness5/5

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

The description is extremely concise, consisting of two short sentences. The first sentence states the core action, and the second adds valuable information about the result. No wasted words.

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

Completeness2/5

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

Although the schema is rich with many cookie fields (name, value, same_site, priority, etc.), the description only covers the batch concept and echo result. It does not explain field semantics, required vs optional fields, or potential side effects. For an agent to invoke correctly, it would need to rely entirely on the schema, which does not provide human-friendly descriptions.

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

Parameters1/5

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

With schema description coverage at 0%, the description completely fails to explain the 'cookies' parameter or its sub-fields. The only hint is 'batch', which merely paraphrases the schema's array type. No additional meaning is provided for any parameter.

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

Purpose5/5

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

The description states 'Set a bounded batch of browser cookies' with a specific verb and resource, clearly distinguishing it from sibling tools like browser_cookies_get, browser_cookies_delete, and browser_cookies_clear. The action and scope are immediately understandable.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It simply states what it does, leaving the agent to infer usage from the name and context.

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

browser_headers_setSet Browser HeadersA
DestructiveIdempotent

Replace extra HTTP request headers for the current tab. Successful results echo header values for MCP callbacks; an empty object clears them.

ParametersJSON Schema
NameRequiredDescriptionDefault
headersYesExtra request headers. An empty object clears all configured values.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint, idempotentHint, and openWorldHint. The description adds valuable context about success behavior ('echo header values for MCP callbacks') and the clearing mechanism ('empty object clears them'), which goes beyond 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.

Conciseness5/5

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

The description is compact and front-loaded, with two sentences that state purpose, scope, and key behaviors. Every word earns its place; there is no extraneous information.

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

Completeness5/5

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

Given the single parameter with a rich schema, available output schema, and annotations indicating destructive/idempotent behavior, the description sufficiently covers the behavioral essentials. It explains how to clear headers and what to expect on success, making it complete for this complexity level.

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

Parameters3/5

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

The schema provides 100% coverage for the 'headers' parameter, including a description that matches the tool's mention of 'empty object clears'. The tool description adds no new parameter-specific meaning beyond what the schema already provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Replace'), the resource ('extra HTTP request headers'), and the scope ('for the current tab'). This distinguishes it from sibling tools like browser_user_agent_set or browser_cookies_set, which handle different request aspects.

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

Usage Guidelines3/5

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

The description implies usage for setting headers on the current tab, but it does not explicitly mention alternatives or exclusions. There is no when-not-to-use guidance relative to sibling tools, so context is clear but not thoroughly differentiated.

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

browser_permission_getGet Browser PermissionA
Read-onlyIdempotent

Query one browser permission state for the current document origin without opening an operating-system prompt.

ParametersJSON Schema
NameRequiredDescriptionDefault
permissionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, but the description adds behavioral nuance by clarifying that the query does not trigger a system prompt, and it scopes the operation to the current document origin. This goes beyond the annotations and provides useful context for the agent, though it could mention other traits like returned states or secure-context requirements.

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

Conciseness5/5

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

The description is a single, well-structured sentence that leads with the action verb and quickly covers the key details: resource, scope, and behavioral trait. There is no redundancy or filler.

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

Completeness5/5

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

For a single-parameter read-only tool, the description together with annotations (readOnly, idempotent) and the presence of an output schema fully covers the necessary context. It states what the tool does, its scope, and that it avoids prompting, which is sufficient for an agent to select and use it correctly.

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

Parameters3/5

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

The schema coverage is 0%, and the description only says 'one browser permission state' which maps to the single 'permission' parameter. The enum values in the schema already enumerate possible permissions, so the description adds minimal meaning. Since the parameter is straightforward and the tool is simple, a baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Query'), the resource ('browser permission state'), and the scope ('for the current document origin'). It also differentiates from sibling tools like browser_permission_set by noting that it operates 'without opening an operating-system prompt,' making its purpose distinct and unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool: to query the permission state for the current origin. The phrase 'without opening a prompt' implies it is for non-intrusive checks, complementing browser_permission_set. However, it does not explicitly name alternatives or exclusion conditions, so it stops short of a perfect score.

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

browser_permission_setSet Browser PermissionA
DestructiveIdempotent

Set one permission to granted, denied, or prompt for one bounded origin in the current Chromium context.

ParametersJSON Schema
NameRequiredDescriptionDefault
originNoExact HTTP(S) origin. Defaults to the current page origin.
settingYes
permissionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already cover the safety profile (readOnlyHint=false, destructiveHint=true, openWorldHint=true, idempotentHint=true). The description adds useful context about the tool's scoping ('one bounded origin' and 'current Chromium context'), but does not disclose any additional behavioral details such as side effects, persistence, or authorization requirements. The annotations and description are consistent with 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.

Conciseness5/5

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

The description is a single concise sentence that front-loads the core action and scope. It contains no filler or redundant information, making it highly efficient and easy to parse.

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

Completeness4/5

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

Given the tool's simple nature (3 parameters, 2 enums, and existing output schema), the description covers the essential aspects: what it does, the allowed setting values, and scope. It lacks explicit alternative guidance and side-effect disclosure, but the annotations and schema fill those gaps, making it sufficiently complete for an agent to select and invoke the tool.

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

Parameters3/5

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

The schema has low description coverage (33%) with only the 'origin' parameter described. The tool description helps by explicitly stating the allowed setting values ('granted, denied, or prompt') and clarifying the origin scope ('one bounded origin'), but it does not enumerate the permission options or add syntax/format details beyond what the schema enums provide. It partially compensates for the schema gaps but leaves some semantic burden on the agent.

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

Purpose5/5

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

The description clearly states the action: 'Set one permission to granted, denied, or prompt for one bounded origin in the current Chromium context.' This is a specific verb (Set) with a specific resource (permission) and scope (one bounded origin), distinguishing it from sibling tools like browser_permission_get and browser_permissions_reset which perform different operations.

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

Usage Guidelines3/5

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

The description implies usage by stating what the tool does, but it does not explicitly explain when to use it versus alternatives such as browser_permission_get or browser_permissions_reset. There is no mention of prerequisites, exclusions, or comparison to other tools, so the guidance is only implicit.

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

browser_permissions_resetReset Browser PermissionsA
DestructiveIdempotent

Reset all Chromium permission overrides in the current browser context.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already provide destructiveHint=true and idempotentHint=true. The description adds valuable context by specifying 'all' overrides and 'current browser context', clarifying the full scope of the destructive action beyond the annotation flags.

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

Conciseness5/5

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

The description is a single, focused sentence with no filler or repetition. It front-loads the verb and conveys all necessary information efficiently.

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

Completeness5/5

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

For a zero-parameter tool with clear annotations (destructive, idempotent) and an output schema, the description fully covers the tool's purpose and scope. No additional explanation of return values or side effects is needed.

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

Parameters4/5

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

The tool has zero parameters, so the description doesn't need to explain them. The empty input schema is fully self-descriptive, and the baseline for 0 parameters is 4.

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

Purpose5/5

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

The description clearly states the action ('reset'), the resource ('all Chromium permission overrides'), and the scope ('current browser context'). This distinguishes it from sibling tools like browser_permission_set or browser_permission_get, which target individual permissions.

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

Usage Guidelines3/5

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

The description implies usage (when you want to clear all permission overrides) but doesn't explicitly state when to use this over alternatives, nor does it mention any exclusions or prerequisites. It's adequate but lacks explicit guidance.

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

browser_user_agent_setSet Browser User AgentA
DestructiveIdempotent

Override the current tab user agent and optional platform, returning the previous user agent so callers can restore it.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformNo
user_agentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses the return value (previous user agent) and the restore pattern, which adds beyond the annotations. This is consistent with destructiveHint=true and readOnlyHint=false, and no contradiction exists.

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

Conciseness5/5

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

A single concise sentence that front-loads the action and includes both the behavior and return value. No wasted words or redundancy.

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

Completeness4/5

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

For a simple two-parameter tool, the description covers the action, scope (current tab), and return behavior. It is complete enough for the complexity, though it does not discuss edge cases or error conditions, which are not essential here.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It mentions 'user agent' and 'optional platform', clarifying platform's optionality but provides no format or usage details beyond the schema's basic type constraints. This is adequate but minimal.

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

Purpose5/5

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

The description uses a specific verb ('Override') and identifies the exact resource ('current tab user agent and optional platform'), distinguishing it clearly from sibling header/cookie/storage tools. It also mentions returning the previous user agent, which adds further specificity.

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

Usage Guidelines4/5

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

The description gives clear context by scoping to the current tab, making the use case obvious. However, it does not explicitly mention when not to use it or name alternative tools, so it stops short of full exclusion guidance.

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

element_checkCheck ElementA
Destructive

Set a checkbox or radio element to checked/unchecked.

ParametersJSON Schema
NameRequiredDescriptionDefault
by_jsNoUse JavaScript-backed checking.
checkedNoDesired checked state.
timeoutNo
selectorYesString locator or structured checkbox target.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds no additional behavioral context, such as whether toggling fires events, requires a loaded page, or has side effects. It neither contradicts the annotations nor enriches them with useful extra detail.

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

Conciseness5/5

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

The description is a single sentence, front-loaded with the action, and contains no filler. Every word earns its place, making it highly concise and well-structured.

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

Completeness4/5

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

For a simple state-setting tool, the description is adequate, especially with annotations and an output schema present. However, it does not mention prerequisites like needing a page loaded or whether the element must be visible, but given the simplicity, this is a minor gap. The description leaves room for implied assumptions about context.

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

Parameters3/5

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

Schema description coverage is 75% (moderate), and the description contributes no parameter semantics beyond what the schema already provides. The schema clearly describes 'by_js' and 'checked,' while 'selector' and 'timeout' are mostly self-explanatory. Baseline of 3 is appropriate since the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the tool's function: 'Set a checkbox or radio element to checked/unchecked.' This is a specific verb ('Set') + resource ('checkbox or radio element') + action ('checked/unchecked'), which distinguishes it from sibling tools like element_click (clicks) or element_select (selects options).

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

Usage Guidelines3/5

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

The description implies usage: use when you need to change the checked state of a checkbox or radio. However, it provides no explicit exclusions or alternatives, such as 'prefer this over element_click for checkboxes.' There is no guidance on when not to use it or how it compares to similar tools.

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

element_clickClick ElementA
Destructive

Click an element found by CSS selector or XPath. Bare selectors are treated as CSS; use text:... for text matching.

ParametersJSON Schema
NameRequiredDescriptionDefault
buttonNoNative pointer button to use.left
observeNoReturn a compact before/after page change summary.
timeoutNoTimeout in seconds to wait for element
selectorYesCSS selector or XPath to find the element. Bare selectors are CSS; use text:... for text matching or explicit tag:/css:/xpath:/@attr locators.
click_countNoNative click count; 2 requests double-click semantics.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate the tool is non-read-only and destructive (readOnlyHint=false, destructiveHint=true), so the agent knows it may mutate state. The description adds no further behavioral context, such as whether the click may trigger navigation, wait for page changes, or return an observe summary. It does not contradict the annotations, but it also does not enrich them.

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

Conciseness5/5

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

The description is two concise sentences, front-loaded with the core action and selector scope. Every word earns its place; no filler or redundant elaboration. Ideal length for a tool that is well-documented by its schema.

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

Completeness3/5

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

Given the complex schema and annotations, the description is passable but not comprehensive. It omits differentiation from closely related siblings like element_click_and_download or element_hover, and does not mention the observe option or accessibility/scope features. The schema fills many gaps, but the description alone would not fully prepare an agent for all usage scenarios.

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

Parameters3/5

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

Schema description coverage is 100%, with detailed descriptions for each parameter (button, observe, timeout, selector, click_count). The tool description adds minimal new information, mostly repeating the schema's selector guidance. It does not explain the union type for selector or the accessibility option, but the schema already covers these. Baseline 3 is appropriate because the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states a specific action ('Click an element') and identifies the resource by selector type ('CSS selector or XPath'). It distinguishes this from sibling tools like element_hover (hovering) and page_click_xy (clicking at coordinates) through the explicit click verb and selector scope.

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

Usage Guidelines3/5

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

The description provides some usage guidance on selector formats ('Bare selectors are treated as CSS; use text:... for text matching'), which helps invocation. However, it does not explicitly state when to prefer this tool over alternatives such as element_hover or element_click_and_download, nor does it mention any exclusions. Usage context is implied but not directly stated.

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

element_click_and_downloadClick And DownloadA
Destructive

Perform one selector, coordinate, or keyboard trigger, await one completed download, and return an integrity-checked safe artifact receipt.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoShared maximum seconds for target resolution, click, and download completion.
selectorYesSelector/accessibility target, viewport coordinate click, or keyboard input that starts one download.
operation_keyNoOptional live-task key. Reusing the same key replays the frozen artifact result without clicking again.
expected_filenameNoOptional exact basename constraint for the downloaded artifact.
expected_mime_typeNoOptional MIME constraint inferred from the completed filename.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already convey readOnlyHint=false, destructiveHint=true, openWorldHint=true, and idempotentHint=false. The description adds context about awaiting download completion and returning a receipt, but it does not clarify what makes the action destructive or what side effects occur (e.g., file saving location, overwrite behavior). This is acceptable but not rich.

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

Conciseness5/5

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

The description is a single sentence that efficiently conveys the core action and result. It is front-loaded with the verb 'Perform' and wastes no words, earning a top score.

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

Completeness3/5

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

The schema is rich and includes an output schema, so return values are covered. However, the description omits the 'accessibility' trigger type (AccessibilityTargetInput) from its list of 'selector, coordinate, or keyboard trigger,' and does not mention optional constraints like expected_filename or operation_key. This is a noticeable gap for a tool with multiple input variants.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters like timeout, selector, operation_key, expected_filename, and expected_mime_type are already well-documented. The tool description adds no parameter-specific meaning, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action: perform a trigger (selector, coordinate, or keyboard), await a download, and return an integrity-checked receipt. This distinguishes it from siblings like element_click (just clicks) and element_click_and_upload (handles uploads), 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.

Usage Guidelines3/5

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

The description implies this tool is for triggering and completing a download, but it does not explicitly state when to use it versus alternatives, nor does it provide exclusions or prerequisites. The unique behavior is implied by 'await one completed download' but no direct guidance is given.

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

element_click_and_uploadClick And UploadA
Destructive

Arm Chromium's file chooser, click one trigger, inject approved files, and always remove interception without opening a native operating-system picker.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYes
timeoutNo
selectorYesSelector/accessibility target that opens a file chooser.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

The description adds behavioral context beyond the annotations (destructiveHint=true): it specifically mentions arming Chromium's file chooser, injecting approved files, always removing interception, and avoiding a native OS picker. This gives the agent a clear picture of side effects and behavior.

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

Conciseness5/5

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

A single dense sentence conveys the complete action sequence with no filler. The action verb 'Arm' is front-loaded, making the purpose immediately clear.

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

Completeness3/5

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

With an output schema and annotations available, the description covers the core workflow but omits usage context, edge cases, and parameter details. It is adequate for a basic understanding but not fully complete for an agent to execute reliably without further schema inspection.

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

Parameters2/5

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

Schema description coverage is only 33% (only 'selector' has a description). The tool description mentions 'approved files' hinting at 'paths' but provides no detail on path format, timeout semantics, or how the selector target types work. It does not compensate for the low schema coverage.

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

Purpose5/5

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

The description clearly states the tool's function: it arms the file chooser, clicks a trigger, injects approved files, and removes interception. This specific verb-resource pairing distinguishes it from sibling tools like element_click (just clicks) and element_upload_file (likely uploads without clicking).

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives such as element_upload_file or element_click_and_download. The description only describes mechanics, not the appropriate context or exclusions.

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

element_findFind ElementA
Read-onlyIdempotent

Find an element on the page using CSS selector or XPath. Bare selectors are treated as CSS; use text:... for text matching.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoTimeout in seconds to wait for element
selectorYesCSS selector or XPath to find the element. Bare selectors are CSS; use text:... for text matching or explicit tag:/css:/xpath:/@attr locators.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds selector interpretation behavior (bare selectors are CSS, text: prefix) but doesn't mention return behavior, timeout defaults, or scoping with frames/shadow roots. With annotations covering the safety profile, this is acceptable but minimal.

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

Conciseness5/5

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

Two concise sentences that front-load the core purpose and immediately give a useful syntax rule. No wasted words.

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

Completeness3/5

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

The schema is rich with frames, shadow hosts, and an accessibility target mode, but the description only mentions CSS/XPath and text matching. It omits the accessibility role/name target kind and frame/shadow scoping hints, relying heavily on the schema to communicate the full capability set.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the selector and timeout parameters. The tool description repeats the selector syntax already present in the schema (bare=CSS, text:...), adding no additional parameter meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the tool finds an element on the page using CSS selectors or XPath, which is a specific verb+resource. The singular 'an element' distinguishes it from element_find_all, and the syntax rule for bare selectors vs text: adds precision.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like element_find_all. The only usage guidance is about selector syntax, not about choosing the right tool for a scenario.

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

element_find_allFind All ElementsA
Read-onlyIdempotent

Find multiple matching elements with bounded text/attribute summaries and recommended selectors for repeated lists, cards, and tables.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of matched elements to return
selectorYesCSS selector, XPath, or explicit DrissionPage locator for repeated elements. Bare selectors are CSS.
include_htmlNoInclude bounded outerHTML excerpts for each returned element

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which cover the safety profile. The description adds non-redundant behavioral details: outputs are 'bounded text/attribute summaries' and it returns 'recommended selectors', disclosing truncation behavior and an extra output feature. This adds meaningful context beyond the annotations.

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

Conciseness5/5

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

The description is a single, well-structured sentence that leads with the core action. Every phrase earns its place: 'multiple matching elements', 'bounded text/attribute summaries', 'recommended selectors', and the use-case list. No redundancy or filler.

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

Completeness5/5

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

Given the rich schema (3 params, 100% coverage), the presence of an output schema, and thorough annotations, the description is complete enough for an agent to correctly select and invoke the tool. It clearly communicates the tool's purpose and distinctive output characteristics, leaving only a minor gap in explicitly contrasting with element_find, which is already implied by 'multiple'.

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

Parameters3/5

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

The input schema has 100% parameter description coverage, documenting selector, limit, and include_html. The description's mention of 'bounded text/attribute summaries' loosely relates to include_html but does not add direct parameter semantics. This is the baseline 3, as the schema carries the parameter documentation burden.

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

Purpose5/5

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

The description opens with 'Find multiple matching elements', a specific verb + plural resource, and distinguishes itself from sibling element_find by targeting 'repeated lists, cards, and tables'. It also previews the bounded summaries and recommended selectors, making the tool's purpose and scope immediately clear.

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

Usage Guidelines4/5

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

The phrase 'for repeated lists, cards, and tables' provides clear context on when this tool is appropriate, which is a helpful usage guideline. However, it does not explicitly mention alternatives like element_find for single elements or state any exclusions, so it does not reach the full 5.

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

element_get_attributeGet AttributeA
Read-onlyIdempotent

Get an attribute value from an element

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorYesCSS selector or XPath to find the element. Bare selectors are CSS; use text:... for text matching or explicit tag:/css:/xpath:/@attr locators.
attributeYesAttribute name to retrieve

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds no extra behavioral context, such as what happens when the attribute is missing or whether it returns the first matching element. With annotations covering the safety profile, this is acceptable but not enhanced.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word contributes to the core purpose, making it exceptionally concise and well-structured.

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

Completeness4/5

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

Given the tool's simplicity, the presence of rich annotations, an output schema, and a fully described input schema, the description is sufficient. It lacks minor nuances like behavior on missing attributes, but these are not essential for a straightforward read operation.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description itself adds no parameter information beyond what the schema already provides for 'selector' and 'attribute'. The schema fully documents both parameters, so no compensation is needed.

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

Purpose5/5

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

The description clearly states 'Get an attribute value from an element', which is a specific verb+resource pair. It is distinct from sibling tools like element_get_text, element_get_property, and element_get_html, which retrieve different data from an element.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or comparisons to sibling tools like element_get_text, leaving usage entirely to inference.

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

element_get_htmlGet HTMLA
Read-onlyIdempotent

Get HTML from an element or the whole page

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorNoCSS selector or XPath; empty means whole page. Bare selectors are CSS; use text:... for text matching.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false; the description remains consistent but adds no extra behavioral detail such as serialization or error handling.

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

Conciseness5/5

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

One short, front-loaded sentence with no filler or redundant information.

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

Completeness5/5

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

Given the rich schema, output schema, and safe annotations, the brief description is sufficient for an agent to understand the tool's scope and invoke it correctly.

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

Parameters3/5

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

The input schema is fully described (100% coverage), including selector semantics and target construction, so the description adds minimal parameter information beyond the schema.

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

Purpose5/5

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

Description clearly states the action ('Get HTML') and the resource scope ('from an element or the whole page'), distinguishing it from sibling text/attribute retrieval tools.

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

Usage Guidelines3/5

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

The scope ('element or whole page') gives some usage context, but there is no explicit guidance on when to prefer this over element_get_text, page_snapshot, or other alternatives.

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

element_get_propertyGet PropertyA
Read-onlyIdempotent

Get a live DOM property value from an element, such as an input's current value

ParametersJSON Schema
NameRequiredDescriptionDefault
propertyYesDOM property to retrieve, e.g. value
selectorYesCSS selector or XPath to find the element. Bare selectors are CSS; use text:... for text matching or explicit tag:/css:/xpath:/@attr locators.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the context of 'live' (reading current state) and an example, but does not provide deeper behavioral details such as error handling, timing, or interaction with shadow DOM/frames beyond what annotations imply.

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

Conciseness5/5

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

The description is a single, focused sentence that directly states the tool's purpose. It is front-loaded with the action and resource, contains no extraneous words, and every word earns its place.

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

Completeness4/5

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

The tool is a simple getter with rich annotations and a fully described parameter schema. The output schema exists, so return values need not be described. The description is sufficient for basic use, but slight gaps remain regarding when to prefer this over similar siblings.

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

Parameters3/5

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

The input schema provides 100% coverage with descriptions for both parameters: 'property' and 'selector' (including selector syntax details). The description does not add additional parameter semantics beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

The description clearly states a specific verb ('Get') and resource ('live DOM property value from an element'), with a concrete example ('such as an input's current value'). It distinguishes itself from sibling tools like element_get_attribute by using 'property' rather than 'attribute', and from element_get_text/element_get_html by specifying 'DOM property value'.

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

Usage Guidelines3/5

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

The description implies usage for reading live properties, but it does not explicitly state when to use this tool versus alternatives like element_get_attribute or element_get_text. There is no mention of exclusions or alternative tool names, so guidance is only implied, not explicit.

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

element_get_textGet TextA
Read-onlyIdempotent

Get text from an element or the whole page

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorNoCSS selector or XPath; empty means whole page. Bare selectors are CSS; use text:... for text matching.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the 'whole page' scope, which is useful behavioral context. However, it does not disclose nuances like whether text is innerText or textContent, or waiting behavior. With annotations covering safety, a score of 3 is appropriate.

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

Conciseness5/5

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

The entire description is a single sentence, front-loaded with the action, and contains no filler. It is appropriately concise for a simple read operation.

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

Completeness4/5

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

Given the rich input schema, output schema availability, and safety annotations, the description is sufficient. It clearly states the tool's purpose and scope. However, it does not mention the ability to target shadow DOM/frames or accessibility targets, which are documented in the schema but not in the description. This minor gap prevents a 5.

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

Parameters3/5

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

Schema description coverage is 100%, with the selector parameter fully documented (CSS/XPath, empty means whole page, text: prefix). The description adds no parameter-level information beyond what the schema already provides, so the baseline score of 3 applies.

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

Purpose5/5

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

The description uses the specific verb 'Get' with the resource 'text' and scope 'element or whole page', clearly distinguishing it from sibling getters like element_get_attribute, element_get_property, and element_get_html. The scope is explicit, 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.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like element_get_html or element_get_attribute. It simply states the function without mentioning exclusions, prerequisites, or alternative tools, leaving the agent to infer usage from the resource type.

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

element_hoverHover ElementB
Destructive

Move the mouse over an element.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo
offset_xNoOptional hover X offset.
offset_yNoOptional hover Y offset.
selectorYesString locator or structured element target.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, but the description adds no additional behavioral context such as triggering mouseover events, waiting for element visibility, or potential side effects of hovering. It merely restates the action without going beyond the annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler words. It is as concise as possible while conveying the core action.

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

Completeness3/5

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

For a simple hover action, the description plus schema and annotations may be minimally sufficient, but it lacks guidance on when to use this tool relative to sibling tools and does not mention the structured target options or offset capabilities. It is adequate but not comprehensive.

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

Parameters3/5

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

Schema description coverage is 75%, with selector and offset parameters having descriptions in the schema. The tool description itself adds no parameter semantics beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description 'Move the mouse over an element' clearly identifies a specific action (hover) and a target (an element). It is more specific than a tautology and matches the tool name, but it does not explicitly distinguish itself from related siblings like page_pointer_move or element_click.

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

Usage Guidelines2/5

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

No usage context is provided. The description does not explain when to prefer hover over click, mention typical use cases like tooltips or dropdown menus, or exclude coordinate-based alternatives such as page_pointer_move.

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

element_scroll_into_viewScroll Element Into ViewA
Destructive

Scroll an element into the viewport before a later action.

ParametersJSON Schema
NameRequiredDescriptionDefault
centerNoCenter the element in the viewport.
timeoutNo
selectorYesString locator or structured element target.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate the tool is destructive (destructiveHint: true) and not idempotent, so the description's addition of 'before a later action' is useful context but not rich behavioral detail. It does not contradict annotations, and no additional side effects or failure modes are mentioned.

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

Conciseness5/5

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

The description is a single, concise sentence that directly conveys the tool's purpose without redundancy. Every word earns its place, and it is front-loaded with the key verb 'Scroll'.

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

Completeness4/5

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

Given the tool's simplicity, the existence of an output schema, and detailed input schema, the description is sufficient for basic understanding. It could include more on edge cases or failure behavior, but for a simple scroll action, the current description plus schema covers the essentials.

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

Parameters3/5

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

The input schema describes the 'center' and 'selector' parameters, and schema coverage is 67% (2 of 3 parameters). The tool description adds no parameter-specific guidance, but the schema carries most of the load, leaving only 'timeout' underdocumented. This is adequate but not enhanced by the description.

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

Purpose5/5

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

The description clearly states the tool's function: 'Scroll an element into the viewport before a later action.' This uses a specific verb ('scroll'), resource ('element'), and scope ('into the viewport'), making it distinct from sibling tools like page_scroll or element_click.

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

Usage Guidelines4/5

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

The phrase 'before a later action' provides clear context for when to use this tool: as a preparatory step before interacting with an element. It does not explicitly mention alternatives or exclusions, but the intended use case is evident.

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

element_selectSelect Element OptionA
Destructive

Select an option from a select element by value, text, or index.

ParametersJSON Schema
NameRequiredDescriptionDefault
byNoSelect by value, text, or index.value
valueYesOption value, text, or index string.
timeoutNo
selectorYesString locator or structured select target.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=true, so the mutation risk is known. The description adds the selection mechanism (by value/text/index) but does not disclose additional behavioral details such as timeout handling or side effects like triggering change events. This meets the baseline but adds limited 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.

Conciseness5/5

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

The description is a single concise sentence of 13 words, immediately front-loading the core purpose and method. Every word earns its place, with no redundancy or filler.

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

Completeness3/5

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

The tool is simple and the output schema exists, so return values need not be explained. However, the description leaves ambiguities such as whether indices are 0-based or 1-based, and whether multi-select elements are supported. These details are also not in the schema, making the description marginally adequate for complete context.

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

Parameters3/5

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

Schema coverage is 75%, with descriptions for 'by', 'value', and 'selector'. The description's phrasing 'by value, text, or index' is nearly identical to the schema's 'by' description, adding no new meaning. The 'timeout' parameter lacks a description and the tool description does not clarify its behavior, so the description does not compensate for that gap.

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

Purpose5/5

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

The description uses a specific verb ('Select'), a clear resource ('option from a select element'), and specifies the method ('by value, text, or index'). It clearly distinguishes this tool from siblings like element_click or element_type, which serve different interaction purposes.

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

Usage Guidelines4/5

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

The description clearly states the intended context: selecting an option within a select element. It does not explicitly mention alternatives or exclusions, but the specificity of 'select element' provides unambiguous guidance for when to use this tool over other element interaction tools.

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

element_state_getGet Element StateA
Read-onlyIdempotent

Return DrissionPage element state and page/viewport geometry for a selector or accessibility target.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo
selectorYesString locator or structured selector/accessibility target with frame and shadow scope.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which cover the safety profile. The description adds 'page/viewport geometry' as a specific scope, but it does not disclose behavioral details such as whether the tool waits for the element (though a timeout parameter exists), what happens if the element is not found, or what exactly constitutes 'state'. This is consistent with annotations but adds only moderate context beyond them.

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

Conciseness5/5

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

The description is a single, concise sentence that is front-loaded with the action 'Return' and immediately states the resource. There is no unnecessary wording or repetition, earning a top score.

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

Completeness3/5

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

There is an output schema, so return values need not be described. However, the description is vague about what 'state' includes (e.g., visibility, enabled, bounding rect) and does not contextualize when this tool is preferable over other element_get_* siblings. Given the complex selector schema and the large sibling list, the description feels incomplete for an agent to confidently select this tool without additional inference.

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

Parameters3/5

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

The description mentions 'a selector or accessibility target,' which maps to the selector parameter's two variants, but it does not explain the structured sub-fields like shadow_hosts or frame_selectors. The schema already provides detailed descriptions for these. The timeout parameter is not mentioned in the description at all. Since schema coverage is 50% (only selector and timeout on the top level), the description adds some clarity but does not fully compensate for the undocumented timeout behavior.

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

Purpose5/5

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

The description clearly states the tool 'Return DrissionPage element state and page/viewport geometry for a selector or accessibility target.' This specifies a concrete verb and resource, and the mention of state and geometry distinguishes it from sibling getters like element_get_text, element_get_attribute, and element_get_property.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention scenarios like checking visibility, dimensions, or viewport position, nor does it exclude cases handled by other element getters. There is no explicit comparison or reference to sibling tools.

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

element_typeType TextC
Destructive

Type text into an input element

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to type into the element
clearNoClear existing input content before typing
observeNoReturn a compact before/after page change summary.
timeoutNoTimeout in seconds to wait for element
selectorYesCSS selector or XPath to find the input element. Bare selectors are CSS; use text:... for text matching or explicit tag:/css:/xpath:/@attr locators.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already mark the tool as destructive and non-read-only, but the description adds no behavioral detail beyond the basic action. It does not mention that existing input content is cleared by default (via the 'clear' parameter) or disclose any other side effects, so it adds no transparency beyond what annotations already provide.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no filler or redundancy. It is efficient, though it is terse to the point of under-specification.

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

Completeness3/5

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

The rich input schema, annotations, and presence of an output schema carry most of the contextual load, so the core action is adequately specified. However, the description does not synthesize key behaviors (like default clearing or observe mode) or provide high-level guidance on complex targeting, leaving the definition functional but thin.

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

Parameters3/5

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

Schema description coverage is 100%—every parameter (text, clear, observe, timeout, selector) is documented in the input schema, including the complex selector union and its variants. The description itself contributes nothing about parameters, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description uses a specific verb ('Type') and a clear resource ('input element'), making the core action obvious. However, it does not explicitly distinguish this tool from closely related siblings like keyboard_press or element_select, so it is clear but not maximally differentiating.

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

Usage Guidelines2/5

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

The description provides no when-to-use guidance, prerequisites, exclusions, or references to alternative tools. It only states the action itself, leaving the agent to infer when this tool should be selected over siblings such as keyboard_press, element_click, or element_select.

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

element_upload_fileUpload FileA
Destructive

Set files on an input[type=file]. Paths must exist under DP_MCP_UPLOAD_ROOT and response data only returns safe file names.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYesOne or more local file paths under DP_MCP_UPLOAD_ROOT. Absolute paths are accepted but never echoed back in tool results.
timeoutNoTimeout in seconds to wait for the file input.
selectorYesCSS/XPath/DrissionPage locator for an input[type=file].

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Beyond annotations (destructive, non-read-only), the description adds security constraints (paths under a root) and a response behavior (only safe file names returned). This is meaningful context beyond what annotations alone reveal. 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.

Conciseness5/5

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

Two concise sentences with front-loaded action and no fluff. Each sentence earns its place: the first states the operation, the second adds essential constraints.

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

Completeness4/5

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

Given the input schema (which documents all parameters), annotations (destructive), and presence of an output schema, the description is sufficient. It includes the key security constraint and response behavior. A minor gap is not clarifying when to prefer this over element_click_and_upload, but for a file-input tool this is acceptable.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already describes the paths parameter as under DP_MCP_UPLOAD_ROOT with absolute paths not echoed. The description's mention of that constraint is redundant. Other parameters (timeout, selector) are fully covered by the schema, so the description adds minimal parameter value.

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

Purpose5/5

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

The description uses a specific verb ('Set') and a resource type ('input[type=file]'), making the tool's purpose immediately clear. It strongly differentiates from siblings like element_type (text input) and element_click_and_upload (click-triggered upload).

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

Usage Guidelines3/5

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

The description implies usage context by stating files must be under DP_MCP_UPLOAD_ROOT, but it does not explicitly say when to use this tool versus alternatives such as element_click_and_upload. No exclusions or alternative tool names are given, so guidance is implied rather than explicit.

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

frame_findFind Element In FrameA
Read-onlyIdempotent

Find an element inside a selected iframe/frame without global frame state.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo
selectorYesSelector inside the target frame.
frame_indexNo
frame_selectorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the mutation safety profile. The description adds a useful behavioral trait: 'without global frame state', indicating the tool does not persist or alter frame selection state across calls. However, it does not describe behavior when no element is found or timeout handling; the output schema may cover return values, but the description itself adds limited behavioral context.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the main action and resource: 'Find an element inside a selected iframe/frame without global frame state.' It contains no filler words, is immediately scannable, and every word contributes meaning.

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

Completeness2/5

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

While annotations and output schema cover safety and return values, the description is too terse to fully specify correct usage. The critical gap is how to select the frame (frame_index vs frame_selector, precedence, nesting context). The description does not mention the need to provide a frame selector or index, nor the relationship to sibling tools like frame_list. For a tool with 4 parameters and low schema coverage, this is insufficient for reliable invocation.

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

Parameters2/5

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

Schema description coverage is very low (25%), with only 'selector' having a description in the schema. The tool description does not explain how frame_index and frame_selector work, whether they are alternatives or should both be provided, or which takes precedence. The phrase 'selected iframe/frame' hints at frame selection but gives no parameter-level detail, leaving the agent to guess from names and titles.

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

Purpose5/5

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

The description clearly states the tool finds an element inside a selected iframe/frame, with a specific verb ('find') and resource ('element in frame'). The phrase 'without global frame state' distinguishes it from sibling tools that might manipulate global frame context, such as frame_snapshot or element_find in a global context. The title and name align perfectly.

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

Usage Guidelines3/5

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

The description implies usage when you need to find an element within a frame without altering the global frame context. However, it does not explicitly mention when to use it versus alternatives like element_find (for current context) or frame_snapshot (for listing frames). No exclusions or alternative tool names are provided, so usage guidance is only implied rather than explicit.

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

frame_listList FramesA
Read-onlyIdempotent

List iframe/frame contexts on the current page without changing global state.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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 'without changing global state', which reinforces these traits but does not provide new behavioral details beyond what annotations convey. For example, it does not mention concurrency behavior or pagination, so minimal 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.

Conciseness5/5

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

The description is a single, brief sentence that immediately conveys the tool's action and side-effect. Every word serves a purpose, and there is no extraneous information. The structure is front-loaded for quick agent parsing.

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

Completeness4/5

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

For a simple list tool with one parameter and an output schema (not shown but exists), the description covers the essential behavior. However, it omits details about the return format or which frame attributes are included, though the output schema likely documents these. Slightly more context on the data returned would improve completeness.

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

Parameters2/5

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

Schema description coverage is 0%, meaning the limit parameter has no description in the schema. The tool description does not compensate by explaining the parameter's meaning or effect on output. The limit is intuitive but still leaves ambiguity about default behavior and impact on results.

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

Purpose5/5

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

The description clearly states that the tool 'list iframe/frame contexts on the current page', specifying a precise verb and resource. It also adds scope ('without changing global state'), distinguishing it from sibling tools like frame_find or frame_snapshot. This provides clear purpose and differentiation.

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

Usage Guidelines3/5

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

The description implies usage for listing frames and notes it does not change state, but it does not explicitly guide when to use this tool versus alternatives like frame_find or frame_snapshot. There are no stated exclusions or when-not-to-use scenarios, leaving the agent to infer context from sibling names.

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

frame_snapshotFrame SnapshotA
Read-onlyIdempotent

Return a bounded page outline from a selected iframe/frame.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo
frame_indexNoZero-based frame index.
include_htmlNo
max_elementsNo
frame_selectorNoOptional iframe/frame selector. When empty, frame_index is used.
max_text_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds the 'bounded' qualifier, indicating output limits (e.g., max_elements, max_text_chars), which is not present in annotations. It also implies frame selection is required, adding context beyond structured fields.

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

Conciseness5/5

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

The description is a single sentence with no filler, front-loaded with the action ('Return') and scope. Every word contributes meaning.

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

Completeness4/5

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

Given the presence of an output schema and comprehensive annotations, the description adequately covers the core behavior. It could further clarify what 'page outline' means or how to select a frame, but the schema handles those details. It is complete enough for a tool with this complexity.

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

Parameters2/5

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

Schema description coverage is only 33%, and the description does not compensate by explaining parameters like timeout, include_html, max_elements, or max_text_chars. The term 'bounded' hints at limits but does not clarify individual parameter semantics. Parameters are largely self-explanatory from names/defaults, but the description adds minimal value.

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

Purpose5/5

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

The description clearly states the tool returns a 'bounded page outline' from a selected iframe/frame, using a specific verb ('Return') and resource. It distinguishes itself from siblings like page_snapshot (whole page) and frame_list/frame_find (frame enumeration) by focusing on frames and boundedness.

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

Usage Guidelines4/5

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

The description provides clear context: use when you need a snapshot of a specific iframe/frame, not the entire page. However, it does not explicitly mention alternatives or exclusions, so agents must infer from the name and siblings.

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

keyboard_pressKeyboard PressB
Destructive

Send keyboard text/keys to the active page element without echoing the input in the result.

ParametersJSON Schema
NameRequiredDescriptionDefault
keysYesText or DrissionPage key string to send.
intervalNoOptional interval between key events in seconds.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a mutating action. The description adds that input is not echoed in the result, which is useful behavioral context. However, it doesn't describe other side effects like potentially overwriting existing content or how special key sequences behave. With annotations covering the safety profile, this is adequate but not rich.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded and free of fluff. Every word adds value: it states the action, target, and a key behavioral detail. Excellent conciseness.

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

Completeness4/5

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

For a simple two-parameter tool with annotations and output schema present, the description covers the essential purpose, target, and a return behavior. However, it lacks usage guidelines (when to use vs alternatives), which is a minor gap. Overall, it's fairly complete but not perfect.

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

Parameters3/5

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

Schema description coverage is 100% with both 'keys' and 'interval' already described. The description adds no additional parameter-level meaning beyond what the schema provides. Baseline 3 is appropriate since the schema handles parameter semantics.

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

Purpose4/5

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

The description clearly states 'Send keyboard text/keys to the active page element', specifying the verb and resource. The phrase 'active page element' differentiates it from tools like element_type which target specific elements, but it doesn't explicitly name alternatives. It also mentions the return behavior, adding clarity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention that it targets the currently focused element, nor does it contrast with element_type or other typing tools. The usage context is implied but not explicitly explained.

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

network_blocked_urls_setSet Blocked URLsA
DestructiveIdempotent

Replace URL patterns blocked for the current tab. Successful results echo patterns; an empty list clears them.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesURL patterns with optional wildcards. An empty list clears them.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond the annotations: it is a replace operation, successful results echo the input patterns, and an empty list clears the blocked URLs. These details help the agent understand the operational semantics, while annotations already signal destructiveness and idempotency.

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

Conciseness5/5

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

The description is a single front-loaded sentence that states the action, scope, and key behavioral details without any wasted words. It is concise and well-structured.

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

Completeness5/5

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

Given the tool's simplicity (one parameter), detailed schema descriptions, and the presence of an output schema, the description covers all essential aspects: purpose, scope, clearing behavior, and result echo. There is no apparent gap that would cause an agent to misuse the tool.

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

Parameters3/5

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

The input schema already fully describes the single 'urls' parameter, including wildcards and empty-list clearing. The description does not add new parameter-level information; it only reinforces the empty-list behavior, which is already present in the schema. With 100% schema coverage, the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Replace') and the specific resource ('URL patterns blocked for the current tab'). This distinguishes it from sibling tools like network_listen_start/stop or browser_cookies_set, which have different purposes. The scope is precise and unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context: it operates on the current tab and indicates the empty-list clearing behavior. However, it does not explicitly mention alternatives or exclusions, though these are implied by the replace action and the tool's specific purpose.

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

network_listen_startStart Network ListenerA
Destructive

Start beta HTTP/XHR/Fetch network observation for the active tab. This observes packets only; it does not intercept or modify requests.

ParametersJSON Schema
NameRequiredDescriptionDefault
clearNoClear any existing listener queue before starting.
methodNoOptional HTTP method filter such as GET or POST.
targetsNoOptional URL substrings or regex patterns passed to DrissionPage.
is_regexNoTreat targets as regular expressions when targets are provided.
resource_typeNoOptional resource type filter such as Fetch, XHR, or Document.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations provide readOnlyHint=false and destructiveHint=true. The description adds beta status and clarifies observation-only behavior (no interception or modification). It lacks details on side effects or how starting a listener affects existing queue, but does not contradict annotations.

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

Conciseness5/5

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

Two concise sentences front-load the core purpose and behavior. No redundant or extraneous information.

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

Completeness4/5

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

Parameters are fully described, output schema exists, and the fundamental action is clear. Minor gaps: no mention of prerequisites or typical workflow (e.g., use with network_listen_wait), but overall sufficient for a low-complexity tool.

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

Parameters3/5

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

Schema coverage is 100% with descriptive parameter definitions. The description adds no extra meaning beyond the schema, meeting the baseline for high-coverage schemas.

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

Purpose5/5

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

The description clearly states the verb 'start', the resource 'HTTP/XHR/Fetch network observation', and scope 'for the active tab'. It also distinguishes itself by noting it only observes packets and does not intercept or modify requests.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives such as network_listen_wait or network_listen_stop. The description implies use for monitoring network packets but fails to state prerequisites or exclusions.

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

network_listen_stopStop Network ListenerB
Destructive

Stop beta network observation for the active tab and optionally clear it.

ParametersJSON Schema
NameRequiredDescriptionDefault
clearNoClear the listener queue while stopping.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true, so the description adds limited behavioral context. The term 'beta' hints at experimental nature, and 'optionally clear it' clarifies the clear parameter's effect, but no additional details about side effects or state changes.

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

Conciseness5/5

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

One sentence, no unnecessary words. Front-loaded with the action and resource.

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

Completeness3/5

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

For a simple stop action with one optional parameter, the description is mostly adequate. However, it could mention that the listener must have been started via network_listen_start, or what happens if called when no listener is active.

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

Parameters3/5

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

The single 'clear' parameter is fully described in the schema (100% coverage). The description says 'optionally clear it', which adds minimal value beyond the schema's description.

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

Purpose4/5

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

The description clearly states the action ('Stop') and the resource ('beta network observation for the active tab'). It distinguishes from sibling tools like network_listen_start and network_listen_wait by implying it stops an ongoing observation.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., waiting for a network event). It does not mention prerequisites (e.g., must have started a listener first) or when not to use it.

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

network_listen_waitWait Network ListenerA
Read-only

Wait for observed HTTP/XHR/Fetch packets and return bounded metadata. Bodies and headers are opt-in and sensitive headers are redacted.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum packets to return.
timeoutNoMaximum seconds to wait for packets.
include_bodyNoInclude bounded request/response body excerpts.
max_body_charsNoMaximum characters for each body excerpt when include_body is true.
include_headersNoInclude request/response headers with sensitive names redacted.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true and openWorldHint=true. The description adds beyond annotations by noting that bodies and headers are opt-in and sensitive headers are redacted, 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.

Conciseness5/5

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

Two sentences, no wasted words. Front-loaded with the core action and key constraints.

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

Completeness4/5

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

Given the output schema exists and all parameters are described, the description adequately explains what the tool returns and its options. No significant gaps.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. The description adds context about opt-in bodies and header redaction, adding meaning beyond the schema. Score 4 for added value.

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

Purpose5/5

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

The description clearly states the tool waits for HTTP/XHR/Fetch packets and returns bounded metadata, with specifics about opt-in bodies/headers and redaction. It distinguishes from sibling tools like network_listen_start and network_listen_stop.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives. It implies usage after starting a listener but provides no when-to-use or 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.

page_accessibility_snapshotAccessibility SnapshotB
Read-onlyIdempotent

Return a bounded Chromium accessibility tree for the page or a scoped selector/frame/shadow target.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoOptional selector/accessibility element whose AX subtree is returned.
max_nodesNo
include_valuesNoReturn accessibility field values. Defaults to false to avoid leaking secrets.
include_ignoredNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint/idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds 'bounded' and the scoping options, but it does not disclose output shape, ignored-node behavior, or the include_values secret-leak protection that appears only in the schema.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler. It efficiently communicates the core action and target scope without redundancy.

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

Completeness3/5

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

The input schema, output schema, and annotations cover a lot of the operational detail, and the description conveys the key abstraction and boundedness. However, it lacks contextual usage guidance and leaves important behavioral details like node limits and value-inclusion defaults to the schema.

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

Parameters2/5

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

The description alludes to scoped selector/frame/shadow targets but does not explain max_nodes, include_values, or include_ignored. With only 50% schema description coverage, the description does not compensate for parameter meanings left unexplained.

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

Purpose5/5

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

The description clearly states the tool returns 'a bounded Chromium accessibility tree' and names the scope variants (page, selector, frame, shadow). This directly distinguishes it from sibling page_snapshot and frame_snapshot tools.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool instead of alternatives like page_snapshot or frame_snapshot, nor any exclusions or prerequisites. The description implies its use case only through the resource name.

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

page_click_xyClick CoordinatesA
Destructive

Move the viewport pointer to exact CSS pixel coordinates using a direct or bounded natural trajectory, optionally wait for an explicit delay, then press and release one mouse button.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesViewport X coordinate in CSS pixels
yYesViewport Y coordinate in CSS pixels
buttonNoMouse button to press and releaseleft
elementNoHuman-readable element or interaction description
profileNoMovement profile: direct emits one exact move; natural emits a deterministic 24-step eased cubic Bezier path with bounded 8-14ms intervals and an exact endpointdirect
delay_before_press_msNoOptional delay after pointer arrival and before mousePressed. This is timing control, not target-stability detection; moving targets require a fresh screenshot or selector-first action.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations (readOnly=false, destructive=true), the description and schema detail the movement profile: direct single move vs deterministic 24-step bounded cubic Bezier with 8-14ms intervals, optional explicit delay, and press/release behavior. This meaningfully discloses how the click is executed.

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

Conciseness5/5

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

One front-loaded sentence includes the main action, coordinate basis, trajectory options, and delay without filler. Every clause earns its place.

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

Completeness5/5

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

Given the rich input schema, annotations, and presence of an output schema, the description covers purpose, trajectory, and click semantics sufficiently. The main gap—alternatives—is captured under usage guidelines, not completeness.

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

Parameters3/5

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

Input schema coverage is 100% with clear descriptions for all six parameters (x/y coordinates, button, element, profile, delay), so the description adds little beyond summarizing the trajectory and delay. Baseline 3 is appropriate.

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

Purpose5/5

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

Description names a specific action (move pointer to exact CSS pixel coordinates) and a resulting button press/release, clearly distinguishing this coordinate-based click from element-based siblings like element_click or movement-only page_pointer_move.

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

Usage Guidelines4/5

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

The phrase 'exact CSS pixel coordinates' gives clear context for when this tool is appropriate, and the delay parameter description adds an important exclusion (not for moving targets). It does not explicitly name alternatives like element_click, so it falls short of full sibling differentiation.

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

page_closeClose BrowserC
Destructive

Close the current page/browser

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so destructive nature is clear. Description adds minimal behavioral context (e.g., no mention of unsaved work or browser process exit). With annotations carrying the safety burden, description is adequate but not enriched.

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

Conciseness4/5

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

Single sentence, no wasted words. Could benefit from slight expansion to clarify scope, but remains efficient.

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

Completeness2/5

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

Despite low complexity, description is incomplete: ambiguous scope (page vs browser), no mention of return value (though output schema exists), and no relation to sibling tools. Leaves important questions unanswered for an agent.

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

Parameters4/5

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

No parameters exist; schema coverage is 100%. Description need not explain parameters. It sufficiently communicates the tool's sole action.

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

Purpose3/5

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

Description states 'Close the current page/browser', which identifies the action and resource but is ambiguous whether it closes a single page/tab or the entire browser process. Inconsistency between name 'page_close' and title 'Close Browser' further blurs purpose.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus siblings like 'tab_close' or 'page_navigate'. Lacks context on prerequisites, alternatives, or when not to invoke.

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

page_console_logsConsole LogsA
Read-onlyIdempotent

Read bounded browser console messages from the current tab. Supports level filtering, cursor pagination, and a maximum result limit.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNoConsole level filter: all, error, warning, warn, info, or log.all
limitNoMaximum number of console entries to return.
sinceNoReturn only log entries with index greater than this cursor.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

The description adds behavioral context ('bounded', details on filtering/pagination) beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), 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.

Conciseness5/5

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

The description is two sentences, densely informative, and front-loaded with the core purpose.

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

Completeness5/5

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

For a read-only tool with comprehensive annotations and a full input schema, the description adequately explains the tool's functionality and parameter capabilities.

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

Parameters3/5

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

Schema coverage is 100% and the description mentions the same features, but does not add significant new meaning beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the verb 'Read' and the resource 'bounded browser console messages from the current tab', which distinguishes it from siblings like page_evaluate or page_screenshot.

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

Usage Guidelines4/5

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

It explains when to use the tool via the mention of 'level filtering, cursor pagination, and a maximum result limit', but does not explicitly mention alternatives or 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.

page_dialog_observeObserve Page DialogA
Read-onlyIdempotent

Observe a pending native alert, confirm, or prompt and return its bounded message without handling it.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoSeconds to wait for a pending alert, confirm, or prompt.
max_message_charsNoMaximum dialog message characters returned to the MCP client.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces non-destructive behavior by stating 'without handling it'. It also adds context about the specific dialog types (alert, confirm, prompt) and the 'bounded message' return, which clarifies the tool's behavior beyond the annotations. It does not describe behavior when no dialog is pending, but the timeout parameter partially covers this.

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

Conciseness5/5

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

The description is a single, focused sentence, front-loaded with the action and purpose. Every word contributes value; there is no redundancy or filler, fitting the tool's simplicity.

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

Completeness4/5

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

For a simple observation tool, the description, combined with the comprehensive schema and annotations, is largely complete. It clearly conveys the tool's function and non-destructive nature. The behavior when no dialog appears is implied via the timeout and schema, though not explicitly stated in the description, which is a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already well-documented. The description adds minimal value beyond the schema, only tying 'bounded message' to the max_message_chars concept. No parameter details are missing, but the description also does not enrich understanding beyond what the schema provides.

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

Purpose5/5

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

The description clearly identifies the tool's action ('Observe a pending native alert, confirm, or prompt') and its scope ('return its bounded message without handling it'). This distinguishes it from sibling tools like page_dialog_respond, which handles the dialog, and page_observe, which observes page state.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: when a native dialog is pending and only observation is desired, explicitly stating it does not handle the dialog. It does not name alternative tools or provide when-not conditions, but the 'without handling it' implies a contrast with page_dialog_respond, giving adequate guidance without explicit exclusions.

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

page_dialog_respondRespond To DialogA
Destructive

Accept or dismiss one pending alert, confirm, or prompt through a capability-probed native DrissionPage dialog path.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
timeoutNoMaximum seconds to wait for a pending dialog. Zero checks immediately; an already-pending dialog still receives a bounded native response budget.
prompt_textNoText for an accepted prompt. The value is never returned.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true, idempotentHint=false, and openWorldHint=true. The description adds 'one pending' and 'capability-probed' but does not disclose side effects such as page state after dismissal or behavior when no dialog is pending. The added context is minimal.

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

Conciseness5/5

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

The description is a single sentence, front-loaded with the core action, and contains no filler or redundant phrases.

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

Completeness4/5

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

Given the tool's moderate complexity and the presence of annotations and an output schema, the description covers the core function adequately. However, the phrase 'capability-probed native DrissionPage dialog path' is vague and could be replaced with clearer prerequisites or behavior details.

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

Parameters3/5

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

Schema description coverage is 67%, with timeout and prompt_text already documented. The description does not add meaningful parameter semantics; it only maps the action to accept/dismiss and names the dialog types, which is slight but not substantial over the schema.

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

Purpose5/5

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

The description uses a specific verb combination 'Accept or dismiss' and clearly identifies the resource as 'one pending alert, confirm, or prompt.' This distinguishes it from sibling tools like page_dialog_observe and other page manipulation tools.

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

Usage Guidelines4/5

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

The description conveys clear context: it is used to respond to pending dialogs. However, it does not explicitly mention alternatives (e.g., page_dialog_observe for observation only) or exclusions like when no dialog is pending.

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

page_evaluateEvaluate JavaScriptA
Destructive

Run a bounded JavaScript function body in the current page and return a JSON-safe result. This can mutate the page.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoJSON arguments passed to the JavaScript function body
scriptYesJavaScript function body to run in the current page. Use return to provide a JSON-serializable result.
max_charsNoMaximum serialized JSON characters returned in result

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already disclose destructiveHint=true and readOnlyHint=false. The description adds 'This can mutate the page,' reinforcing the destructive nature, and 'bounded,' which hints at execution limits but does not specify them. 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.

Conciseness5/5

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

The description is two sentences, front-loaded with the core action and result, and contains no filler. It efficiently communicates the essential information.

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

Completeness3/5

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

For a tool that executes arbitrary JavaScript, the description covers the main action and output format, but lacks important context such as error behavior, timeout specifics, or broader side-effect implications beyond mutation. An output schema exists, but given the high-risk nature, more context would be beneficial.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter well-documented in the schema (script as a function body, args as JSON arguments, max_chars as a limit). The description itself adds no additional parameter details, so the schema carries the full semantic weight.

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

Purpose5/5

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

The description clearly states the tool's action: running a bounded JavaScript function body in the current page and returning a JSON-safe result. This distinguishes it from all sibling tools, as no other tool offers JavaScript execution.

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

Usage Guidelines3/5

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

The description implies the tool is used to run JavaScript on the page, but provides no explicit guidance on when to choose it over dedicated interaction tools or when not to use it. There is no mention of alternatives or exclusions.

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

page_export_artifactExport Page ArtifactA
Destructive

Generate one PDF or MHTML file under DP_MCP_ARTIFACT_ROOT and return checksum, safe relative path, and exact-once receipt evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNo
formatYes
filenameNo
landscapeNo
margin_topNo
margin_leftNo
page_rangesNo
paper_widthNo
margin_rightNo
paper_heightNo
margin_bottomNo
operation_keyNo
print_backgroundNo
prefer_css_page_sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already indicate mutation (readOnlyHint false) and destructiveness (destructiveHint true). The description adds useful context: it writes into a specific root (DP_MCP_ARTIFACT_ROOT), returns a checksum and safe relative path (implying path safety), and promises exact-once receipt evidence, which is a meaningful behavioral guarantee beyond the annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that efficiently captures the core action and key outputs without wasted words. It is concise and well-structured.

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

Completeness3/5

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

While the output schema may cover return values, the tool has 14 parameters and the description omits any context about parameter interactions, prerequisites, or use cases. It provides a minimal viable description but does not fully cover the complexity of the tool.

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

Parameters2/5

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

With schema description coverage at 0%, the description should compensate for the 14 parameters, but it only mentions 'PDF or MHTML' which maps to the format parameter. It does not explain scale, margins, page_ranges, paper dimensions, operation_key, or other options, leaving the agent without semantic guidance for most fields.

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

Purpose5/5

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

The description clearly states the tool's function: 'Generate one PDF or MHTML file under DP_MCP_ARTIFACT_ROOT' and specifies the return outputs (checksum, safe relative path, exact-once receipt evidence). This distinguishes it from sibling tools like page_screenshot or page_snapshot by focusing on durable artifact creation.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives such as page_screenshot_save or page_snapshot. The description does not mention scenarios, exclusions, or relationships to other export/save tools, leaving the agent to infer usage from the purpose alone.

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

page_get_urlGet Current URLA
Read-onlyIdempotent

Get the current URL of the page

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which convey the safety profile. The description adds no behavioral details beyond stating it gets the current URL, but it is consistent with the annotations and does not introduce contradictions.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundant information. It efficiently conveys the tool's purpose.

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

Completeness4/5

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

Given the tool's simplicity (0 params, read-only, output schema present), the description is mostly sufficient. It could optionally mention that the URL is returned as a string, but the output schema likely covers this, so the missing detail is minor.

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

Parameters4/5

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

The tool has zero parameters, and the input schema is empty. Per the baseline for 0-param tools, the description is not required to explain parameters, and it adds no unnecessary parameter details.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb ('Get') and resource ('the current URL of the page'). It distinguishes this from sibling navigation tools by implying a read-only action that returns the URL rather than altering it.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. While the purpose is self-evident, there is no explicit context, exclusions, or mention of sibling tools that could be used to retrieve the same information (e.g., page_evaluate).

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

page_go_backGo BackA
Destructive

Go back to the previous page in browser history

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Description confirms the action is destructive (consistent with annotations), but adds little beyond the title. Behavioral details like potential loss of forward history are implicit.

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

Conciseness5/5

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

Single sentence, zero waste. Highly efficient.

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

Completeness4/5

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

For a simple tool with no parameters and an output schema (not requiring explanation), the description is sufficient. Could mention return value briefly.

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

Parameters4/5

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

No parameters exist; schema coverage is 100%. Baseline score of 4 applies as description doesn't need to add parameter info.

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

Purpose5/5

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

The description 'Go back to the previous page in browser history' uses a specific verb and resource, clearly distinguishing it from sibling tools like page_go_forward or page_navigate.

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

Usage Guidelines4/5

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

The usage is obvious from context, but no explicit when-to-use or alternatives are provided. The description could mention not to use if already at the first page.

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

page_go_forwardGo ForwardA
Destructive

Go forward to the next page in browser history

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

The description adds minimal behavioral detail beyond the annotations, which already declare destructiveHint=true. It correctly states the action but does not elaborate on side effects or state changes.

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

Conciseness5/5

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

The description is a single concise sentence that is front-loaded with the core action. No wasted words.

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

Completeness5/5

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

For a simple parameterless tool, the description fully captures the behavior. An output schema exists, so return value information is not required in the description.

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

Parameters4/5

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

The tool has zero parameters and schema coverage is 100%. The description is not required to explain parameters, and the baseline score of 4 applies.

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

Purpose5/5

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

The description uses a specific verb ('Go forward') and resource ('next page in browser history'), clearly distinguishing it from siblings like 'page_go_back' and 'page_navigate'.

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

Usage Guidelines4/5

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

The description implicitly states when to use (to go forward in history), but does not explicitly exclude scenarios or mention alternatives. Given the standard browser action, the context is clear enough.

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

page_observeObserve PageA
Read-onlyIdempotent

Return a compact current-page fingerprint with URL, title, ready state, element counts, visible text samples, active element, and recent console summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_textsNoMaximum number of visible text samples to return
max_text_charsNoMaximum characters per visible text sample

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds that the tool returns a 'compact fingerprint' including a console summary, which gives some behavioral context, but there are no details about side effects, permissions, or rate limits. This is adequate but not rich.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the core purpose ('compact current-page fingerprint') and then lists the included elements. No wasted words.

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

Completeness4/5

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

Given the output schema exists and the parameter schema is self-documenting, the description is sufficient for a simple read-only tool. It provides a clear picture of what is returned, and the sibling context helps distinguish it. It lacks explicit 'when to use' guidance but that is not critical for this tool type.

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

Parameters3/5

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

The input schema has full descriptions for both parameters (max_texts, max_text_chars) with defaults and ranges. The description does not add any parameter semantics beyond what the schema already provides, so the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the tool returns a compact current-page fingerprint with a specific list of contents (URL, title, ready state, element counts, visible text samples, active element, recent console summary). The verb 'Return' is specific and the resource is well-defined, distinguishing it from sibling tools like page_snapshot or page_console_logs.

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

Usage Guidelines4/5

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

The description implies usage for obtaining a quick overview of the current page state, and the term 'compact fingerprint' contrasts with fuller snapshots. However, it does not explicitly name alternatives or exclusion criteria, so it falls short of the highest tier.

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

page_pointer_dragDrag Pointer Between CoordinatesA
Destructive

Perform one failure-safe viewport drag through optional ordered waypoints using direct or bounded natural movement while the button remains pressed. Always releases the button.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_xYesViewport drag end X in CSS pixels
end_yYesViewport drag end Y in CSS pixels
buttonNoMouse button held during the dragleft
elementNoHuman-readable draggable element or interaction description
profileNoMovement profile for the approach and every held segment: direct or deterministic bounded natural motiondirect
start_xYesViewport drag start X in CSS pixels
start_yYesViewport drag start Y in CSS pixels
waypointsNoOptional ordered viewport points visited while the button remains pressed

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

The description adds valuable behavioral guarantees beyond annotations: 'Always releases the button' and 'failure-safe' disclose important safety behavior not found in the readOnly/destructive hints. However, it does not detail what 'failure-safe' entails or the exact side effects of the drag (though destructiveHint is true).

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core action, and every phrase earns its place (failure-safe, waypoints, movement profiles, button release). No redundancy or filler.

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

Completeness4/5

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

The description is complete enough for an agent to select and invoke the tool correctly given the rich schema and output schema. It covers the primary behavior, optional waypoints, movement profiles, and the button-release guarantee. It does not explain failure-safe semantics, but the schema and context cover most operational details.

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

Parameters3/5

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

The input schema already provides 100% coverage of parameter descriptions, so the baseline is 3. The description reinforces the meaning of waypoints and profile but does not add substantial new semantic detail beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Perform one failure-safe viewport drag'), the scope (through optional ordered waypoints), and the method (direct or bounded natural movement while the button remains pressed). It distinguishes this from coordinate-based moves and element-based drags by emphasizing waypoints and the button-pressed state.

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

Usage Guidelines4/5

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

The description conveys when to use this tool: for viewport coordinate drags with waypoints and movement profiles. It implies it is for coordinate-based interactions rather than element-based ones (e.g., page_pointer_drag_element), but it does not explicitly name alternatives or state when not to use it.

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

page_pointer_drag_elementDrag Element to Structured DestinationA
Destructive

Resolve a source element and element, offset, or track-ratio destination immediately before one failure-safe drag. Supports CSS/XPath in the top document or one same-origin iframe, plus CSS paths through nested open Shadow DOM hosts; use coordinate drag for visual-only targets.

ParametersJSON Schema
NameRequiredDescriptionDefault
buttonNoleft
sourceYes
profileNodirect
destinationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true, so the agent knows this is a mutating action. The description adds non-obvious context: 'failure-safe drag' and 'immediately before' imply that source/destination are resolved at drag time and that the operation is atomic or failure-tolerant. This goes beyond the structured 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.

Conciseness5/5

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

The description is exactly two sentences. The first sentence states the core function using a specific verb and destination types. The second sentence adds scope and a usage alternative. No word is wasted, and the most important information is front-loaded.

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

Completeness4/5

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

Given the tool's high complexity (discriminated unions, nested selectors, shadow DOM) and the presence of an output schema, the description adequately covers the core use case, the supported environments, and an alternative. It does not explain failure modes or the exact semantics of 'track-ratio', but those are partly recoverable from the schema's definitions, so the description is sufficiently complete for an agent to select and attempt invocation.

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

Parameters3/5

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

Schema description coverage is reported at 0%, so the description carries the burden of explaining parameters. It does name the destination union types (element, offset, track-ratio) and mentions CSS/XPath scope (iframe, shadow DOM), which adds meaning to selector/frame_selector/shadow_hosts. However, it does not elaborate on 'button' or 'profile', and the track-ratio mechanism is left ambiguous. Overall it partially compensates for low schema coverage but is not comprehensive.

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

Purpose5/5

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

The description clearly identifies the tool's function: resolving a source element and a structured destination (element, offset, or track-ratio) before performing a drag. It also distinguishes itself from a coordinate-based drag tool by explicitly mentioning 'use coordinate drag for visual-only targets', making it distinct from siblings like page_pointer_drag.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: when an element-based drag is needed, including in iframes and Shadow DOM. It also gives a clear alternative: 'use coordinate drag for visual-only targets'. This directly addresses when not to use this tool, satisfying the 'explicit when/when-not/alternatives' criterion.

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

page_pointer_moveMove Pointer to CoordinatesA
Destructive

Move the viewport pointer to exact CSS pixel coordinates without pressing a button, using either one direct move or a bounded natural trajectory.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesViewport X coordinate in CSS pixels
yYesViewport Y coordinate in CSS pixels
elementNoHuman-readable element or interaction description
profileNoMovement profile: direct emits one exact move; natural emits a deterministic 24-step eased cubic Bezier path with bounded 8-14ms intervals and an exact endpointdirect

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

The description goes beyond annotations by detailing movement behavior: direct emits one move, natural uses a bounded 24-step Bezier path with timing intervals. This adds context that the agent can use to predict outcomes.

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

Conciseness4/5

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

The description is a single front-loaded sentence that conveys the essential purpose and two key options. It is efficient but slightly longer than necessary.

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

Completeness4/5

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

Given the tool's simplicity and the presence of an output schema, the description adequately covers movement, coordinates, and profile choice. It does not need to explain return values as per rules.

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

Parameters4/5

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

Schema coverage is 100%, and the description adds significant meaning for the 'profile' parameter by explaining the exact movement characteristics. For x and y, it reinforces the schema's clarity.

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

Purpose5/5

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

The description clearly states it moves the viewport pointer to exact CSS pixel coordinates without clicking, specifying two movement profiles. This distinguishes it from sibling tools like element_hover which target elements.

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

Usage Guidelines4/5

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

The description explains when to use each profile (direct vs. natural trajectory), providing clear guidance on choosing a movement style. However, it does not explicitly contrast with alternatives like coordinate-based vs. element-based moves.

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

page_refreshRefresh PageA
Destructive

Refresh the current page

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, signaling the tool's destructive nature. The description adds no further behavioral traits (e.g., loss of form state, reloading resources). With annotations bearing the burden, a score of 3 is appropriate for not augmenting beyond them.

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

Conciseness5/5

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

The description is a single sentence of 4 words, front-loading all critical information. Every word earns its place with no redundancy.

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

Completeness4/5

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

For a simple, parameterless tool with an output schema, the description is complete enough. It states the essential action. While it could mention side effects, the destructiveHint annotation covers that context, making further detail unnecessary.

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

Parameters4/5

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

The tool has no parameters and input schema coverage is 100%. Per guidelines, 0 parameters yields a baseline of 4; the description does not add parameter detail but none is needed.

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

Purpose4/5

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

The description 'Refresh the current page' clearly states the verb (Refresh) and resource (the current page). It is specific and unambiguous, but does not explicitly distinguish from sibling tools like page_navigate or page_go_forward, though the action is inherently different.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool vs alternatives (e.g., page_navigate for loading a new URL, page_go_back for history navigation). The description lacks context for proper decision-making.

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

page_resizeResize WindowB
Destructive

Resize the browser window to specified dimensions

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYesWidth of the browser window
heightYesHeight of the browser window

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations indicate destructiveHint=true and readOnlyHint=false, already signaling a mutating operation. The description adds no extra context about side effects, such as layout changes or potential reloads, and does not state whether the resize is persistent only for the current session. It fails to disclose any behavioral traits 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.

Conciseness5/5

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

The description is a single, concise sentence that gets straight to the point without any filler or repetition. It is well-structured and easy to parse, maximizing information density.

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

Completeness3/5

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

For a simple resize tool with a schema covering parameters and output schema present, the description is minimal but adequate. However, it lacks context about when to use the tool and any potential side effects, which limits its completeness for agent decision-making.

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

Parameters3/5

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

The input schema fully documents both parameters (width and height) with descriptions, giving 100% coverage. The description adds no additional meaning beyond what the schema already states, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool's purpose: to resize the browser window to specified dimensions. The verb 'resize' is specific and the resource is the browser window. It differentiates from sibling navigation and automation tools, though it doesn't clarify whether it affects the viewport or the outer window.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool or any alternatives. It does not mention prerequisites, such as needing an active page, or when resizing might be appropriate. Without this context, an agent may misuse or overlook the tool.

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

page_screenshotTake ScreenshotA
Read-onlyIdempotent

Take an inline screenshot of the current page

ParametersJSON Schema
NameRequiredDescriptionDefault
full_pageNoTake a full page screenshot

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds 'inline' but does not explain what that means (e.g., returns base64). With annotations, the bar is lower; description adds minimal value.

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

Conciseness5/5

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

Single, clear sentence with no unnecessary words. Efficiently conveys the core purpose.

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

Completeness4/5

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

Given the simple tool (one optional param, output schema present), the description is mostly complete. It could mention return format but is not required as output schema likely covers it.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline 3 is appropriate. Description does not add meaning beyond the schema; the parameter 'full_page' is already described in the input schema.

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

Purpose5/5

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

Description states 'Take an inline screenshot of the current page' – a specific verb and resource. The word 'inline' distinguishes it from the sibling 'page_screenshot_save', which likely saves to a file.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'page_screenshot_save'. No when-not or exclusions are provided, leaving the agent to infer context.

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

page_screenshot_saveSave ScreenshotA
Destructive

Save a screenshot to a local path under DP_MCP_SCREENSHOT_ROOT

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesLocal file path under DP_MCP_SCREENSHOT_ROOT to save screenshot
full_pageNoTake a full page screenshot

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already signal that the tool is destructive and not read-only. The description adds the context that the destination is under a specific root directory, but does not elaborate on what happens if the file already exists, or any side effects. It is adequate but could provide more detail.

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

Conciseness5/5

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

The description is a single, focused sentence with no unnecessary words or repetition. It is appropriately concise and well-structured.

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

Completeness3/5

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

Given the simple two-parameter schema and existence of an output schema, the description is minimally adequate. However, it lacks context about prerequisites (e.g., requiring a prior screenshot capture) and does not explain the return value or behavior on duplicate paths. It covers the core function but leaves gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add any additional meaning beyond the schema's parameter descriptions; it only restates the root directory constraint that is already in the schema's parameter description.

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

Purpose5/5

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

The description clearly states the action (save), the resource (screenshot), and the destination (local path under DP_MCP_SCREENSHOT_ROOT). It distinguishes the tool from the sibling 'page_screenshot', which likely captures but does not save to a local path.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., page_screenshot). It does not mention prerequisites, such as needing to first capture a screenshot, or any context about file conflicts. Annotations indicate destructive behavior, but no explicit usage direction is given.

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

page_scrollScroll PageA
Destructive

Scroll the current page by direction or to a position.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoX coordinate for direction=position.
yNoY coordinate for direction=position.
pixelsNoPixel distance for directional scrolling.
directionNoScroll direction or target: down, up, left, right, top, bottom, half, position.down

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations indicate the tool is destructive and not read-only, which aligns with scrolling. The description adds no further behavioral context, such as side effects like triggering lazy loading, but it is consistent.

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

Conciseness5/5

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

The description is a single, efficient sentence that conveys the core functionality without unnecessary words. It is front-loaded and well-structured.

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

Completeness4/5

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

Given the tool's simplicity and the presence of an output schema and comprehensive parameter descriptions in the schema, the description adequately completes the context. It could mention default behavior or scope (main page vs iframes), but it is largely sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents parameters. The description does not add additional meaning beyond what the schema provides, maintaining the baseline.

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

Purpose5/5

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

The description clearly states the tool scrolls the current page by direction or to a position, specifying the verb and resource. It distinguishes from sibling tools like element_scroll_into_view which targets elements.

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

Usage Guidelines3/5

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

The description implies usage for scrolling but does not provide explicit guidance on when to use this tool vs alternatives like page_go_forward/back or element_scroll_into_view. No exclusions or conditions are mentioned.

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

page_snapshotPage SnapshotA
Read-onlyIdempotent

Return a bounded page outline with text excerpt, headings, links, buttons, inputs, forms, and recommended selectors.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_htmlNoInclude bounded outerHTML excerpts for summarized elements
max_elementsNoMaximum total headings/links/buttons/inputs/forms to return
max_text_charsNoMaximum page text excerpt characters to return

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations (readOnlyHint, idempotentHint, destructiveHint=false) already establish the safety profile. The description adds valuable context by highlighting the 'bounded' nature (controlled by max_elements and max_text_chars) and enumerating the output components, going beyond the bare annotations 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.

Conciseness5/5

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

The description is a single, front-loaded sentence that directly states the tool's purpose and output scope without any filler. Every word adds meaning.

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

Completeness5/5

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

Given the simplicity of the tool, the presence of a rich output schema, and complete annotations, the description fully covers the necessary context. It communicates the key output categories and bounded nature, making it self-sufficient for agent invocation.

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

Parameters3/5

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

Schema description coverage is 100% for all three parameters, so the schema already fully documents them. The description adds no additional parameter-specific detail; it focuses on the output rather than parameter behavior, which is acceptable but does not exceed the baseline.

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

Purpose5/5

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

Description uses a specific verb ('Return') and a clear resource ('bounded page outline'), enumerating distinct content types (text excerpt, headings, links, buttons, inputs, forms, recommended selectors). This clearly differentiates it from sibling tools like page_accessibility_snapshot or page_observe.

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

Usage Guidelines3/5

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

The description implies usage for obtaining a summarized page overview but does not explicitly state when to use it instead of alternatives, nor does it mention exclusions or preconditions. It lacks the explicit alternative guidance seen in the calibration example.

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

shadow_findFind Shadow ElementA
Read-onlyIdempotent

Find one element inside a shadow root exposed by the supported DrissionPage runtime.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo
selectorYesSelector inside the shadow root.
host_selectorYesSelector for the shadow host element.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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 context that the shadow root must be 'exposed by the supported DrissionPage runtime', indicating a dependency. 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.

Conciseness5/5

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

The description is a single sentence with no filler or redundant words. It is front-loaded with the core action and resource, making it highly concise and well-structured.

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

Completeness4/5

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

For a simple three-parameter tool with annotations and an output schema, the description adequately explains the core purpose. It does not cover failure modes or return behavior, but the output schema handles return values, and the annotations cover safety, making it sufficiently complete.

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

Parameters3/5

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

Schema description coverage is 67% with host_selector and selector described, but timeout lacks a description. The tool description does not add any parameter-specific meaning beyond the schema, so it provides minimal extra value for understanding parameters.

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

Purpose5/5

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

The description uses the specific verb 'Find' and identifies the resource as 'one element inside a shadow root'. It distinguishes itself from sibling tool 'shadow_find_all' by the word 'one' and mentions the DrissionPage runtime context, 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.

Usage Guidelines4/5

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

The context is clear: this tool is for locating a single element within an exposed shadow root, which implies it is the singular variant of shadow_find_all. However, it does not explicitly name alternatives or state when not to use it, so it lacks explicit exclusion criteria.

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

shadow_find_allFind Shadow ElementsA
Read-onlyIdempotent

Find repeated elements inside a shadow root exposed by the supported DrissionPage runtime.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
selectorYesSelector inside the shadow root.
include_htmlNo
host_selectorYesSelector for the shadow host element.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already cover safety (readOnlyHint=true, destructiveHint=false, idempotentHint=true). The description adds the DrissionPage runtime context but does not mention behavioral details such as limit handling, return shape, or potential errors. With annotations present, this is adequate but not rich.

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

Conciseness5/5

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

The description is a single, direct sentence with no redundant information. It conveys the essential purpose efficiently.

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

Completeness3/5

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

The tool is relatively simple and has an output schema plus annotations, so a one-sentence description is minimally viable. However, it does not clarify the distinction from shadow_find or elaborate on how limit and include_html affect behavior, leaving some contextual gaps.

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

Parameters3/5

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

The schema provides descriptions for required params host_selector and selector, and the remaining params (limit, include_html) are self-explanatory by name. The description itself adds no parameter-level meaning beyond what the schema already conveys.

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

Purpose5/5

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

The description clearly states the action (find), the target (repeated elements inside a shadow root), and the runtime (DrissionPage). This distinguishes it from sibling tools like shadow_find (singular) and element_find_all (non-shadow).

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

Usage Guidelines3/5

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

The description implies usage for retrieving all matching elements within a shadow root but does not explicitly state when to use it versus alternatives like shadow_find. No direct comparison or exclusions are provided, so usage context is only implied.

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

storage_clearClear Web StorageA
Destructive

Clear one key or all items from localStorage/sessionStorage.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoOptional key. Empty clears the area.
areaNolocal

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

The description matches the destructive hint annotation and clarifies the storage types (local/session). However, it does not add significant behavioral context beyond the annotation, such as irreversibility or cross-tab effects.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the action. Every word contributes to clarity without any redundancy.

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

Completeness5/5

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

Given the tool's simplicity and the presence of an output schema, the description adequately covers the primary behavior (clear one key or all) and storage context. No additional details are necessary for correct invocation.

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

Parameters3/5

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

The description adds context that key is optional and that clearing can be for local or session storage, but the schema already covers the key parameter's behavior. The area parameter is self-explanatory via its enum, so the description adds minimal extra meaning beyond the schema.

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

Purpose5/5

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

The description clearly states that the tool clears one key or all items from localStorage/sessionStorage, with a specific verb and resource. It effectively distinguishes from sibling tools like storage_get and storage_set by focusing on deletion.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., storage_set with empty value) or when not to use it. The context of siblings is broad but not addressed.

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

storage_getGet Web StorageA
Read-onlyIdempotent

Read localStorage or sessionStorage by key or as a bounded map, with values redacted unless explicitly requested.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoOptional key. Empty returns all keys.
areaNolocal
include_valuesNoReturn storage values instead of redacting non-empty values.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, openWorldHint), the description discloses two key behavioral traits: values are redacted unless include_values is set, and retrieval is bounded (as a map). This adds significant context that annotations do not provide, helping the agent understand defaults and limitations.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the action ('Read') and presents all key information without redundancy. Every clause adds value.

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

Completeness5/5

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

For a simple read tool with an output schema and clear annotations, the description covers the essential behavior (key vs map, redaction). The context of sibling tools and the schema fill in any remaining gaps, making it complete for an agent to understand and invoke correctly.

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

Parameters4/5

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

Schema coverage is 67% (key and include_values have descriptions, area does not). The description adds meaning by explaining 'by key or as a bounded map' (corresponding to key) and 'redacted unless explicitly requested' (corresponding to include_values). It does not mention the area parameter, but the schema's enum provides clear options.

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

Purpose5/5

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

The description clearly states the verb 'Read' and the resource 'localStorage or sessionStorage' with specifics ('by key or as a bounded map, with values redacted unless explicitly requested'). It distinguishes from sibling tools like storage_set and storage_clear by making the read-only nature explicit.

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

Usage Guidelines4/5

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

The description clearly implies the tool is for reading web storage, offering both key-based and map-based access. While it does not explicitly mention alternatives or exclusions, the context is sufficient for an agent to infer when to use this tool versus siblings like storage_set or storage_clear.

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

storage_setSet Web StorageA
Destructive

Set one localStorage/sessionStorage item. The value is not echoed.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
areaNolocal
valueYesString value to store. Not echoed in result.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so the mutating nature is known. The description adds that the value is not echoed, which is useful for privacy. However, it does not disclose whether existing keys are overwritten or other behavioral traits 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.

Conciseness5/5

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

The description consists of two short, front-loaded sentences that efficiently convey the core action and a key behavioral note. No superfluous text.

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

Completeness4/5

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

For a simple setter tool, the description covers the essential purpose and a notable behavior (no echo). With an output schema present, return values need not be explained. However, it could mention that setting an existing key overwrites it, adding slightly more completeness.

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

Parameters2/5

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

Schema description coverage is low (33%), with only the 'value' parameter having a description. The tool description does not add meaning beyond what is already in the schema, merely restating that the value is not echoed. It fails to compensate for the under-documented parameters.

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

Purpose5/5

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

The description clearly states the action 'Set' and the resource 'localStorage/sessionStorage item', distinguishing it from sibling tools like storage_get and storage_clear. It uses specific verbs and resource names.

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

Usage Guidelines3/5

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

The description implies usage for storing a value but does not provide explicit guidance on when to use this tool versus alternatives such as storage_get or storage_clear. No exclusions or when-not-to-use are mentioned.

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

tab_closeClose TabA
Destructive

Close a browser tab by id from tab_list without closing the whole browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idYesMCP tab id from tab_list, or the underlying DrissionPage native tab id.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate destructive behavior and non-read-only. Description adds minor context: it closes a single tab without closing the whole browser. However, it lacks details about side effects (e.g., unsaved data), error cases, or behavior when closing the last tab.

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

Conciseness5/5

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

Single sentence, straightforward, front-loaded with action and key constraint. No wasted words.

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

Completeness3/5

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

For a simple destructive tool with full schema coverage and an output schema, the description is adequate but lacks any guidance on usage context or error conditions. The brief description covers the core action but leaves room for improvement.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds no new meaning beyond the schema's own parameter description, which already explains the tab_id format. No additional semantics provided.

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

Purpose5/5

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

Describes a specific action (close) on a specific resource (browser tab) using a specific method (by id from tab_list). Distinguishes from closing the whole browser, which sets it apart from sibling tools like 'page_close'.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs alternatives like page_close or page_navigate. No mention of prerequisites (e.g., tab must exist in tab_list) or exclusion criteria.

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

tab_listList TabsA
Read-onlyIdempotent

List browser tabs tracked by the current DrissionPage MCP session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description adds the session scoping ('tracked by the current DrissionPage MCP session'), which is useful but not extensive. No contradictions 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.

Conciseness5/5

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

The description is a single sentence of 14 words, with no redundant information. It efficiently conveys the core functionality.

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

Completeness4/5

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

Given the tool's simplicity (no parameters, full annotation coverage, output schema present), the description is adequately complete. It specifies the scope (current session), which is the main contextual detail needed beyond structured fields.

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

Parameters4/5

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

The tool has zero parameters, and the input schema is empty. With baseline set at 4 for 0 params, the description does not need to add parameter details. The output schema exists, so the description does not need to explain return values.

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

Purpose5/5

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

The description clearly states the tool's action: listing browser tabs. It uses the specific verb 'List' and resource 'browser tabs', with scope defined as the current DrissionPage MCP session. This distinguishes it from sibling tools like page_navigate or tab_close.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. For example, it does not mention whether it should be used before closing tabs or navigating. Given the set of sibling tools, explicit usage context would be helpful.

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

tab_switchSwitch TabA
Destructive

Switch the active browser tab by id from tab_list.

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idYesMCP tab id from tab_list, or the underlying DrissionPage native tab id.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

Annotations already establish readOnlyHint=false and destructiveHint=true, indicating a state-changing operation. The description adds no additional behavioral context such as side effects on the previously active tab, session state, or prerequisites, so it provides little 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.

Conciseness5/5

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

The description is a single concise sentence with the verb and object front-loaded. Every word contributes to the core action and id source; there is no redundancy or filler.

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

Completeness4/5

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

Given the simple one-parameter tool and the presence of an output schema, this description is adequate. It names the action, resource, and id source; the only minor gap is not explicitly stating that tab_list should be called first to obtain a valid id, but that is already implied by the schema description.

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

Parameters3/5

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

The input schema fully documents tab_id (100% coverage) as either an MCP tab id from tab_list or a DrissionPage native id. The description's 'by id from tab_list' only echoes this existing schema detail without adding new semantic meaning.

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

Purpose5/5

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

The description states a specific verb ('Switch') applied to a specific resource ('the active browser tab'), and it identifies the id source ('from tab_list'). This clearly distinguishes it from sibling tools like tab_close and tab_list, which have different purposes.

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

Usage Guidelines3/5

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

The description implies the tool should be used when the agent has a tab_id from tab_list and wants to change the active tab. However, it does not explicitly state when to use it versus alternatives, nor does it provide exclusions (e.g., 'use tab_close to close a tab').

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

wait_for_elementWait for ElementA
Read-onlyIdempotent

Wait for an element to appear on the page. Bare selectors are treated as CSS; use text:... for text matching.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoTimeout in seconds
selectorYesCSS selector or XPath to wait for. Bare selectors are CSS; use text:... for text matching or explicit tag:/css:/xpath:/@attr locators.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering safety. The description adds selector interpretation context (bare CSS vs text:) but does not disclose timeout error behavior or return semantics. 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.

Conciseness5/5

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

The description is a single, front-loaded sentence that states the core purpose and the most important selector nuance. Every word earns its place with no redundancy.

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

Completeness4/5

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

With a rich schema (including selector object variants) and output schema present, the description is adequate for basic usage. However, it lacks explicit differentiation from other wait tools (wait_until, wait_time), which would improve completeness in tool selection.

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

Parameters3/5

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

Schema description coverage is 100%, with detailed descriptions for timeout and selector, including bare CSS and text: prefixes. The tool description essentially repeats selector guidance from the schema, adding no new parameter information.

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

Purpose5/5

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

The description clearly states the tool waits for an element to appear on the page, using a specific verb and resource. It distinguishes itself from sibling wait tools like wait_time and wait_for_url by focusing on element presence, and adds selector syntax details.

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

Usage Guidelines3/5

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

The description implies usage (wait for element appearance) and provides selector format guidance, but gives no explicit when-to-use vs alternatives like wait_until or wait_time. Sibling tools are visible but not referenced, so the agent must infer the distinction.

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

wait_for_urlWait for URLA
Read-onlyIdempotent

Wait for the current URL to contain a substring

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoTimeout in seconds
url_patternYesSubstring or pattern expected in the current URL

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds the substring-matching behavior but does not elaborate on timeout failure modes or polling mechanics, which is acceptable given annotations cover the read-only nature.

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

Conciseness5/5

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

One sentence, no wasted words, immediately states the action and condition. It is front-loaded and every word earns its place.

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

Completeness4/5

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

For a simple wait tool, the description combined with the input schema and output schema is sufficient. It doesn't explain what happens on timeout, but the timeout parameter with default and max makes it understandable. Slight gap: no explicit statement of return behavior, but output schema likely covers it.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both url_pattern and timeout. The description restates the substring concept but adds no new parameter semantics beyond the schema.

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

Purpose5/5

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

The description uses a specific verb 'wait' with a resource 'current URL' and a condition 'contain a substring', clearly distinguishing it from sibling wait tools like wait_for_element or wait_time. It is 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.

Usage Guidelines4/5

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

The description clearly implies usage for waiting until the URL matches a substring, but does not explicitly mention alternatives or when-not to use. However, the context is clear enough that an agent would know to use this when a URL condition is needed.

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

wait_timeWait TimeB
Read-onlyIdempotent

Wait for a specific amount of time

ParametersJSON Schema
NameRequiredDescriptionDefault
secondsYesNumber of seconds to wait

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds no new behavioral traits (e.g., blocking nature, unit of time, or potential side effects).

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

Conciseness5/5

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

Single concise sentence that is front-loaded and contains no redundant information.

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

Completeness4/5

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

For a simple tool with robust annotations and output schema, the description is adequate. It could mention blocking behavior, but overall completeness is sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, and the parameter 'seconds' is well-documented in the schema. The description adds no additional context beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the action 'Wait' and the resource 'specific amount of time', distinguishing it from sibling tools like wait_for_element or wait_for_url which wait for conditions.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., wait_for_element, wait_until). The description does not mention prerequisites or exclusions.

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

wait_untilWait UntilA
Read-onlyIdempotent

Wait for observable page state: element present/visible/hidden/detached/clickable/stable, text contains/matches, or URL contains/matches.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoAttribute or property name for attribute/property conditions
valueNoExpected value or substring/regular expression, depending on condition
timeoutNoTimeout in seconds
intervalNoPolling interval in seconds
selectorNoCSS/XPath/DrissionPage locator for element or text conditions
conditionYesCondition to wait for
stable_msNoElement stability window for the stable condition

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so safety is covered. The description adds the behavioral scope of what can be waited on, which is context beyond annotations, but doesn't mention timeout or polling behavior (though schema provides timeout/interval).

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

Conciseness5/5

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

The description is one concise, front-loaded sentence that lists capabilities in a compact, scannable way. No wasted words.

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

Completeness3/5

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

Given the tool's complexity (14 condition types, nested selector structures), the description covers only a subset of conditions, omitting attribute/property waits. While an output schema exists, the functional coverage is incomplete, so the description does not fully convey the tool's capabilities.

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

Parameters3/5

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

Schema description coverage is 100%, so each of the 7 parameters has a description in the schema. The tool description provides a high-level overview of condition categories but adds no specific parameter semantics beyond what the schema already documents, yielding a baseline 3.

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

Purpose4/5

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

The description specifies a clear verb and resource ('Wait for observable page state') and enumerates many condition categories (element states, text, URL). However, it omits attribute and property conditions that exist in the schema (attribute_equals, property_equals, etc.), making the description still mostly clear but not fully comprehensive.

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

Usage Guidelines3/5

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

The description gives no explicit guidance on when to use this tool versus the specialized wait_for_element, wait_for_url, or wait_time sibling tools. The broad scope implies it's the general waiting utility, but no alternatives or exclusions are stated.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 49 tool updatesv0.8.0
    • Addedbrowser_cache_clear
    • Addedbrowser_cookies_clear
    • Addedbrowser_cookies_delete
    • Addedbrowser_cookies_set
    • Addedbrowser_headers_set
    • Addedbrowser_permission_get
    • Addedbrowser_permission_set
    • Addedbrowser_permissions_reset
    • Addedbrowser_user_agent_set
    • Changedelement_check6 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "AccessibilityTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A unique accessibility role/name target within an optional DOM scope.",
        +    "properties": {
        +      "exact": {
        +        "default": true,
        +        "title": "Exact",
        +        "type": "boolean"
        +      },
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "accessibility",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "maxLength": 500,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "role": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Role",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "role"
        +    ],
        +    "title": "AccessibilityTargetInput",
        +    "type": "object"
        +  },
        +  "SelectorTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A selector target with optional frame and shadow-root scope.",
        +    "properties": {
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "selector",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "selector": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "selector"
        +    ],
        +    "title": "SelectorTargetInput",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / selector / anyOf
        Added value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "discriminator": {
        +      "mapping": {
        +        "accessibility": "#/$defs/AccessibilityTargetInput",
        +        "selector": "#/$defs/SelectorTargetInput"
        +      },
        +      "propertyName": "kind"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/$defs/SelectorTargetInput"
        +      },
        +      {
        +        "$ref": "#/$defs/AccessibilityTargetInput"
        +      }
        +    ]
        +  }
        +]
      • changedInput schema / properties / selector / description
        Previous value: -"CSS/XPath/DrissionPage checkbox locator."New value: +"String locator or structured checkbox target."
      • removedInput schema / properties / selector / type
        Removed value: -"string"
      • changedInput schema / properties / timeout / type
        Previous value: -"integer"New value: +"number"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "by_js": {
        -            "title": "By Js",
        -            "type": "boolean"
        -          },
        -          "checked": {
        -            "title": "Checked",
        -            "type": "boolean"
        -          },
        -          "locator": {
        -            "title": "Locator",
        -            "type": "string"
        -          },
        -          "selector": {
        -            "title": "Selector",
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "title": "Selector Normalized",
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "title": "Selector Strategy",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "checked",
        -          "by_js"
        -        ],
        -        "title": "ElementCheckData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "by_js": {
        +            "title": "By Js",
        +            "type": "boolean"
        +          },
        +          "checked": {
        +            "title": "Checked",
        +            "type": "boolean"
        +          },
        +          "exact": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Exact"
        +          },
        +          "frame_selectors": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Frame Selectors",
        +            "type": "array"
        +          },
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "name": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Name"
        +          },
        +          "role": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Role"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          },
        +          "shadow_hosts": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Shadow Hosts",
        +            "type": "array"
        +          },
        +          "target_kind": {
        +            "default": "selector",
        +            "enum": [
        +              "selector",
        +              "accessibility"
        +            ],
        +            "title": "Target Kind",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "checked",
        +          "by_js"
        +        ],
        +        "title": "ElementCheckData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedelement_click5 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "AccessibilityTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A unique accessibility role/name target within an optional DOM scope.",
        +    "properties": {
        +      "exact": {
        +        "default": true,
        +        "title": "Exact",
        +        "type": "boolean"
        +      },
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "accessibility",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "maxLength": 500,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "role": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Role",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "role"
        +    ],
        +    "title": "AccessibilityTargetInput",
        +    "type": "object"
        +  },
        +  "SelectorTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A selector target with optional frame and shadow-root scope.",
        +    "properties": {
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "selector",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "selector": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "selector"
        +    ],
        +    "title": "SelectorTargetInput",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / selector / anyOf
        Added value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "discriminator": {
        +      "mapping": {
        +        "accessibility": "#/$defs/AccessibilityTargetInput",
        +        "selector": "#/$defs/SelectorTargetInput"
        +      },
        +      "propertyName": "kind"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/$defs/SelectorTargetInput"
        +      },
        +      {
        +        "$ref": "#/$defs/AccessibilityTargetInput"
        +      }
        +    ]
        +  }
        +]
      • removedInput schema / properties / selector / type
        Removed value: -"string"
      • changedInput schema / properties / timeout / type
        Previous value: -"integer"New value: +"number"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "button": {
        -            "enum": [
        -              "left",
        -              "right",
        -              "middle"
        -            ],
        -            "title": "Button",
        -            "type": "string"
        -          },
        -          "changes": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": true,
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null,
        -            "title": "Changes"
        -          },
        -          "click_count": {
        -            "enum": [
        -              1,
        -              2
        -            ],
        -            "title": "Click Count",
        -            "type": "integer"
        -          },
        -          "locator": {
        -            "title": "Locator",
        -            "type": "string"
        -          },
        -          "selector": {
        -            "title": "Selector",
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "title": "Selector Normalized",
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "title": "Selector Strategy",
        -            "type": "string"
        -          },
        -          "url": {
        -            "title": "Url",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "url",
        -          "button",
        -          "click_count"
        -        ],
        -        "title": "ElementClickData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "button": {
        +            "enum": [
        +              "left",
        +              "right",
        +              "middle"
        +            ],
        +            "title": "Button",
        +            "type": "string"
        +          },
        +          "changes": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Changes"
        +          },
        +          "click_count": {
        +            "enum": [
        +              1,
        +              2
        +            ],
        +            "title": "Click Count",
        +            "type": "integer"
        +          },
        +          "exact": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Exact"
        +          },
        +          "frame_selectors": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Frame Selectors",
        +            "type": "array"
        +          },
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "name": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Name"
        +          },
        +          "role": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Role"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          },
        +          "shadow_hosts": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Shadow Hosts",
        +            "type": "array"
        +          },
        +          "target_kind": {
        +            "default": "selector",
        +            "enum": [
        +              "selector",
        +              "accessibility"
        +            ],
        +            "title": "Target Kind",
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "url",
        +          "button",
        +          "click_count"
        +        ],
        +        "title": "ElementClickData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedelement_click_and_download95 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "AccessibilityTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A unique accessibility role/name target within an optional DOM scope.",
        +    "properties": {
        +      "exact": {
        +        "default": true,
        +        "title": "Exact",
        +        "type": "boolean"
        +      },
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "accessibility",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "maxLength": 500,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "role": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Role",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "role"
        +    ],
        +    "title": "AccessibilityTargetInput",
        +    "type": "object"
        +  },
        +  "CoordinateDownloadTriggerInput": {
        +    "additionalProperties": false,
        +    "description": "One left click at bounded viewport coordinates.",
        +    "properties": {
        +      "delay_before_press_ms": {
        +        "default": 0,
        +        "maximum": 10000,
        +        "minimum": 0,
        +        "title": "Delay Before Press Ms",
        +        "type": "integer"
        +      },
        +      "kind": {
        +        "const": "coordinate",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "profile": {
        +        "default": "direct",
        +        "enum": [
        +          "direct",
        +          "natural"
        +        ],
        +        "title": "Profile",
        +        "type": "string"
        +      },
        +      "x": {
        +        "maximum": 100000,
        +        "minimum": 0,
        +        "title": "X",
        +        "type": "number"
        +      },
        +      "y": {
        +        "maximum": 100000,
        +        "minimum": 0,
        +        "title": "Y",
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "x",
        +      "y"
        +    ],
        +    "title": "CoordinateDownloadTriggerInput",
        +    "type": "object"
        +  },
        +  "KeyboardDownloadTriggerInput": {
        +    "additionalProperties": false,
        +    "description": "One bounded keyboard input sent to the active page element.",
        +    "properties": {
        +      "interval": {
        +        "default": 0,
        +        "maximum": 2,
        +        "minimum": 0,
        +        "title": "Interval",
        +        "type": "number"
        +      },
        +      "keys": {
        +        "maxLength": 256,
        +        "minLength": 1,
        +        "title": "Keys",
        +        "type": "string"
        +      },
        +      "kind": {
        +        "const": "keyboard",
        +        "title": "Kind",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "keys"
        +    ],
        +    "title": "KeyboardDownloadTriggerInput",
        +    "type": "object"
        +  },
        +  "SelectorTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A selector target with optional frame and shadow-root scope.",
        +    "properties": {
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "selector",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "selector": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "selector"
        +    ],
        +    "title": "SelectorTargetInput",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / selector / anyOf
        Added value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "discriminator": {
        +      "mapping": {
        +        "accessibility": "#/$defs/AccessibilityTargetInput",
        +        "coordinate": "#/$defs/CoordinateDownloadTriggerInput",
        +        "keyboard": "#/$defs/KeyboardDownloadTriggerInput",
        +        "selector": "#/$defs/SelectorTargetInput"
        +      },
        +      "propertyName": "kind"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/$defs/SelectorTargetInput"
        +      },
        +      {
        +        "$ref": "#/$defs/AccessibilityTargetInput"
        +      },
        +      {
        +        "$ref": "#/$defs/CoordinateDownloadTriggerInput"
        +      },
        +      {
        +        "$ref": "#/$defs/KeyboardDownloadTriggerInput"
        +      }
        +    ]
        +  }
        +]
      • changedInput schema / properties / selector / description
        Previous value: -"CSS/XPath/DrissionPage selector for the download control."New value: +"Selector/accessibility target, viewport coordinate click, or keyboard input that starts one download."
      • removedInput schema / properties / selector / maxLength
        Removed value: -500
      • removedInput schema / properties / selector / minLength
        Removed value: -1
      • removedInput schema / properties / selector / type
        Removed value: -"string"
      • removedOutput schema / $defs / ArtifactRef / properties / kind / const
        Removed value: -"download"
      • addedOutput schema / $defs / ArtifactRef / properties / kind / enum
        Added value: +[
        +  "download",
        +  "page_export"
        +]
      • addedOutput schema / $defs / CoordinateDownloadTriggerData
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "delay_before_press_ms": {
        +      "maximum": 10000,
        +      "minimum": 0,
        +      "title": "Delay Before Press Ms",
        +      "type": "integer"
        +    },
        +    "kind": {
        +      "const": "coordinate",
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "profile": {
        +      "enum": [
        +        "direct",
        +        "natural"
        +      ],
        +      "title": "Profile",
        +      "type": "string"
        +    },
        +    "x": {
        +      "maximum": 100000,
        +      "minimum": 0,
        +      "title": "X",
        +      "type": "number"
        +    },
        +    "y": {
        +      "maximum": 100000,
        +      "minimum": 0,
        +      "title": "Y",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "x",
        +    "y",
        +    "profile",
        +    "delay_before_press_ms"
        +  ],
        +  "title": "CoordinateDownloadTriggerData",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadFailedData / oneOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "trigger"
        +      ]
        +    },
        +    "properties": {
        +      "locator": {
        +        "type": "string"
        +      },
        +      "selector": {
        +        "type": "string"
        +      },
        +      "selector_normalized": {
        +        "type": "boolean"
        +      },
        +      "selector_strategy": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "selector",
        +      "locator",
        +      "selector_strategy",
        +      "selector_normalized"
        +    ]
        +  },
        +  {
        +    "not": {
        +      "anyOf": [
        +        {
        +          "required": [
        +            "selector"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "locator"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "selector_strategy"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "selector_normalized"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "target_kind"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "frame_selectors"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "shadow_hosts"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "role"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "name"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "exact"
        +          ]
        +        }
        +      ]
        +    },
        +    "properties": {
        +      "trigger": {
        +        "not": {
        +          "type": "null"
        +        }
        +      }
        +    },
        +    "required": [
        +      "trigger"
        +    ]
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / exact
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Exact"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / frame_selectors
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Frame Selectors"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / locator / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / locator / default
        Added value: +null
      • removedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / locator / type
        Removed value: -"string"
      • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Name"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / role
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Role"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector / default
        Added value: +null
      • removedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector / type
        Removed value: -"string"
      • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector_normalized / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector_normalized / default
        Added value: +null
      • removedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector_normalized / type
        Removed value: -"boolean"
      • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector_strategy / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector_strategy / default
        Added value: +null
      • removedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector_strategy / type
        Removed value: -"string"
      • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / shadow_hosts
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Shadow Hosts"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / target_kind
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "selector",
        +        "accessibility"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Target Kind"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / trigger
        Added value: +{
        +  "anyOf": [
        +    {
        +      "discriminator": {
        +        "mapping": {
        +          "coordinate": "#/$defs/CoordinateDownloadTriggerData",
        +          "keyboard": "#/$defs/KeyboardDownloadTriggerData"
        +        },
        +        "propertyName": "kind"
        +      },
        +      "oneOf": [
        +        {
        +          "$ref": "#/$defs/CoordinateDownloadTriggerData"
        +        },
        +        {
        +          "$ref": "#/$defs/KeyboardDownloadTriggerData"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Trigger"
        +}
      • changedOutput schema / $defs / ElementClickAndDownloadFailedData / required
        Previous value: -[
        -  "operation_key",
        -  "selector",
        -  "locator",
        -  "selector_strategy",
        -  "selector_normalized",
        -  "status",
        -  "artifact",
        -  "receipt"
        -]New value: +[
        +  "operation_key",
        +  "status",
        +  "artifact",
        +  "receipt"
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / oneOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "trigger"
        +      ]
        +    },
        +    "properties": {
        +      "locator": {
        +        "type": "string"
        +      },
        +      "selector": {
        +        "type": "string"
        +      },
        +      "selector_normalized": {
        +        "type": "boolean"
        +      },
        +      "selector_strategy": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "selector",
        +      "locator",
        +      "selector_strategy",
        +      "selector_normalized"
        +    ]
        +  },
        +  {
        +    "not": {
        +      "anyOf": [
        +        {
        +          "required": [
        +            "selector"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "locator"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "selector_strategy"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "selector_normalized"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "target_kind"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "frame_selectors"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "shadow_hosts"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "role"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "name"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "exact"
        +          ]
        +        }
        +      ]
        +    },
        +    "properties": {
        +      "trigger": {
        +        "not": {
        +          "type": "null"
        +        }
        +      }
        +    },
        +    "required": [
        +      "trigger"
        +    ]
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / exact
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Exact"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / frame_selectors
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Frame Selectors"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / locator / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / locator / default
        Added value: +null
      • removedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / locator / type
        Removed value: -"string"
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Name"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / role
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Role"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector / default
        Added value: +null
      • removedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector / type
        Removed value: -"string"
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_normalized / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_normalized / default
        Added value: +null
      • removedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_normalized / type
        Removed value: -"boolean"
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_strategy / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_strategy / default
        Added value: +null
      • removedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_strategy / type
        Removed value: -"string"
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / shadow_hosts
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Shadow Hosts"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / target_kind
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "selector",
        +        "accessibility"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Target Kind"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / trigger
        Added value: +{
        +  "anyOf": [
        +    {
        +      "discriminator": {
        +        "mapping": {
        +          "coordinate": "#/$defs/CoordinateDownloadTriggerData",
        +          "keyboard": "#/$defs/KeyboardDownloadTriggerData"
        +        },
        +        "propertyName": "kind"
        +      },
        +      "oneOf": [
        +        {
        +          "$ref": "#/$defs/CoordinateDownloadTriggerData"
        +        },
        +        {
        +          "$ref": "#/$defs/KeyboardDownloadTriggerData"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Trigger"
        +}
      • changedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / required
        Previous value: -[
        -  "operation_key",
        -  "selector",
        -  "locator",
        -  "selector_strategy",
        -  "selector_normalized",
        -  "status",
        -  "artifact",
        -  "receipt"
        -]New value: +[
        +  "operation_key",
        +  "status",
        +  "artifact",
        +  "receipt"
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / oneOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "trigger"
        +      ]
        +    },
        +    "properties": {
        +      "locator": {
        +        "type": "string"
        +      },
        +      "selector": {
        +        "type": "string"
        +      },
        +      "selector_normalized": {
        +        "type": "boolean"
        +      },
        +      "selector_strategy": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "selector",
        +      "locator",
        +      "selector_strategy",
        +      "selector_normalized"
        +    ]
        +  },
        +  {
        +    "not": {
        +      "anyOf": [
        +        {
        +          "required": [
        +            "selector"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "locator"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "selector_strategy"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "selector_normalized"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "target_kind"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "frame_selectors"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "shadow_hosts"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "role"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "name"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "exact"
        +          ]
        +        }
        +      ]
        +    },
        +    "properties": {
        +      "trigger": {
        +        "not": {
        +          "type": "null"
        +        }
        +      }
        +    },
        +    "required": [
        +      "trigger"
        +    ]
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / exact
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Exact"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / frame_selectors
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Frame Selectors"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / locator / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / locator / default
        Added value: +null
      • removedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / locator / type
        Removed value: -"string"
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Name"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / role
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Role"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector / default
        Added value: +null
      • removedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector / type
        Removed value: -"string"
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_normalized / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_normalized / default
        Added value: +null
      • removedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_normalized / type
        Removed value: -"boolean"
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_strategy / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_strategy / default
        Added value: +null
      • removedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_strategy / type
        Removed value: -"string"
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / shadow_hosts
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Shadow Hosts"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / target_kind
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "selector",
        +        "accessibility"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Target Kind"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / trigger
        Added value: +{
        +  "anyOf": [
        +    {
        +      "discriminator": {
        +        "mapping": {
        +          "coordinate": "#/$defs/CoordinateDownloadTriggerData",
        +          "keyboard": "#/$defs/KeyboardDownloadTriggerData"
        +        },
        +        "propertyName": "kind"
        +      },
        +      "oneOf": [
        +        {
        +          "$ref": "#/$defs/CoordinateDownloadTriggerData"
        +        },
        +        {
        +          "$ref": "#/$defs/KeyboardDownloadTriggerData"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Trigger"
        +}
      • changedOutput schema / $defs / ElementClickAndDownloadSuccessData / required
        Previous value: -[
        -  "operation_key",
        -  "selector",
        -  "locator",
        -  "selector_strategy",
        -  "selector_normalized",
        -  "status",
        -  "artifact",
        -  "receipt"
        -]New value: +[
        +  "operation_key",
        +  "status",
        +  "artifact",
        +  "receipt"
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / oneOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "trigger"
        +      ]
        +    },
        +    "properties": {
        +      "locator": {
        +        "type": "string"
        +      },
        +      "selector": {
        +        "type": "string"
        +      },
        +      "selector_normalized": {
        +        "type": "boolean"
        +      },
        +      "selector_strategy": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "selector",
        +      "locator",
        +      "selector_strategy",
        +      "selector_normalized"
        +    ]
        +  },
        +  {
        +    "not": {
        +      "anyOf": [
        +        {
        +          "required": [
        +            "selector"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "locator"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "selector_strategy"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "selector_normalized"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "target_kind"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "frame_selectors"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "shadow_hosts"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "role"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "name"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "exact"
        +          ]
        +        }
        +      ]
        +    },
        +    "properties": {
        +      "trigger": {
        +        "not": {
        +          "type": "null"
        +        }
        +      }
        +    },
        +    "required": [
        +      "trigger"
        +    ]
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / exact
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Exact"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / frame_selectors
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Frame Selectors"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / locator / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / locator / default
        Added value: +null
      • removedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / locator / type
        Removed value: -"string"
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Name"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / role
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Role"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector / default
        Added value: +null
      • removedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector / type
        Removed value: -"string"
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_normalized / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_normalized / default
        Added value: +null
      • removedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_normalized / type
        Removed value: -"boolean"
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_strategy / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_strategy / default
        Added value: +null
      • removedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_strategy / type
        Removed value: -"string"
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / shadow_hosts
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Shadow Hosts"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / target_kind
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "selector",
        +        "accessibility"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Target Kind"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / trigger
        Added value: +{
        +  "anyOf": [
        +    {
        +      "discriminator": {
        +        "mapping": {
        +          "coordinate": "#/$defs/CoordinateDownloadTriggerData",
        +          "keyboard": "#/$defs/KeyboardDownloadTriggerData"
        +        },
        +        "propertyName": "kind"
        +      },
        +      "oneOf": [
        +        {
        +          "$ref": "#/$defs/CoordinateDownloadTriggerData"
        +        },
        +        {
        +          "$ref": "#/$defs/KeyboardDownloadTriggerData"
        +        }
        +      ]
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Trigger"
        +}
      • changedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / required
        Previous value: -[
        -  "operation_key",
        -  "selector",
        -  "locator",
        -  "selector_strategy",
        -  "selector_normalized",
        -  "status",
        -  "artifact",
        -  "receipt"
        -]New value: +[
        +  "operation_key",
        +  "status",
        +  "artifact",
        +  "receipt"
        +]
      • addedOutput schema / $defs / KeyboardDownloadTriggerData
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "interval": {
        +      "maximum": 2,
        +      "minimum": 0,
        +      "title": "Interval",
        +      "type": "number"
        +    },
        +    "keys": {
        +      "$ref": "#/$defs/KeyboardInputMetadata"
        +    },
        +    "kind": {
        +      "const": "keyboard",
        +      "title": "Kind",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "keys",
        +    "interval"
        +  ],
        +  "title": "KeyboardDownloadTriggerData",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / KeyboardInputMetadata
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "length": {
        +      "minimum": 0,
        +      "title": "Length",
        +      "type": "integer"
        +    },
        +    "provided": {
        +      "title": "Provided",
        +      "type": "boolean"
        +    },
        +    "redacted": {
        +      "const": true,
        +      "title": "Redacted",
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "provided",
        +    "length",
        +    "redacted"
        +  ],
        +  "title": "KeyboardInputMetadata",
        +  "type": "object"
        +}
    • Addedelement_click_and_upload
    • Changedelement_find4 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "AccessibilityTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A unique accessibility role/name target within an optional DOM scope.",
        +    "properties": {
        +      "exact": {
        +        "default": true,
        +        "title": "Exact",
        +        "type": "boolean"
        +      },
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "accessibility",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "maxLength": 500,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "role": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Role",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "role"
        +    ],
        +    "title": "AccessibilityTargetInput",
        +    "type": "object"
        +  },
        +  "SelectorTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A selector target with optional frame and shadow-root scope.",
        +    "properties": {
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "selector",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "selector": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "selector"
        +    ],
        +    "title": "SelectorTargetInput",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / selector / anyOf
        Added value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "discriminator": {
        +      "mapping": {
        +        "accessibility": "#/$defs/AccessibilityTargetInput",
        +        "selector": "#/$defs/SelectorTargetInput"
        +      },
        +      "propertyName": "kind"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/$defs/SelectorTargetInput"
        +      },
        +      {
        +        "$ref": "#/$defs/AccessibilityTargetInput"
        +      }
        +    ]
        +  }
        +]
      • removedInput schema / properties / selector / type
        Removed value: -"string"
      • changedInput schema / properties / timeout / type
        Previous value: -"integer"New value: +"number"
    • Changedelement_find_all4 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "AccessibilityTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A unique accessibility role/name target within an optional DOM scope.",
        +    "properties": {
        +      "exact": {
        +        "default": true,
        +        "title": "Exact",
        +        "type": "boolean"
        +      },
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "accessibility",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "maxLength": 500,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "role": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Role",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "role"
        +    ],
        +    "title": "AccessibilityTargetInput",
        +    "type": "object"
        +  },
        +  "SelectorTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A selector target with optional frame and shadow-root scope.",
        +    "properties": {
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "selector",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "selector": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "selector"
        +    ],
        +    "title": "SelectorTargetInput",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / selector / anyOf
        Added value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "discriminator": {
        +      "mapping": {
        +        "accessibility": "#/$defs/AccessibilityTargetInput",
        +        "selector": "#/$defs/SelectorTargetInput"
        +      },
        +      "propertyName": "kind"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/$defs/SelectorTargetInput"
        +      },
        +      {
        +        "$ref": "#/$defs/AccessibilityTargetInput"
        +      }
        +    ]
        +  }
        +]
      • removedInput schema / properties / selector / type
        Removed value: -"string"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "count": {
        -            "title": "Count",
        -            "type": "integer"
        -          },
        -          "elements": {
        -            "items": {
        -              "additionalProperties": true,
        -              "type": "object"
        -            },
        -            "title": "Elements",
        -            "type": "array"
        -          },
        -          "limit": {
        -            "title": "Limit",
        -            "type": "integer"
        -          },
        -          "locator": {
        -            "title": "Locator",
        -            "type": "string"
        -          },
        -          "meta": {
        -            "additionalProperties": true,
        -            "title": "Meta",
        -            "type": "object"
        -          },
        -          "returned": {
        -            "title": "Returned",
        -            "type": "integer"
        -          },
        -          "selector": {
        -            "title": "Selector",
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "title": "Selector Normalized",
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "title": "Selector Strategy",
        -            "type": "string"
        -          },
        -          "truncated": {
        -            "title": "Truncated",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "count",
        -          "returned",
        -          "limit",
        -          "truncated",
        -          "elements",
        -          "meta"
        -        ],
        -        "title": "ElementFindAllData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "count": {
        +            "title": "Count",
        +            "type": "integer"
        +          },
        +          "elements": {
        +            "items": {
        +              "additionalProperties": true,
        +              "type": "object"
        +            },
        +            "title": "Elements",
        +            "type": "array"
        +          },
        +          "exact": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Exact"
        +          },
        +          "frame_selectors": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Frame Selectors",
        +            "type": "array"
        +          },
        +          "limit": {
        +            "title": "Limit",
        +            "type": "integer"
        +          },
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "meta": {
        +            "additionalProperties": true,
        +            "title": "Meta",
        +            "type": "object"
        +          },
        +          "name": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Name"
        +          },
        +          "returned": {
        +            "title": "Returned",
        +            "type": "integer"
        +          },
        +          "role": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Role"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          },
        +          "shadow_hosts": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Shadow Hosts",
        +            "type": "array"
        +          },
        +          "target_kind": {
        +            "default": "selector",
        +            "enum": [
        +              "selector",
        +              "accessibility"
        +            ],
        +            "title": "Target Kind",
        +            "type": "string"
        +          },
        +          "truncated": {
        +            "title": "Truncated",
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "count",
        +          "returned",
        +          "limit",
        +          "truncated",
        +          "elements",
        +          "meta"
        +        ],
        +        "title": "ElementFindAllData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedelement_get_attribute4 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "AccessibilityTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A unique accessibility role/name target within an optional DOM scope.",
        +    "properties": {
        +      "exact": {
        +        "default": true,
        +        "title": "Exact",
        +        "type": "boolean"
        +      },
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "accessibility",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "maxLength": 500,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "role": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Role",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "role"
        +    ],
        +    "title": "AccessibilityTargetInput",
        +    "type": "object"
        +  },
        +  "SelectorTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A selector target with optional frame and shadow-root scope.",
        +    "properties": {
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "selector",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "selector": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "selector"
        +    ],
        +    "title": "SelectorTargetInput",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / selector / anyOf
        Added value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "discriminator": {
        +      "mapping": {
        +        "accessibility": "#/$defs/AccessibilityTargetInput",
        +        "selector": "#/$defs/SelectorTargetInput"
        +      },
        +      "propertyName": "kind"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/$defs/SelectorTargetInput"
        +      },
        +      {
        +        "$ref": "#/$defs/AccessibilityTargetInput"
        +      }
        +    ]
        +  }
        +]
      • removedInput schema / properties / selector / type
        Removed value: -"string"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "attribute": {
        -            "title": "Attribute",
        -            "type": "string"
        -          },
        -          "locator": {
        -            "title": "Locator",
        -            "type": "string"
        -          },
        -          "selector": {
        -            "title": "Selector",
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "title": "Selector Normalized",
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "title": "Selector Strategy",
        -            "type": "string"
        -          },
        -          "value": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "title": "Value"
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "attribute",
        -          "value"
        -        ],
        -        "title": "ElementGetAttributeData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "attribute": {
        +            "title": "Attribute",
        +            "type": "string"
        +          },
        +          "exact": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Exact"
        +          },
        +          "frame_selectors": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Frame Selectors",
        +            "type": "array"
        +          },
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "name": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Name"
        +          },
        +          "role": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Role"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          },
        +          "shadow_hosts": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Shadow Hosts",
        +            "type": "array"
        +          },
        +          "target_kind": {
        +            "default": "selector",
        +            "enum": [
        +              "selector",
        +              "accessibility"
        +            ],
        +            "title": "Target Kind",
        +            "type": "string"
        +          },
        +          "value": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "title": "Value"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "attribute",
        +          "value"
        +        ],
        +        "title": "ElementGetAttributeData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedelement_get_html4 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "AccessibilityTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A unique accessibility role/name target within an optional DOM scope.",
        +    "properties": {
        +      "exact": {
        +        "default": true,
        +        "title": "Exact",
        +        "type": "boolean"
        +      },
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "accessibility",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "maxLength": 500,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "role": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Role",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "role"
        +    ],
        +    "title": "AccessibilityTargetInput",
        +    "type": "object"
        +  },
        +  "SelectorTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A selector target with optional frame and shadow-root scope.",
        +    "properties": {
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "selector",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "selector": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "selector"
        +    ],
        +    "title": "SelectorTargetInput",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / selector / anyOf
        Added value: +[
        +  {
        +    "const": "",
        +    "type": "string"
        +  },
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "discriminator": {
        +      "mapping": {
        +        "accessibility": "#/$defs/AccessibilityTargetInput",
        +        "selector": "#/$defs/SelectorTargetInput"
        +      },
        +      "propertyName": "kind"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/$defs/SelectorTargetInput"
        +      },
        +      {
        +        "$ref": "#/$defs/AccessibilityTargetInput"
        +      }
        +    ]
        +  }
        +]
      • removedInput schema / properties / selector / type
        Removed value: -"string"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "html": {
        -            "title": "Html",
        -            "type": "string"
        -          },
        -          "locator": {
        -            "title": "Locator",
        -            "type": "string"
        -          },
        -          "selector": {
        -            "title": "Selector",
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "title": "Selector Normalized",
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "title": "Selector Strategy",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "html",
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized"
        -        ],
        -        "title": "ElementGetHtmlData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "exact": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Exact"
        +          },
        +          "frame_selectors": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Frame Selectors",
        +            "type": "array"
        +          },
        +          "html": {
        +            "title": "Html",
        +            "type": "string"
        +          },
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "name": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Name"
        +          },
        +          "role": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Role"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          },
        +          "shadow_hosts": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Shadow Hosts",
        +            "type": "array"
        +          },
        +          "target_kind": {
        +            "default": "selector",
        +            "enum": [
        +              "selector",
        +              "accessibility"
        +            ],
        +            "title": "Target Kind",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "html"
        +        ],
        +        "title": "ElementGetHtmlData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedelement_get_property4 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "AccessibilityTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A unique accessibility role/name target within an optional DOM scope.",
        +    "properties": {
        +      "exact": {
        +        "default": true,
        +        "title": "Exact",
        +        "type": "boolean"
        +      },
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "accessibility",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "maxLength": 500,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "role": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Role",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "role"
        +    ],
        +    "title": "AccessibilityTargetInput",
        +    "type": "object"
        +  },
        +  "SelectorTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A selector target with optional frame and shadow-root scope.",
        +    "properties": {
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "selector",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "selector": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "selector"
        +    ],
        +    "title": "SelectorTargetInput",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / selector / anyOf
        Added value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "discriminator": {
        +      "mapping": {
        +        "accessibility": "#/$defs/AccessibilityTargetInput",
        +        "selector": "#/$defs/SelectorTargetInput"
        +      },
        +      "propertyName": "kind"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/$defs/SelectorTargetInput"
        +      },
        +      {
        +        "$ref": "#/$defs/AccessibilityTargetInput"
        +      }
        +    ]
        +  }
        +]
      • removedInput schema / properties / selector / type
        Removed value: -"string"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "locator": {
        -            "title": "Locator",
        -            "type": "string"
        -          },
        -          "property": {
        -            "title": "Property",
        -            "type": "string"
        -          },
        -          "selector": {
        -            "title": "Selector",
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "title": "Selector Normalized",
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "title": "Selector Strategy",
        -            "type": "string"
        -          },
        -          "value": {
        -            "title": "Value"
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "property",
        -          "value"
        -        ],
        -        "title": "ElementGetPropertyData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "exact": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Exact"
        +          },
        +          "frame_selectors": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Frame Selectors",
        +            "type": "array"
        +          },
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "name": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Name"
        +          },
        +          "property": {
        +            "title": "Property",
        +            "type": "string"
        +          },
        +          "role": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Role"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          },
        +          "shadow_hosts": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Shadow Hosts",
        +            "type": "array"
        +          },
        +          "target_kind": {
        +            "default": "selector",
        +            "enum": [
        +              "selector",
        +              "accessibility"
        +            ],
        +            "title": "Target Kind",
        +            "type": "string"
        +          },
        +          "value": {
        +            "title": "Value"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "property",
        +          "value"
        +        ],
        +        "title": "ElementGetPropertyData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedelement_get_text4 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "AccessibilityTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A unique accessibility role/name target within an optional DOM scope.",
        +    "properties": {
        +      "exact": {
        +        "default": true,
        +        "title": "Exact",
        +        "type": "boolean"
        +      },
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "accessibility",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "maxLength": 500,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "role": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Role",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "role"
        +    ],
        +    "title": "AccessibilityTargetInput",
        +    "type": "object"
        +  },
        +  "SelectorTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A selector target with optional frame and shadow-root scope.",
        +    "properties": {
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "selector",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "selector": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "selector"
        +    ],
        +    "title": "SelectorTargetInput",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / selector / anyOf
        Added value: +[
        +  {
        +    "const": "",
        +    "type": "string"
        +  },
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "discriminator": {
        +      "mapping": {
        +        "accessibility": "#/$defs/AccessibilityTargetInput",
        +        "selector": "#/$defs/SelectorTargetInput"
        +      },
        +      "propertyName": "kind"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/$defs/SelectorTargetInput"
        +      },
        +      {
        +        "$ref": "#/$defs/AccessibilityTargetInput"
        +      }
        +    ]
        +  }
        +]
      • removedInput schema / properties / selector / type
        Removed value: -"string"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "locator": {
        -            "title": "Locator",
        -            "type": "string"
        -          },
        -          "selector": {
        -            "title": "Selector",
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "title": "Selector Normalized",
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "title": "Selector Strategy",
        -            "type": "string"
        -          },
        -          "text": {
        -            "title": "Text",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "text",
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized"
        -        ],
        -        "title": "ElementGetTextData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "exact": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Exact"
        +          },
        +          "frame_selectors": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Frame Selectors",
        +            "type": "array"
        +          },
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "name": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Name"
        +          },
        +          "role": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Role"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          },
        +          "shadow_hosts": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Shadow Hosts",
        +            "type": "array"
        +          },
        +          "target_kind": {
        +            "default": "selector",
        +            "enum": [
        +              "selector",
        +              "accessibility"
        +            ],
        +            "title": "Target Kind",
        +            "type": "string"
        +          },
        +          "text": {
        +            "title": "Text",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "text"
        +        ],
        +        "title": "ElementGetTextData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedelement_hover6 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "AccessibilityTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A unique accessibility role/name target within an optional DOM scope.",
        +    "properties": {
        +      "exact": {
        +        "default": true,
        +        "title": "Exact",
        +        "type": "boolean"
        +      },
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "accessibility",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "maxLength": 500,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "role": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Role",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "role"
        +    ],
        +    "title": "AccessibilityTargetInput",
        +    "type": "object"
        +  },
        +  "SelectorTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A selector target with optional frame and shadow-root scope.",
        +    "properties": {
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "selector",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "selector": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "selector"
        +    ],
        +    "title": "SelectorTargetInput",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / selector / anyOf
        Added value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "discriminator": {
        +      "mapping": {
        +        "accessibility": "#/$defs/AccessibilityTargetInput",
        +        "selector": "#/$defs/SelectorTargetInput"
        +      },
        +      "propertyName": "kind"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/$defs/SelectorTargetInput"
        +      },
        +      {
        +        "$ref": "#/$defs/AccessibilityTargetInput"
        +      }
        +    ]
        +  }
        +]
      • changedInput schema / properties / selector / description
        Previous value: -"CSS/XPath/DrissionPage element locator."New value: +"String locator or structured element target."
      • removedInput schema / properties / selector / type
        Removed value: -"string"
      • changedInput schema / properties / timeout / type
        Previous value: -"integer"New value: +"number"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "locator": {
        -            "title": "Locator",
        -            "type": "string"
        -          },
        -          "offset_x": {
        -            "anyOf": [
        -              {
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "title": "Offset X"
        -          },
        -          "offset_y": {
        -            "anyOf": [
        -              {
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "title": "Offset Y"
        -          },
        -          "selector": {
        -            "title": "Selector",
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "title": "Selector Normalized",
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "title": "Selector Strategy",
        -            "type": "string"
        -          },
        -          "url": {
        -            "title": "Url",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "url",
        -          "offset_x",
        -          "offset_y"
        -        ],
        -        "title": "ElementHoverData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "exact": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Exact"
        +          },
        +          "frame_selectors": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Frame Selectors",
        +            "type": "array"
        +          },
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "name": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Name"
        +          },
        +          "offset_x": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "title": "Offset X"
        +          },
        +          "offset_y": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "title": "Offset Y"
        +          },
        +          "role": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Role"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          },
        +          "shadow_hosts": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Shadow Hosts",
        +            "type": "array"
        +          },
        +          "target_kind": {
        +            "default": "selector",
        +            "enum": [
        +              "selector",
        +              "accessibility"
        +            ],
        +            "title": "Target Kind",
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "url",
        +          "offset_x",
        +          "offset_y"
        +        ],
        +        "title": "ElementHoverData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedelement_scroll_into_view6 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "AccessibilityTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A unique accessibility role/name target within an optional DOM scope.",
        +    "properties": {
        +      "exact": {
        +        "default": true,
        +        "title": "Exact",
        +        "type": "boolean"
        +      },
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "accessibility",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "maxLength": 500,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "role": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Role",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "role"
        +    ],
        +    "title": "AccessibilityTargetInput",
        +    "type": "object"
        +  },
        +  "SelectorTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A selector target with optional frame and shadow-root scope.",
        +    "properties": {
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "selector",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "selector": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "selector"
        +    ],
        +    "title": "SelectorTargetInput",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / selector / anyOf
        Added value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "discriminator": {
        +      "mapping": {
        +        "accessibility": "#/$defs/AccessibilityTargetInput",
        +        "selector": "#/$defs/SelectorTargetInput"
        +      },
        +      "propertyName": "kind"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/$defs/SelectorTargetInput"
        +      },
        +      {
        +        "$ref": "#/$defs/AccessibilityTargetInput"
        +      }
        +    ]
        +  }
        +]
      • changedInput schema / properties / selector / description
        Previous value: -"CSS/XPath/DrissionPage element locator."New value: +"String locator or structured element target."
      • removedInput schema / properties / selector / type
        Removed value: -"string"
      • changedInput schema / properties / timeout / type
        Previous value: -"integer"New value: +"number"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "center": {
        -            "title": "Center",
        -            "type": "boolean"
        -          },
        -          "locator": {
        -            "title": "Locator",
        -            "type": "string"
        -          },
        -          "selector": {
        -            "title": "Selector",
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "title": "Selector Normalized",
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "title": "Selector Strategy",
        -            "type": "string"
        -          },
        -          "url": {
        -            "title": "Url",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "center",
        -          "url"
        -        ],
        -        "title": "ElementScrollIntoViewData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "center": {
        +            "title": "Center",
        +            "type": "boolean"
        +          },
        +          "exact": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Exact"
        +          },
        +          "frame_selectors": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Frame Selectors",
        +            "type": "array"
        +          },
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "name": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Name"
        +          },
        +          "role": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Role"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          },
        +          "shadow_hosts": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Shadow Hosts",
        +            "type": "array"
        +          },
        +          "target_kind": {
        +            "default": "selector",
        +            "enum": [
        +              "selector",
        +              "accessibility"
        +            ],
        +            "title": "Target Kind",
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "center",
        +          "url"
        +        ],
        +        "title": "ElementScrollIntoViewData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedelement_select6 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "AccessibilityTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A unique accessibility role/name target within an optional DOM scope.",
        +    "properties": {
        +      "exact": {
        +        "default": true,
        +        "title": "Exact",
        +        "type": "boolean"
        +      },
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "accessibility",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "maxLength": 500,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "role": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Role",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "role"
        +    ],
        +    "title": "AccessibilityTargetInput",
        +    "type": "object"
        +  },
        +  "SelectorTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A selector target with optional frame and shadow-root scope.",
        +    "properties": {
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "selector",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "selector": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "selector"
        +    ],
        +    "title": "SelectorTargetInput",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / selector / anyOf
        Added value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "discriminator": {
        +      "mapping": {
        +        "accessibility": "#/$defs/AccessibilityTargetInput",
        +        "selector": "#/$defs/SelectorTargetInput"
        +      },
        +      "propertyName": "kind"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/$defs/SelectorTargetInput"
        +      },
        +      {
        +        "$ref": "#/$defs/AccessibilityTargetInput"
        +      }
        +    ]
        +  }
        +]
      • changedInput schema / properties / selector / description
        Previous value: -"CSS/XPath/DrissionPage select locator."New value: +"String locator or structured select target."
      • removedInput schema / properties / selector / type
        Removed value: -"string"
      • changedInput schema / properties / timeout / type
        Previous value: -"integer"New value: +"number"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "by": {
        -            "title": "By",
        -            "type": "string"
        -          },
        -          "locator": {
        -            "title": "Locator",
        -            "type": "string"
        -          },
        -          "selected": {
        -            "const": true,
        -            "title": "Selected",
        -            "type": "boolean"
        -          },
        -          "selector": {
        -            "title": "Selector",
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "title": "Selector Normalized",
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "title": "Selector Strategy",
        -            "type": "string"
        -          },
        -          "value": {
        -            "title": "Value",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "selected",
        -          "by",
        -          "value"
        -        ],
        -        "title": "ElementSelectData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "by": {
        +            "title": "By",
        +            "type": "string"
        +          },
        +          "exact": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Exact"
        +          },
        +          "frame_selectors": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Frame Selectors",
        +            "type": "array"
        +          },
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "name": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Name"
        +          },
        +          "role": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Role"
        +          },
        +          "selected": {
        +            "const": true,
        +            "title": "Selected",
        +            "type": "boolean"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          },
        +          "shadow_hosts": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Shadow Hosts",
        +            "type": "array"
        +          },
        +          "target_kind": {
        +            "default": "selector",
        +            "enum": [
        +              "selector",
        +              "accessibility"
        +            ],
        +            "title": "Target Kind",
        +            "type": "string"
        +          },
        +          "value": {
        +            "title": "Value",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "selected",
        +          "by",
        +          "value"
        +        ],
        +        "title": "ElementSelectData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Addedelement_state_get
    • Changedelement_type5 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "AccessibilityTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A unique accessibility role/name target within an optional DOM scope.",
        +    "properties": {
        +      "exact": {
        +        "default": true,
        +        "title": "Exact",
        +        "type": "boolean"
        +      },
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "accessibility",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "maxLength": 500,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "role": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Role",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "role"
        +    ],
        +    "title": "AccessibilityTargetInput",
        +    "type": "object"
        +  },
        +  "SelectorTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A selector target with optional frame and shadow-root scope.",
        +    "properties": {
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "selector",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "selector": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "selector"
        +    ],
        +    "title": "SelectorTargetInput",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / selector / anyOf
        Added value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "discriminator": {
        +      "mapping": {
        +        "accessibility": "#/$defs/AccessibilityTargetInput",
        +        "selector": "#/$defs/SelectorTargetInput"
        +      },
        +      "propertyName": "kind"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/$defs/SelectorTargetInput"
        +      },
        +      {
        +        "$ref": "#/$defs/AccessibilityTargetInput"
        +      }
        +    ]
        +  }
        +]
      • removedInput schema / properties / selector / type
        Removed value: -"string"
      • changedInput schema / properties / timeout / type
        Previous value: -"integer"New value: +"number"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "changes": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": true,
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null,
        -            "title": "Changes"
        -          },
        -          "cleared": {
        -            "title": "Cleared",
        -            "type": "boolean"
        -          },
        -          "locator": {
        -            "title": "Locator",
        -            "type": "string"
        -          },
        -          "selector": {
        -            "title": "Selector",
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "title": "Selector Normalized",
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "title": "Selector Strategy",
        -            "type": "string"
        -          },
        -          "typed": {
        -            "const": true,
        -            "title": "Typed",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "typed",
        -          "cleared"
        -        ],
        -        "title": "ElementTypeData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "changes": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Changes"
        +          },
        +          "cleared": {
        +            "title": "Cleared",
        +            "type": "boolean"
        +          },
        +          "exact": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Exact"
        +          },
        +          "frame_selectors": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Frame Selectors",
        +            "type": "array"
        +          },
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "name": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Name"
        +          },
        +          "role": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Role"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          },
        +          "shadow_hosts": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Shadow Hosts",
        +            "type": "array"
        +          },
        +          "target_kind": {
        +            "default": "selector",
        +            "enum": [
        +              "selector",
        +              "accessibility"
        +            ],
        +            "title": "Target Kind",
        +            "type": "string"
        +          },
        +          "typed": {
        +            "const": true,
        +            "title": "Typed",
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "typed",
        +          "cleared"
        +        ],
        +        "title": "ElementTypeData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedelement_upload_file5 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "AccessibilityTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A unique accessibility role/name target within an optional DOM scope.",
        +    "properties": {
        +      "exact": {
        +        "default": true,
        +        "title": "Exact",
        +        "type": "boolean"
        +      },
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "accessibility",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "maxLength": 500,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "role": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Role",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "role"
        +    ],
        +    "title": "AccessibilityTargetInput",
        +    "type": "object"
        +  },
        +  "SelectorTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A selector target with optional frame and shadow-root scope.",
        +    "properties": {
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "selector",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "selector": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "selector"
        +    ],
        +    "title": "SelectorTargetInput",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / selector / anyOf
        Added value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "discriminator": {
        +      "mapping": {
        +        "accessibility": "#/$defs/AccessibilityTargetInput",
        +        "selector": "#/$defs/SelectorTargetInput"
        +      },
        +      "propertyName": "kind"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/$defs/SelectorTargetInput"
        +      },
        +      {
        +        "$ref": "#/$defs/AccessibilityTargetInput"
        +      }
        +    ]
        +  }
        +]
      • removedInput schema / properties / selector / type
        Removed value: -"string"
      • changedInput schema / properties / timeout / type
        Previous value: -"integer"New value: +"number"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "file_count": {
        -            "title": "File Count",
        -            "type": "integer"
        -          },
        -          "filenames": {
        -            "items": {
        -              "type": "string"
        -            },
        -            "title": "Filenames",
        -            "type": "array"
        -          },
        -          "locator": {
        -            "title": "Locator",
        -            "type": "string"
        -          },
        -          "selector": {
        -            "title": "Selector",
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "title": "Selector Normalized",
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "title": "Selector Strategy",
        -            "type": "string"
        -          },
        -          "uploaded": {
        -            "const": true,
        -            "title": "Uploaded",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "uploaded",
        -          "file_count",
        -          "filenames"
        -        ],
        -        "title": "ElementUploadFileData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "exact": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Exact"
        +          },
        +          "file_count": {
        +            "title": "File Count",
        +            "type": "integer"
        +          },
        +          "filenames": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Filenames",
        +            "type": "array"
        +          },
        +          "frame_selectors": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Frame Selectors",
        +            "type": "array"
        +          },
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "name": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Name"
        +          },
        +          "role": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Role"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          },
        +          "shadow_hosts": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Shadow Hosts",
        +            "type": "array"
        +          },
        +          "target_kind": {
        +            "default": "selector",
        +            "enum": [
        +              "selector",
        +              "accessibility"
        +            ],
        +            "title": "Target Kind",
        +            "type": "string"
        +          },
        +          "uploaded": {
        +            "const": true,
        +            "title": "Uploaded",
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "uploaded",
        +          "file_count",
        +          "filenames"
        +        ],
        +        "title": "ElementUploadFileData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedframe_find1 field changed
      • changedInput schema / properties / timeout / type
        Previous value: -"integer"New value: +"number"
    • Changedframe_snapshot1 field changed
      • changedInput schema / properties / timeout / type
        Previous value: -"integer"New value: +"number"
    • Changedkeyboard_press2 fields changed
      • addedOutput schema / $defs
        Added value: +{
        +  "KeyboardInputMetadata": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "length": {
        +        "minimum": 0,
        +        "title": "Length",
        +        "type": "integer"
        +      },
        +      "provided": {
        +        "title": "Provided",
        +        "type": "boolean"
        +      },
        +      "redacted": {
        +        "const": true,
        +        "title": "Redacted",
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "provided",
        +      "length",
        +      "redacted"
        +    ],
        +    "title": "KeyboardInputMetadata",
        +    "type": "object"
        +  }
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "interval": {
        -            "title": "Interval",
        -            "type": "number"
        -          },
        -          "keys": {
        -            "title": "Keys",
        -            "type": "string"
        -          },
        -          "url": {
        -            "title": "Url",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "keys",
        -          "interval",
        -          "url"
        -        ],
        -        "title": "KeyboardPressData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "interval": {
        +            "title": "Interval",
        +            "type": "number"
        +          },
        +          "keys": {
        +            "$ref": "#/$defs/KeyboardInputMetadata"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "keys",
        +          "interval",
        +          "url"
        +        ],
        +        "title": "KeyboardPressData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Addednetwork_blocked_urls_set
    • Addedpage_accessibility_snapshot
    • Addedpage_click_xy
    • Addedpage_dialog_observe
    • Addedpage_dialog_respond
    • Changedpage_evaluate1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "max_chars": {
        -            "title": "Max Chars",
        -            "type": "integer"
        -          },
        -          "original_json_chars": {
        -            "title": "Original Json Chars",
        -            "type": "integer"
        -          },
        -          "result": {
        -            "title": "Result"
        -          },
        -          "result_type": {
        -            "title": "Result Type",
        -            "type": "string"
        -          },
        -          "truncated": {
        -            "title": "Truncated",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "result",
        -          "result_type",
        -          "truncated",
        -          "original_json_chars",
        -          "max_chars"
        -        ],
        -        "title": "PageEvaluateData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "max_chars": {
        +            "title": "Max Chars",
        +            "type": "integer"
        +          },
        +          "non_finite_number": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "Infinity",
        +                  "-Infinity",
        +                  "NaN"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Non Finite Number"
        +          },
        +          "original_json_chars": {
        +            "title": "Original Json Chars",
        +            "type": "integer"
        +          },
        +          "result": {
        +            "title": "Result"
        +          },
        +          "result_type": {
        +            "title": "Result Type",
        +            "type": "string"
        +          },
        +          "truncated": {
        +            "title": "Truncated",
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "result",
        +          "result_type",
        +          "truncated",
        +          "original_json_chars",
        +          "max_chars"
        +        ],
        +        "title": "PageEvaluateData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Addedpage_export_artifact
    • Addedpage_get_url
    • Addedpage_navigate_with_http_auth
    • Addedpage_observe
    • Addedpage_pointer_drag
    • Changedpage_pointer_drag_element9 fields changed
      • addedInput schema / $defs / ElementSourceInput
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "kind": {
        +      "const": "element",
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "target": {
        +      "$ref": "#/$defs/ElementTargetInput"
        +    }
        +  },
        +  "required": [
        +    "kind",
        +    "target"
        +  ],
        +  "title": "ElementSourceInput",
        +  "type": "object"
        +}
      • addedInput schema / $defs / OffsetDestinationInput / properties / dx
        Added value: +{
        +  "description": "Horizontal delta from the freshly resolved source point.",
        +  "maximum": 10000,
        +  "minimum": -10000,
        +  "title": "Dx",
        +  "type": "number"
        +}
      • addedInput schema / $defs / OffsetDestinationInput / properties / dy
        Added value: +{
        +  "description": "Vertical delta from the freshly resolved source point.",
        +  "maximum": 10000,
        +  "minimum": -10000,
        +  "title": "Dy",
        +  "type": "number"
        +}
      • removedInput schema / $defs / OffsetDestinationInput / properties / x
        Removed value: -{
        -  "maximum": 10000,
        -  "minimum": -10000,
        -  "title": "X",
        -  "type": "number"
        -}
      • removedInput schema / $defs / OffsetDestinationInput / properties / y
        Removed value: -{
        -  "maximum": 10000,
        -  "minimum": -10000,
        -  "title": "Y",
        -  "type": "number"
        -}
      • changedInput schema / $defs / OffsetDestinationInput / required
        Previous value: -[
        -  "kind",
        -  "x",
        -  "y"
        -]New value: +[
        +  "kind",
        +  "dx",
        +  "dy"
        +]
      • removedInput schema / properties / source / $ref
        Removed value: -"#/$defs/ElementTargetInput"
      • addedInput schema / properties / source / anyOf
        Added value: +[
        +  {
        +    "$ref": "#/$defs/ElementTargetInput"
        +  },
        +  {
        +    "$ref": "#/$defs/ElementSourceInput"
        +  }
        +]
      • addedInput schema / properties / source / title
        Added value: +"Source"
    • Addedpage_resize
    • Addedpage_snapshot
    • Changedshadow_find1 field changed
      • changedInput schema / properties / timeout / type
        Previous value: -"integer"New value: +"number"
    • Addedshadow_find_all
    • Changedstorage_get2 fields changed
      • changedInput schema / properties / include_values / default
        Previous value: -trueNew value: +false
      • addedInput schema / properties / include_values / description
        Added value: +"Return storage values instead of redacting non-empty values."
    • Addedtab_switch
    • Changedwait_for_element5 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "AccessibilityTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A unique accessibility role/name target within an optional DOM scope.",
        +    "properties": {
        +      "exact": {
        +        "default": true,
        +        "title": "Exact",
        +        "type": "boolean"
        +      },
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "accessibility",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "maxLength": 500,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "role": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Role",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "role"
        +    ],
        +    "title": "AccessibilityTargetInput",
        +    "type": "object"
        +  },
        +  "SelectorTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A selector target with optional frame and shadow-root scope.",
        +    "properties": {
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "selector",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "selector": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "selector"
        +    ],
        +    "title": "SelectorTargetInput",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / selector / anyOf
        Added value: +[
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "discriminator": {
        +      "mapping": {
        +        "accessibility": "#/$defs/AccessibilityTargetInput",
        +        "selector": "#/$defs/SelectorTargetInput"
        +      },
        +      "propertyName": "kind"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/$defs/SelectorTargetInput"
        +      },
        +      {
        +        "$ref": "#/$defs/AccessibilityTargetInput"
        +      }
        +    ]
        +  }
        +]
      • removedInput schema / properties / selector / type
        Removed value: -"string"
      • changedInput schema / properties / timeout / type
        Previous value: -"integer"New value: +"number"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "found": {
        -            "const": true,
        -            "title": "Found",
        -            "type": "boolean"
        -          },
        -          "locator": {
        -            "title": "Locator",
        -            "type": "string"
        -          },
        -          "selector": {
        -            "title": "Selector",
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "title": "Selector Normalized",
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "title": "Selector Strategy",
        -            "type": "string"
        -          },
        -          "timeout": {
        -            "title": "Timeout",
        -            "type": "number"
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "found",
        -          "timeout"
        -        ],
        -        "title": "WaitForElementData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "exact": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Exact"
        +          },
        +          "found": {
        +            "const": true,
        +            "title": "Found",
        +            "type": "boolean"
        +          },
        +          "frame_selectors": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Frame Selectors",
        +            "type": "array"
        +          },
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "name": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Name"
        +          },
        +          "role": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Role"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          },
        +          "shadow_hosts": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Shadow Hosts",
        +            "type": "array"
        +          },
        +          "target_kind": {
        +            "default": "selector",
        +            "enum": [
        +              "selector",
        +              "accessibility"
        +            ],
        +            "title": "Target Kind",
        +            "type": "string"
        +          },
        +          "timeout": {
        +            "title": "Timeout",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "found",
        +          "timeout"
        +        ],
        +        "title": "WaitForElementData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedwait_for_url1 field changed
      • changedInput schema / properties / timeout / type
        Previous value: -"integer"New value: +"number"
    • Changedwait_until3 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "AccessibilityTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A unique accessibility role/name target within an optional DOM scope.",
        +    "properties": {
        +      "exact": {
        +        "default": true,
        +        "title": "Exact",
        +        "type": "boolean"
        +      },
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "accessibility",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "name": {
        +        "anyOf": [
        +          {
        +            "maxLength": 500,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "title": "Name"
        +      },
        +      "role": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Role",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "role"
        +    ],
        +    "title": "AccessibilityTargetInput",
        +    "type": "object"
        +  },
        +  "SelectorTargetInput": {
        +    "additionalProperties": false,
        +    "description": "A selector target with optional frame and shadow-root scope.",
        +    "properties": {
        +      "frame_selectors": {
        +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 4,
        +        "title": "Frame Selectors",
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "selector",
        +        "title": "Kind",
        +        "type": "string"
        +      },
        +      "selector": {
        +        "maxLength": 500,
        +        "minLength": 1,
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "shadow_hosts": {
        +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
        +        "items": {
        +          "maxLength": 500,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 8,
        +        "title": "Shadow Hosts",
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "selector"
        +    ],
        +    "title": "SelectorTargetInput",
        +    "type": "object"
        +  }
        +}
      • addedInput schema / properties / selector / anyOf
        Added value: +[
        +  {
        +    "const": "",
        +    "type": "string"
        +  },
        +  {
        +    "maxLength": 500,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "discriminator": {
        +      "mapping": {
        +        "accessibility": "#/$defs/AccessibilityTargetInput",
        +        "selector": "#/$defs/SelectorTargetInput"
        +      },
        +      "propertyName": "kind"
        +    },
        +    "oneOf": [
        +      {
        +        "$ref": "#/$defs/SelectorTargetInput"
        +      },
        +      {
        +        "$ref": "#/$defs/AccessibilityTargetInput"
        +      }
        +    ]
        +  }
        +]
      • removedInput schema / properties / selector / type
        Removed value: -"string"
  2. 31 tool updatesv0.7.2
    • Addedbrowser_cookies_get
    • Addedelement_find
    • Addedelement_find_all
    • Addedelement_scroll_into_view
    • Addedelement_select
    • Addedelement_type
    • Addedelement_upload_file
    • Addedframe_find
    • Addedkeyboard_press
    • Addednetwork_listen_start
    • Addednetwork_listen_stop
    • Addedpage_console_logs
    • Removedpage_dialog_respond
    • Removedpage_get_url
    • Addedpage_go_back
    • Removedpage_observe
    • Removedpage_pointer_drag
    • Addedpage_pointer_drag_element
    • Addedpage_refresh
    • Removedpage_resize
    • Addedpage_screenshot
    • Addedpage_screenshot_save
    • Addedpage_scroll
    • Removedpage_snapshot
    • Addedshadow_find
    • Removedshadow_find_all
    • Addedtab_close
    • Removedtab_switch
    • Addedwait_for_element
    • Addedwait_for_url
    • Addedwait_until
  3. 43 tool updatesv0.7.2
    • Addedelement_check
    • Changedelement_click3 fields changed
      • addedInput schema / properties / button
        Added value: +{
        +  "default": "left",
        +  "description": "Native pointer button to use.",
        +  "enum": [
        +    "left",
        +    "right",
        +    "middle"
        +  ],
        +  "title": "Button",
        +  "type": "string"
        +}
      • addedInput schema / properties / click_count
        Added value: +{
        +  "default": 1,
        +  "description": "Native click count; 2 requests double-click semantics.",
        +  "maximum": 2,
        +  "minimum": 1,
        +  "title": "Click Count",
        +  "type": "integer"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "changes": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "active_element": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "properties": {
        -                      "selector": {
        -                        "type": "string"
        -                      },
        -                      "tag": {
        -                        "type": "string"
        -                      },
        -                      "text": {
        -                        "type": "string"
        -                      }
        -                    },
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ]
        -              },
        -              "appeared_texts": {
        -                "items": {
        -                  "type": "string"
        -                },
        -                "type": "array"
        -              },
        -              "console_errors_added": {
        -                "type": "integer"
        -              },
        -              "console_warnings_added": {
        -                "type": "integer"
        -              },
        -              "counts_after": {
        -                "additionalProperties": {
        -                  "type": "integer"
        -                },
        -                "type": "object"
        -              },
        -              "counts_before": {
        -                "additionalProperties": {
        -                  "type": "integer"
        -                },
        -                "type": "object"
        -              },
        -              "counts_delta": {
        -                "additionalProperties": {
        -                  "type": "integer"
        -                },
        -                "type": "object"
        -              },
        -              "new_console_messages": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "column": {
        -                      "type": "integer"
        -                    },
        -                    "index": {
        -                      "type": "integer"
        -                    },
        -                    "level": {
        -                      "type": "string"
        -                    },
        -                    "line": {
        -                      "type": "integer"
        -                    },
        -                    "source": {
        -                      "type": "string"
        -                    },
        -                    "text": {
        -                      "type": "string"
        -                    },
        -                    "url": {
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "index",
        -                    "level",
        -                    "text",
        -                    "url",
        -                    "line",
        -                    "column",
        -                    "source"
        -                  ],
        -                  "title": "ConsoleLog",
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "ready_state": {
        -                "type": "string"
        -              },
        -              "removed_texts": {
        -                "items": {
        -                  "type": "string"
        -                },
        -                "type": "array"
        -              },
        -              "title_after": {
        -                "type": "string"
        -              },
        -              "title_before": {
        -                "type": "string"
        -              },
        -              "title_changed": {
        -                "type": "boolean"
        -              },
        -              "url_after": {
        -                "type": "string"
        -              },
        -              "url_before": {
        -                "type": "string"
        -              },
        -              "url_changed": {
        -                "type": "boolean"
        -              }
        -            },
        -            "required": [
        -              "url_before",
        -              "url_after",
        -              "url_changed",
        -              "title_before",
        -              "title_after",
        -              "title_changed",
        -              "ready_state",
        -              "counts_before",
        -              "counts_after",
        -              "counts_delta",
        -              "appeared_texts",
        -              "removed_texts",
        -              "active_element",
        -              "console_errors_added",
        -              "console_warnings_added",
        -              "new_console_messages"
        -            ],
        -            "title": "PageObservationChanges",
        -            "type": "object"
        -          },
        -          "locator": {
        -            "type": "string"
        -          },
        -          "selector": {
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "type": "string"
        -          },
        -          "url": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "url"
        -        ],
        -        "title": "ElementClickData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "button": {
        +            "enum": [
        +              "left",
        +              "right",
        +              "middle"
        +            ],
        +            "title": "Button",
        +            "type": "string"
        +          },
        +          "changes": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Changes"
        +          },
        +          "click_count": {
        +            "enum": [
        +              1,
        +              2
        +            ],
        +            "title": "Click Count",
        +            "type": "integer"
        +          },
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "url",
        +          "button",
        +          "click_count"
        +        ],
        +        "title": "ElementClickData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Addedelement_click_and_download
    • Removedelement_find
    • Removedelement_find_all
    • Changedelement_get_attribute1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "attribute": {
        -            "type": "string"
        -          },
        -          "locator": {
        -            "type": "string"
        -          },
        -          "selector": {
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "type": "string"
        -          },
        -          "value": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "attribute",
        -          "value"
        -        ],
        -        "title": "ElementGetAttributeData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "attribute": {
        +            "title": "Attribute",
        +            "type": "string"
        +          },
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          },
        +          "value": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "title": "Value"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "attribute",
        +          "value"
        +        ],
        +        "title": "ElementGetAttributeData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedelement_get_html1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "html": {
        -            "type": "string"
        -          },
        -          "locator": {
        -            "type": "string"
        -          },
        -          "selector": {
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "html",
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized"
        -        ],
        -        "title": "ElementGetHtmlData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "html": {
        +            "title": "Html",
        +            "type": "string"
        +          },
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "html",
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized"
        +        ],
        +        "title": "ElementGetHtmlData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedelement_get_property1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "locator": {
        -            "type": "string"
        -          },
        -          "property": {
        -            "type": "string"
        -          },
        -          "selector": {
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "type": "string"
        -          },
        -          "value": {}
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "property",
        -          "value"
        -        ],
        -        "title": "ElementGetPropertyData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "property": {
        +            "title": "Property",
        +            "type": "string"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          },
        +          "value": {
        +            "title": "Value"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "property",
        +          "value"
        +        ],
        +        "title": "ElementGetPropertyData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedelement_get_text1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "locator": {
        -            "type": "string"
        -          },
        -          "selector": {
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "type": "string"
        -          },
        -          "text": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "text",
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized"
        -        ],
        -        "title": "ElementGetTextData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "title": "Selector Normalized",
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "title": "Selector Strategy",
        +            "type": "string"
        +          },
        +          "text": {
        +            "title": "Text",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "text",
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized"
        +        ],
        +        "title": "ElementGetTextData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Addedelement_hover
    • Removedelement_type
    • Removedform_inspect
    • Addedframe_list
    • Addedframe_snapshot
    • Addednetwork_listen_wait
    • Removedpage_click_xy
    • Changedpage_close1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "closed": {
        -            "const": true
        -          }
        -        },
        -        "required": [
        -          "closed"
        -        ],
        -        "title": "PageCloseData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "closed": {
        +            "const": true,
        +            "title": "Closed",
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "closed"
        +        ],
        +        "title": "PageCloseData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Removedpage_console_logs
    • Addedpage_dialog_respond
    • Changedpage_evaluate1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "max_chars": {
        -            "type": "integer"
        -          },
        -          "original_json_chars": {
        -            "type": "integer"
        -          },
        -          "result": {},
        -          "result_type": {
        -            "type": "string"
        -          },
        -          "truncated": {
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "result",
        -          "result_type",
        -          "truncated",
        -          "original_json_chars",
        -          "max_chars"
        -        ],
        -        "title": "PageEvaluateData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "max_chars": {
        +            "title": "Max Chars",
        +            "type": "integer"
        +          },
        +          "original_json_chars": {
        +            "title": "Original Json Chars",
        +            "type": "integer"
        +          },
        +          "result": {
        +            "title": "Result"
        +          },
        +          "result_type": {
        +            "title": "Result Type",
        +            "type": "string"
        +          },
        +          "truncated": {
        +            "title": "Truncated",
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "result",
        +          "result_type",
        +          "truncated",
        +          "original_json_chars",
        +          "max_chars"
        +        ],
        +        "title": "PageEvaluateData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedpage_get_url1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "url": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "url"
        -        ],
        -        "title": "PageGetUrlData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "url"
        +        ],
        +        "title": "PageGetUrlData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Removedpage_go_back
    • Changedpage_go_forward1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "url": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "url"
        -        ],
        -        "title": "PageGoForwardData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "url"
        +        ],
        +        "title": "PageGoForwardData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedpage_navigate1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "changes": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "active_element": {
        -                "anyOf": [
        -                  {
        -                    "additionalProperties": true,
        -                    "properties": {
        -                      "selector": {
        -                        "type": "string"
        -                      },
        -                      "tag": {
        -                        "type": "string"
        -                      },
        -                      "text": {
        -                        "type": "string"
        -                      }
        -                    },
        -                    "type": "object"
        -                  },
        -                  {
        -                    "type": "null"
        -                  }
        -                ]
        -              },
        -              "appeared_texts": {
        -                "items": {
        -                  "type": "string"
        -                },
        -                "type": "array"
        -              },
        -              "console_errors_added": {
        -                "type": "integer"
        -              },
        -              "console_warnings_added": {
        -                "type": "integer"
        -              },
        -              "counts_after": {
        -                "additionalProperties": {
        -                  "type": "integer"
        -                },
        -                "type": "object"
        -              },
        -              "counts_before": {
        -                "additionalProperties": {
        -                  "type": "integer"
        -                },
        -                "type": "object"
        -              },
        -              "counts_delta": {
        -                "additionalProperties": {
        -                  "type": "integer"
        -                },
        -                "type": "object"
        -              },
        -              "new_console_messages": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "column": {
        -                      "type": "integer"
        -                    },
        -                    "index": {
        -                      "type": "integer"
        -                    },
        -                    "level": {
        -                      "type": "string"
        -                    },
        -                    "line": {
        -                      "type": "integer"
        -                    },
        -                    "source": {
        -                      "type": "string"
        -                    },
        -                    "text": {
        -                      "type": "string"
        -                    },
        -                    "url": {
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "index",
        -                    "level",
        -                    "text",
        -                    "url",
        -                    "line",
        -                    "column",
        -                    "source"
        -                  ],
        -                  "title": "ConsoleLog",
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "ready_state": {
        -                "type": "string"
        -              },
        -              "removed_texts": {
        -                "items": {
        -                  "type": "string"
        -                },
        -                "type": "array"
        -              },
        -              "title_after": {
        -                "type": "string"
        -              },
        -              "title_before": {
        -                "type": "string"
        -              },
        -              "title_changed": {
        -                "type": "boolean"
        -              },
        -              "url_after": {
        -                "type": "string"
        -              },
        -              "url_before": {
        -                "type": "string"
        -              },
        -              "url_changed": {
        -                "type": "boolean"
        -              }
        -            },
        -            "required": [
        -              "url_before",
        -              "url_after",
        -              "url_changed",
        -              "title_before",
        -              "title_after",
        -              "title_changed",
        -              "ready_state",
        -              "counts_before",
        -              "counts_after",
        -              "counts_delta",
        -              "appeared_texts",
        -              "removed_texts",
        -              "active_element",
        -              "console_errors_added",
        -              "console_warnings_added",
        -              "new_console_messages"
        -            ],
        -            "title": "PageObservationChanges",
        -            "type": "object"
        -          },
        -          "final_url": {
        -            "type": "string"
        -          },
        -          "new_tab": {
        -            "type": "boolean"
        -          },
        -          "tab_id": {
        -            "type": "string"
        -          },
        -          "url": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "url",
        -          "final_url",
        -          "new_tab",
        -          "tab_id"
        -        ],
        -        "title": "PageNavigateData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "changes": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Changes"
        +          },
        +          "final_url": {
        +            "title": "Final Url",
        +            "type": "string"
        +          },
        +          "new_tab": {
        +            "title": "New Tab",
        +            "type": "boolean"
        +          },
        +          "tab_id": {
        +            "title": "Tab Id",
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "url",
        +          "final_url",
        +          "new_tab",
        +          "tab_id"
        +        ],
        +        "title": "PageNavigateData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedpage_observe1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "active_element": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": true,
        -                "properties": {
        -                  "selector": {
        -                    "type": "string"
        -                  },
        -                  "tag": {
        -                    "type": "string"
        -                  },
        -                  "text": {
        -                    "type": "string"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ]
        -          },
        -          "console": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "available": {
        -                "type": "boolean"
        -              },
        -              "count": {
        -                "type": "integer"
        -              },
        -              "error_count": {
        -                "type": "integer"
        -              },
        -              "listening": {
        -                "type": "boolean"
        -              },
        -              "next_cursor": {
        -                "type": "integer"
        -              },
        -              "recent": {
        -                "items": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "column": {
        -                      "type": "integer"
        -                    },
        -                    "index": {
        -                      "type": "integer"
        -                    },
        -                    "level": {
        -                      "type": "string"
        -                    },
        -                    "line": {
        -                      "type": "integer"
        -                    },
        -                    "source": {
        -                      "type": "string"
        -                    },
        -                    "text": {
        -                      "type": "string"
        -                    },
        -                    "url": {
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "index",
        -                    "level",
        -                    "text",
        -                    "url",
        -                    "line",
        -                    "column",
        -                    "source"
        -                  ],
        -                  "title": "ConsoleLog",
        -                  "type": "object"
        -                },
        -                "type": "array"
        -              },
        -              "total": {
        -                "type": "integer"
        -              },
        -              "warning_count": {
        -                "type": "integer"
        -              }
        -            },
        -            "required": [
        -              "available",
        -              "listening",
        -              "count",
        -              "total",
        -              "next_cursor",
        -              "error_count",
        -              "warning_count",
        -              "recent"
        -            ],
        -            "title": "ConsoleSummary",
        -            "type": "object"
        -          },
        -          "counts": {
        -            "additionalProperties": {
        -              "type": "integer"
        -            },
        -            "type": "object"
        -          },
        -          "limits": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "max_text_chars": {
        -                "type": "integer"
        -              },
        -              "max_texts": {
        -                "type": "integer"
        -              }
        -            },
        -            "required": [
        -              "max_texts",
        -              "max_text_chars"
        -            ],
        -            "title": "ObservationLimits",
        -            "type": "object"
        -          },
        -          "ready_state": {
        -            "type": "string"
        -          },
        -          "text_samples": {
        -            "items": {
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "title": {
        -            "type": "string"
        -          },
        -          "url": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "url",
        -          "title",
        -          "ready_state",
        -          "counts",
        -          "text_samples",
        -          "active_element",
        -          "console",
        -          "limits"
        -        ],
        -        "title": "PageObservation",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "active_element": {
        +            "title": "Active Element"
        +          },
        +          "console": {
        +            "additionalProperties": true,
        +            "title": "Console",
        +            "type": "object"
        +          },
        +          "counts": {
        +            "additionalProperties": {
        +              "type": "integer"
        +            },
        +            "title": "Counts",
        +            "type": "object"
        +          },
        +          "limits": {
        +            "additionalProperties": true,
        +            "title": "Limits",
        +            "type": "object"
        +          },
        +          "ready_state": {
        +            "title": "Ready State",
        +            "type": "string"
        +          },
        +          "text_samples": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Text Samples",
        +            "type": "array"
        +          },
        +          "title": {
        +            "title": "Title",
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "url",
        +          "title",
        +          "ready_state",
        +          "counts",
        +          "text_samples",
        +          "active_element",
        +          "console",
        +          "limits"
        +        ],
        +        "title": "PageObservation",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Addedpage_pointer_drag
    • Addedpage_pointer_move
    • Removedpage_refresh
    • Changedpage_resize1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "height": {
        -            "type": "integer"
        -          },
        -          "width": {
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "width",
        -          "height"
        -        ],
        -        "title": "PageResizeData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "height": {
        +            "title": "Height",
        +            "type": "integer"
        +          },
        +          "width": {
        +            "title": "Width",
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "width",
        +          "height"
        +        ],
        +        "title": "PageResizeData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Removedpage_screenshot
    • Removedpage_screenshot_save
    • Changedpage_snapshot1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "buttons": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "action": {
        -                  "type": "string"
        -                },
        -                "attributes": {
        -                  "additionalProperties": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "type": "object"
        -                },
        -                "href": {
        -                  "type": "string"
        -                },
        -                "html": {
        -                  "type": "string"
        -                },
        -                "index": {
        -                  "type": "integer"
        -                },
        -                "method": {
        -                  "type": "string"
        -                },
        -                "selector": {
        -                  "type": "string"
        -                },
        -                "tag": {
        -                  "type": "string"
        -                },
        -                "text": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "tag",
        -                "text",
        -                "selector",
        -                "attributes"
        -              ],
        -              "title": "OutlineElement",
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "counts": {
        -            "additionalProperties": {
        -              "type": "integer"
        -            },
        -            "type": "object"
        -          },
        -          "forms": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "action": {
        -                  "type": "string"
        -                },
        -                "attributes": {
        -                  "additionalProperties": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "type": "object"
        -                },
        -                "href": {
        -                  "type": "string"
        -                },
        -                "html": {
        -                  "type": "string"
        -                },
        -                "index": {
        -                  "type": "integer"
        -                },
        -                "method": {
        -                  "type": "string"
        -                },
        -                "selector": {
        -                  "type": "string"
        -                },
        -                "tag": {
        -                  "type": "string"
        -                },
        -                "text": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "tag",
        -                "text",
        -                "selector",
        -                "attributes"
        -              ],
        -              "title": "OutlineElement",
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "headings": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "action": {
        -                  "type": "string"
        -                },
        -                "attributes": {
        -                  "additionalProperties": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "type": "object"
        -                },
        -                "href": {
        -                  "type": "string"
        -                },
        -                "html": {
        -                  "type": "string"
        -                },
        -                "index": {
        -                  "type": "integer"
        -                },
        -                "method": {
        -                  "type": "string"
        -                },
        -                "selector": {
        -                  "type": "string"
        -                },
        -                "tag": {
        -                  "type": "string"
        -                },
        -                "text": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "tag",
        -                "text",
        -                "selector",
        -                "attributes"
        -              ],
        -              "title": "OutlineElement",
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "inputs": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "action": {
        -                  "type": "string"
        -                },
        -                "attributes": {
        -                  "additionalProperties": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "type": "object"
        -                },
        -                "href": {
        -                  "type": "string"
        -                },
        -                "html": {
        -                  "type": "string"
        -                },
        -                "index": {
        -                  "type": "integer"
        -                },
        -                "method": {
        -                  "type": "string"
        -                },
        -                "selector": {
        -                  "type": "string"
        -                },
        -                "tag": {
        -                  "type": "string"
        -                },
        -                "text": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "tag",
        -                "text",
        -                "selector",
        -                "attributes"
        -              ],
        -              "title": "OutlineElement",
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "limits": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "max_elements": {
        -                "type": "integer"
        -              },
        -              "max_text_chars": {
        -                "type": "integer"
        -              }
        -            },
        -            "required": [
        -              "max_elements",
        -              "max_text_chars"
        -            ],
        -            "title": "PageSnapshotLimits",
        -            "type": "object"
        -          },
        -          "links": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "action": {
        -                  "type": "string"
        -                },
        -                "attributes": {
        -                  "additionalProperties": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "type": "object"
        -                },
        -                "href": {
        -                  "type": "string"
        -                },
        -                "html": {
        -                  "type": "string"
        -                },
        -                "index": {
        -                  "type": "integer"
        -                },
        -                "method": {
        -                  "type": "string"
        -                },
        -                "selector": {
        -                  "type": "string"
        -                },
        -                "tag": {
        -                  "type": "string"
        -                },
        -                "text": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "tag",
        -                "text",
        -                "selector",
        -                "attributes"
        -              ],
        -              "title": "OutlineElement",
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "meta": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "approx_tokens": {
        -                "type": "integer"
        -              },
        -              "json_chars": {
        -                "type": "integer"
        -              },
        -              "truncated": {
        -                "type": "boolean"
        -              }
        -            },
        -            "required": [
        -              "approx_tokens",
        -              "json_chars",
        -              "truncated"
        -            ],
        -            "title": "ResponseMeta",
        -            "type": "object"
        -          },
        -          "text_excerpt": {
        -            "type": "string"
        -          },
        -          "title": {
        -            "type": "string"
        -          },
        -          "truncated": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "elements": {
        -                "type": "boolean"
        -              },
        -              "returned_elements": {
        -                "type": "integer"
        -              },
        -              "text": {
        -                "type": "boolean"
        -              }
        -            },
        -            "required": [
        -              "text",
        -              "elements",
        -              "returned_elements"
        -            ],
        -            "title": "PageSnapshotTruncation",
        -            "type": "object"
        -          },
        -          "url": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "url",
        -          "title",
        -          "text_excerpt",
        -          "headings",
        -          "links",
        -          "buttons",
        -          "inputs",
        -          "forms",
        -          "counts",
        -          "truncated",
        -          "limits",
        -          "meta"
        -        ],
        -        "title": "PageSnapshotData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "buttons": {
        +            "items": {
        +              "additionalProperties": true,
        +              "type": "object"
        +            },
        +            "title": "Buttons",
        +            "type": "array"
        +          },
        +          "counts": {
        +            "additionalProperties": {
        +              "type": "integer"
        +            },
        +            "title": "Counts",
        +            "type": "object"
        +          },
        +          "forms": {
        +            "items": {
        +              "additionalProperties": true,
        +              "type": "object"
        +            },
        +            "title": "Forms",
        +            "type": "array"
        +          },
        +          "headings": {
        +            "items": {
        +              "additionalProperties": true,
        +              "type": "object"
        +            },
        +            "title": "Headings",
        +            "type": "array"
        +          },
        +          "inputs": {
        +            "items": {
        +              "additionalProperties": true,
        +              "type": "object"
        +            },
        +            "title": "Inputs",
        +            "type": "array"
        +          },
        +          "limits": {
        +            "additionalProperties": true,
        +            "title": "Limits",
        +            "type": "object"
        +          },
        +          "links": {
        +            "items": {
        +              "additionalProperties": true,
        +              "type": "object"
        +            },
        +            "title": "Links",
        +            "type": "array"
        +          },
        +          "meta": {
        +            "additionalProperties": true,
        +            "title": "Meta",
        +            "type": "object"
        +          },
        +          "text_excerpt": {
        +            "title": "Text Excerpt",
        +            "type": "string"
        +          },
        +          "title": {
        +            "title": "Title",
        +            "type": "string"
        +          },
        +          "truncated": {
        +            "additionalProperties": true,
        +            "title": "Truncated",
        +            "type": "object"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "url",
        +          "title",
        +          "text_excerpt",
        +          "headings",
        +          "links",
        +          "buttons",
        +          "inputs",
        +          "forms",
        +          "counts",
        +          "truncated",
        +          "limits",
        +          "meta"
        +        ],
        +        "title": "PageSnapshotData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Addedshadow_find_all
    • Addedstorage_clear
    • Addedstorage_get
    • Addedstorage_set
    • Removedtab_close
    • Changedtab_list1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "active_tab_id": {
        -            "type": "string"
        -          },
        -          "count": {
        -            "type": "integer"
        -          },
        -          "tabs": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "active": {
        -                  "type": "boolean"
        -                },
        -                "connected": {
        -                  "type": "boolean"
        -                },
        -                "id": {
        -                  "type": "string"
        -                },
        -                "native_id": {
        -                  "type": "string"
        -                },
        -                "title": {
        -                  "type": "string"
        -                },
        -                "url": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "native_id",
        -                "url",
        -                "title",
        -                "active",
        -                "connected"
        -              ],
        -              "title": "TabSummary",
        -              "type": "object"
        -            },
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "tabs",
        -          "count",
        -          "active_tab_id"
        -        ],
        -        "title": "TabListData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "active_tab_id": {
        +            "title": "Active Tab Id",
        +            "type": "string"
        +          },
        +          "count": {
        +            "title": "Count",
        +            "type": "integer"
        +          },
        +          "tabs": {
        +            "items": {
        +              "additionalProperties": true,
        +              "type": "object"
        +            },
        +            "title": "Tabs",
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "tabs",
        +          "count",
        +          "active_tab_id"
        +        ],
        +        "title": "TabListData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedtab_switch1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "tab": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "active": {
        -                "type": "boolean"
        -              },
        -              "connected": {
        -                "type": "boolean"
        -              },
        -              "id": {
        -                "type": "string"
        -              },
        -              "native_id": {
        -                "type": "string"
        -              },
        -              "title": {
        -                "type": "string"
        -              },
        -              "url": {
        -                "type": "string"
        -              }
        -            },
        -            "required": [
        -              "id",
        -              "native_id",
        -              "url",
        -              "title",
        -              "active",
        -              "connected"
        -            ],
        -            "title": "TabSummary",
        -            "type": "object"
        -          },
        -          "tab_id": {
        -            "type": "string"
        -          },
        -          "url": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "tab",
        -          "tab_id",
        -          "url"
        -        ],
        -        "title": "TabSwitchData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "tab": {
        +            "additionalProperties": true,
        +            "title": "Tab",
        +            "type": "object"
        +          },
        +          "tab_id": {
        +            "title": "Tab Id",
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "tab",
        +          "tab_id",
        +          "url"
        +        ],
        +        "title": "TabSwitchData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Removedwait_for_element
    • Removedwait_for_url
    • Changedwait_time1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "waited_seconds": {
        -            "type": "number"
        -          }
        -        },
        -        "required": [
        -          "waited_seconds"
        -        ],
        -        "title": "WaitTimeData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "waited_seconds": {
        +            "title": "Waited Seconds",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "waited_seconds"
        +        ],
        +        "title": "WaitTimeData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Removedwait_until
  4. 24 tool updatesv0.5.1
    • Changedelement_click4 fields changed
      • addedInput schema / properties / observe
        Added value: +{
        +  "default": false,
        +  "description": "Return a compact before/after page change summary.",
        +  "title": "Observe",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / timeout / maximum
        Added value: +120
      • addedInput schema / properties / timeout / minimum
        Added value: +0
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "locator": {
        -            "type": "string"
        -          },
        -          "selector": {
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "type": "string"
        -          },
        -          "url": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "url"
        -        ],
        -        "title": "ElementClickData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "changes": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "active_element": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "properties": {
        +                      "selector": {
        +                        "type": "string"
        +                      },
        +                      "tag": {
        +                        "type": "string"
        +                      },
        +                      "text": {
        +                        "type": "string"
        +                      }
        +                    },
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ]
        +              },
        +              "appeared_texts": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "console_errors_added": {
        +                "type": "integer"
        +              },
        +              "console_warnings_added": {
        +                "type": "integer"
        +              },
        +              "counts_after": {
        +                "additionalProperties": {
        +                  "type": "integer"
        +                },
        +                "type": "object"
        +              },
        +              "counts_before": {
        +                "additionalProperties": {
        +                  "type": "integer"
        +                },
        +                "type": "object"
        +              },
        +              "counts_delta": {
        +                "additionalProperties": {
        +                  "type": "integer"
        +                },
        +                "type": "object"
        +              },
        +              "new_console_messages": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "column": {
        +                      "type": "integer"
        +                    },
        +                    "index": {
        +                      "type": "integer"
        +                    },
        +                    "level": {
        +                      "type": "string"
        +                    },
        +                    "line": {
        +                      "type": "integer"
        +                    },
        +                    "source": {
        +                      "type": "string"
        +                    },
        +                    "text": {
        +                      "type": "string"
        +                    },
        +                    "url": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "index",
        +                    "level",
        +                    "text",
        +                    "url",
        +                    "line",
        +                    "column",
        +                    "source"
        +                  ],
        +                  "title": "ConsoleLog",
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "ready_state": {
        +                "type": "string"
        +              },
        +              "removed_texts": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "title_after": {
        +                "type": "string"
        +              },
        +              "title_before": {
        +                "type": "string"
        +              },
        +              "title_changed": {
        +                "type": "boolean"
        +              },
        +              "url_after": {
        +                "type": "string"
        +              },
        +              "url_before": {
        +                "type": "string"
        +              },
        +              "url_changed": {
        +                "type": "boolean"
        +              }
        +            },
        +            "required": [
        +              "url_before",
        +              "url_after",
        +              "url_changed",
        +              "title_before",
        +              "title_after",
        +              "title_changed",
        +              "ready_state",
        +              "counts_before",
        +              "counts_after",
        +              "counts_delta",
        +              "appeared_texts",
        +              "removed_texts",
        +              "active_element",
        +              "console_errors_added",
        +              "console_warnings_added",
        +              "new_console_messages"
        +            ],
        +            "title": "PageObservationChanges",
        +            "type": "object"
        +          },
        +          "locator": {
        +            "type": "string"
        +          },
        +          "selector": {
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "url"
        +        ],
        +        "title": "ElementClickData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedelement_find2 fields changed
      • addedInput schema / properties / timeout / maximum
        Added value: +120
      • addedInput schema / properties / timeout / minimum
        Added value: +0
    • Changedelement_find_all1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "count": {
        -            "type": "integer"
        -          },
        -          "elements": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "action": {
        -                  "type": "string"
        -                },
        -                "attributes": {
        -                  "additionalProperties": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "type": "object"
        -                },
        -                "href": {
        -                  "type": "string"
        -                },
        -                "html": {
        -                  "type": "string"
        -                },
        -                "index": {
        -                  "type": "integer"
        -                },
        -                "method": {
        -                  "type": "string"
        -                },
        -                "selector": {
        -                  "type": "string"
        -                },
        -                "tag": {
        -                  "type": "string"
        -                },
        -                "text": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "tag",
        -                "text",
        -                "selector",
        -                "attributes"
        -              ],
        -              "title": "OutlineElement",
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "limit": {
        -            "type": "integer"
        -          },
        -          "locator": {
        -            "type": "string"
        -          },
        -          "returned": {
        -            "type": "integer"
        -          },
        -          "selector": {
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "type": "string"
        -          },
        -          "truncated": {
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "count",
        -          "returned",
        -          "limit",
        -          "truncated",
        -          "elements"
        -        ],
        -        "title": "ElementFindAllData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "count": {
        +            "type": "integer"
        +          },
        +          "elements": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "action": {
        +                  "type": "string"
        +                },
        +                "attributes": {
        +                  "additionalProperties": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "type": "object"
        +                },
        +                "href": {
        +                  "type": "string"
        +                },
        +                "html": {
        +                  "type": "string"
        +                },
        +                "index": {
        +                  "type": "integer"
        +                },
        +                "method": {
        +                  "type": "string"
        +                },
        +                "selector": {
        +                  "type": "string"
        +                },
        +                "tag": {
        +                  "type": "string"
        +                },
        +                "text": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "index",
        +                "tag",
        +                "text",
        +                "selector",
        +                "attributes"
        +              ],
        +              "title": "OutlineElement",
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "limit": {
        +            "type": "integer"
        +          },
        +          "locator": {
        +            "type": "string"
        +          },
        +          "meta": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "approx_tokens": {
        +                "type": "integer"
        +              },
        +              "json_chars": {
        +                "type": "integer"
        +              },
        +              "truncated": {
        +                "type": "boolean"
        +              }
        +            },
        +            "required": [
        +              "approx_tokens",
        +              "json_chars",
        +              "truncated"
        +            ],
        +            "title": "ResponseMeta",
        +            "type": "object"
        +          },
        +          "returned": {
        +            "type": "integer"
        +          },
        +          "selector": {
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "type": "string"
        +          },
        +          "truncated": {
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "count",
        +          "returned",
        +          "limit",
        +          "truncated",
        +          "elements",
        +          "meta"
        +        ],
        +        "title": "ElementFindAllData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedelement_type4 fields changed
      • addedInput schema / properties / observe
        Added value: +{
        +  "default": false,
        +  "description": "Return a compact before/after page change summary.",
        +  "title": "Observe",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / timeout / maximum
        Added value: +120
      • addedInput schema / properties / timeout / minimum
        Added value: +0
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "cleared": {
        -            "type": "boolean"
        -          },
        -          "locator": {
        -            "type": "string"
        -          },
        -          "selector": {
        -            "type": "string"
        -          },
        -          "selector_normalized": {
        -            "type": "boolean"
        -          },
        -          "selector_strategy": {
        -            "type": "string"
        -          },
        -          "typed": {
        -            "const": true
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "typed",
        -          "cleared"
        -        ],
        -        "title": "ElementTypeData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "changes": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "active_element": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "properties": {
        +                      "selector": {
        +                        "type": "string"
        +                      },
        +                      "tag": {
        +                        "type": "string"
        +                      },
        +                      "text": {
        +                        "type": "string"
        +                      }
        +                    },
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ]
        +              },
        +              "appeared_texts": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "console_errors_added": {
        +                "type": "integer"
        +              },
        +              "console_warnings_added": {
        +                "type": "integer"
        +              },
        +              "counts_after": {
        +                "additionalProperties": {
        +                  "type": "integer"
        +                },
        +                "type": "object"
        +              },
        +              "counts_before": {
        +                "additionalProperties": {
        +                  "type": "integer"
        +                },
        +                "type": "object"
        +              },
        +              "counts_delta": {
        +                "additionalProperties": {
        +                  "type": "integer"
        +                },
        +                "type": "object"
        +              },
        +              "new_console_messages": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "column": {
        +                      "type": "integer"
        +                    },
        +                    "index": {
        +                      "type": "integer"
        +                    },
        +                    "level": {
        +                      "type": "string"
        +                    },
        +                    "line": {
        +                      "type": "integer"
        +                    },
        +                    "source": {
        +                      "type": "string"
        +                    },
        +                    "text": {
        +                      "type": "string"
        +                    },
        +                    "url": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "index",
        +                    "level",
        +                    "text",
        +                    "url",
        +                    "line",
        +                    "column",
        +                    "source"
        +                  ],
        +                  "title": "ConsoleLog",
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "ready_state": {
        +                "type": "string"
        +              },
        +              "removed_texts": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "title_after": {
        +                "type": "string"
        +              },
        +              "title_before": {
        +                "type": "string"
        +              },
        +              "title_changed": {
        +                "type": "boolean"
        +              },
        +              "url_after": {
        +                "type": "string"
        +              },
        +              "url_before": {
        +                "type": "string"
        +              },
        +              "url_changed": {
        +                "type": "boolean"
        +              }
        +            },
        +            "required": [
        +              "url_before",
        +              "url_after",
        +              "url_changed",
        +              "title_before",
        +              "title_after",
        +              "title_changed",
        +              "ready_state",
        +              "counts_before",
        +              "counts_after",
        +              "counts_delta",
        +              "appeared_texts",
        +              "removed_texts",
        +              "active_element",
        +              "console_errors_added",
        +              "console_warnings_added",
        +              "new_console_messages"
        +            ],
        +            "title": "PageObservationChanges",
        +            "type": "object"
        +          },
        +          "cleared": {
        +            "type": "boolean"
        +          },
        +          "locator": {
        +            "type": "string"
        +          },
        +          "selector": {
        +            "type": "string"
        +          },
        +          "selector_normalized": {
        +            "type": "boolean"
        +          },
        +          "selector_strategy": {
        +            "type": "string"
        +          },
        +          "typed": {
        +            "const": true
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "typed",
        +          "cleared"
        +        ],
        +        "title": "ElementTypeData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedform_inspect1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "count": {
        -            "type": "integer"
        -          },
        -          "forms": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "action": {
        -                  "type": "string"
        -                },
        -                "fields": {
        -                  "items": {
        -                    "additionalProperties": false,
        -                    "properties": {
        -                      "attributes": {
        -                        "additionalProperties": {
        -                          "type": [
        -                            "string",
        -                            "null"
        -                          ]
        -                        },
        -                        "type": "object"
        -                      },
        -                      "checked": {
        -                        "type": "boolean"
        -                      },
        -                      "disabled": {
        -                        "type": "boolean"
        -                      },
        -                      "index": {
        -                        "type": "integer"
        -                      },
        -                      "label": {
        -                        "type": "string"
        -                      },
        -                      "name": {
        -                        "type": "string"
        -                      },
        -                      "options": {
        -                        "items": {
        -                          "additionalProperties": false,
        -                          "properties": {
        -                            "selected": {
        -                              "type": "boolean"
        -                            },
        -                            "text": {
        -                              "type": "string"
        -                            },
        -                            "value": {
        -                              "type": "string"
        -                            }
        -                          },
        -                          "required": [
        -                            "text",
        -                            "value",
        -                            "selected"
        -                          ],
        -                          "title": "FormFieldOption",
        -                          "type": "object"
        -                        },
        -                        "type": "array"
        -                      },
        -                      "placeholder": {
        -                        "type": "string"
        -                      },
        -                      "readonly": {
        -                        "type": "boolean"
        -                      },
        -                      "required": {
        -                        "type": "boolean"
        -                      },
        -                      "selector": {
        -                        "type": "string"
        -                      },
        -                      "tag": {
        -                        "type": "string"
        -                      },
        -                      "type": {
        -                        "type": "string"
        -                      },
        -                      "value": {
        -                        "type": [
        -                          "string",
        -                          "null"
        -                        ]
        -                      }
        -                    },
        -                    "required": [
        -                      "index",
        -                      "tag",
        -                      "type",
        -                      "name",
        -                      "label",
        -                      "selector",
        -                      "placeholder",
        -                      "required",
        -                      "disabled",
        -                      "readonly",
        -                      "checked",
        -                      "value",
        -                      "attributes",
        -                      "options"
        -                    ],
        -                    "title": "FormField",
        -                    "type": "object"
        -                  },
        -                  "type": "array"
        -                },
        -                "id": {
        -                  "type": "string"
        -                },
        -                "index": {
        -                  "type": "integer"
        -                },
        -                "method": {
        -                  "type": "string"
        -                },
        -                "name": {
        -                  "type": "string"
        -                },
        -                "selector": {
        -                  "type": "string"
        -                },
        -                "text": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "selector",
        -                "id",
        -                "name",
        -                "method",
        -                "action",
        -                "text",
        -                "fields"
        -              ],
        -              "title": "FormSummary",
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "include_values": {
        -            "type": "boolean"
        -          },
        -          "limits": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "max_fields_per_form": {
        -                "type": "integer"
        -              },
        -              "max_forms": {
        -                "type": "integer"
        -              }
        -            },
        -            "required": [
        -              "max_forms",
        -              "max_fields_per_form"
        -            ],
        -            "title": "FormInspectLimits",
        -            "type": "object"
        -          },
        -          "returned": {
        -            "type": "integer"
        -          },
        -          "selector": {
        -            "type": "string"
        -          },
        -          "truncated": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "fields": {
        -                "type": "boolean"
        -              },
        -              "forms": {
        -                "type": "boolean"
        -              }
        -            },
        -            "required": [
        -              "forms",
        -              "fields"
        -            ],
        -            "title": "FormInspectTruncation",
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "include_values",
        -          "count",
        -          "returned",
        -          "limits",
        -          "truncated",
        -          "forms"
        -        ],
        -        "title": "FormInspectData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "count": {
        +            "type": "integer"
        +          },
        +          "forms": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "action": {
        +                  "type": "string"
        +                },
        +                "fields": {
        +                  "items": {
        +                    "additionalProperties": false,
        +                    "properties": {
        +                      "attributes": {
        +                        "additionalProperties": {
        +                          "type": [
        +                            "string",
        +                            "null"
        +                          ]
        +                        },
        +                        "type": "object"
        +                      },
        +                      "checked": {
        +                        "type": "boolean"
        +                      },
        +                      "disabled": {
        +                        "type": "boolean"
        +                      },
        +                      "index": {
        +                        "type": "integer"
        +                      },
        +                      "label": {
        +                        "type": "string"
        +                      },
        +                      "name": {
        +                        "type": "string"
        +                      },
        +                      "options": {
        +                        "items": {
        +                          "additionalProperties": false,
        +                          "properties": {
        +                            "selected": {
        +                              "type": "boolean"
        +                            },
        +                            "text": {
        +                              "type": "string"
        +                            },
        +                            "value": {
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "text",
        +                            "value",
        +                            "selected"
        +                          ],
        +                          "title": "FormFieldOption",
        +                          "type": "object"
        +                        },
        +                        "type": "array"
        +                      },
        +                      "placeholder": {
        +                        "type": "string"
        +                      },
        +                      "readonly": {
        +                        "type": "boolean"
        +                      },
        +                      "required": {
        +                        "type": "boolean"
        +                      },
        +                      "selector": {
        +                        "type": "string"
        +                      },
        +                      "tag": {
        +                        "type": "string"
        +                      },
        +                      "type": {
        +                        "type": "string"
        +                      },
        +                      "value": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      }
        +                    },
        +                    "required": [
        +                      "index",
        +                      "tag",
        +                      "type",
        +                      "name",
        +                      "label",
        +                      "selector",
        +                      "placeholder",
        +                      "required",
        +                      "disabled",
        +                      "readonly",
        +                      "checked",
        +                      "value",
        +                      "attributes",
        +                      "options"
        +                    ],
        +                    "title": "FormField",
        +                    "type": "object"
        +                  },
        +                  "type": "array"
        +                },
        +                "id": {
        +                  "type": "string"
        +                },
        +                "index": {
        +                  "type": "integer"
        +                },
        +                "method": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                },
        +                "selector": {
        +                  "type": "string"
        +                },
        +                "text": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "index",
        +                "selector",
        +                "id",
        +                "name",
        +                "method",
        +                "action",
        +                "text",
        +                "fields"
        +              ],
        +              "title": "FormSummary",
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "include_values": {
        +            "type": "boolean"
        +          },
        +          "limits": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "max_fields_per_form": {
        +                "type": "integer"
        +              },
        +              "max_forms": {
        +                "type": "integer"
        +              }
        +            },
        +            "required": [
        +              "max_forms",
        +              "max_fields_per_form"
        +            ],
        +            "title": "FormInspectLimits",
        +            "type": "object"
        +          },
        +          "meta": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "approx_tokens": {
        +                "type": "integer"
        +              },
        +              "json_chars": {
        +                "type": "integer"
        +              },
        +              "truncated": {
        +                "type": "boolean"
        +              }
        +            },
        +            "required": [
        +              "approx_tokens",
        +              "json_chars",
        +              "truncated"
        +            ],
        +            "title": "ResponseMeta",
        +            "type": "object"
        +          },
        +          "returned": {
        +            "type": "integer"
        +          },
        +          "selector": {
        +            "type": "string"
        +          },
        +          "truncated": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "fields": {
        +                "type": "boolean"
        +              },
        +              "forms": {
        +                "type": "boolean"
        +              }
        +            },
        +            "required": [
        +              "forms",
        +              "fields"
        +            ],
        +            "title": "FormInspectTruncation",
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "include_values",
        +          "count",
        +          "returned",
        +          "limits",
        +          "truncated",
        +          "forms",
        +          "meta"
        +        ],
        +        "title": "FormInspectData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedpage_close1 field changed
      • changedInput schema / description
        Previous value: -"Empty input schema."New value: +"Empty input schema for tools that don't require arguments."
    • Addedpage_console_logs
    • Addedpage_evaluate
    • Changedpage_get_url1 field changed
      • changedInput schema / description
        Previous value: -"Empty input schema."New value: +"Empty input schema for tools that don't require arguments."
    • Changedpage_go_back1 field changed
      • changedInput schema / description
        Previous value: -"Empty input schema for tools that don't require parameters."New value: +"Empty input schema for tools that don't require arguments."
    • Changedpage_go_forward1 field changed
      • changedInput schema / description
        Previous value: -"Empty input schema for tools that don't require parameters."New value: +"Empty input schema for tools that don't require arguments."
    • Changedpage_navigate3 fields changed
      • addedInput schema / properties / new_tab
        Added value: +{
        +  "default": false,
        +  "description": "Open the URL in a new browser tab instead of the current tab.",
        +  "title": "New Tab",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / observe
        Added value: +{
        +  "default": false,
        +  "description": "Return a compact before/after page change summary.",
        +  "title": "Observe",
        +  "type": "boolean"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "final_url": {
        -            "type": "string"
        -          },
        -          "url": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "url",
        -          "final_url"
        -        ],
        -        "title": "PageNavigateData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "changes": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "active_element": {
        +                "anyOf": [
        +                  {
        +                    "additionalProperties": true,
        +                    "properties": {
        +                      "selector": {
        +                        "type": "string"
        +                      },
        +                      "tag": {
        +                        "type": "string"
        +                      },
        +                      "text": {
        +                        "type": "string"
        +                      }
        +                    },
        +                    "type": "object"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ]
        +              },
        +              "appeared_texts": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "console_errors_added": {
        +                "type": "integer"
        +              },
        +              "console_warnings_added": {
        +                "type": "integer"
        +              },
        +              "counts_after": {
        +                "additionalProperties": {
        +                  "type": "integer"
        +                },
        +                "type": "object"
        +              },
        +              "counts_before": {
        +                "additionalProperties": {
        +                  "type": "integer"
        +                },
        +                "type": "object"
        +              },
        +              "counts_delta": {
        +                "additionalProperties": {
        +                  "type": "integer"
        +                },
        +                "type": "object"
        +              },
        +              "new_console_messages": {
        +                "items": {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "column": {
        +                      "type": "integer"
        +                    },
        +                    "index": {
        +                      "type": "integer"
        +                    },
        +                    "level": {
        +                      "type": "string"
        +                    },
        +                    "line": {
        +                      "type": "integer"
        +                    },
        +                    "source": {
        +                      "type": "string"
        +                    },
        +                    "text": {
        +                      "type": "string"
        +                    },
        +                    "url": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "index",
        +                    "level",
        +                    "text",
        +                    "url",
        +                    "line",
        +                    "column",
        +                    "source"
        +                  ],
        +                  "title": "ConsoleLog",
        +                  "type": "object"
        +                },
        +                "type": "array"
        +              },
        +              "ready_state": {
        +                "type": "string"
        +              },
        +              "removed_texts": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "title_after": {
        +                "type": "string"
        +              },
        +              "title_before": {
        +                "type": "string"
        +              },
        +              "title_changed": {
        +                "type": "boolean"
        +              },
        +              "url_after": {
        +                "type": "string"
        +              },
        +              "url_before": {
        +                "type": "string"
        +              },
        +              "url_changed": {
        +                "type": "boolean"
        +              }
        +            },
        +            "required": [
        +              "url_before",
        +              "url_after",
        +              "url_changed",
        +              "title_before",
        +              "title_after",
        +              "title_changed",
        +              "ready_state",
        +              "counts_before",
        +              "counts_after",
        +              "counts_delta",
        +              "appeared_texts",
        +              "removed_texts",
        +              "active_element",
        +              "console_errors_added",
        +              "console_warnings_added",
        +              "new_console_messages"
        +            ],
        +            "title": "PageObservationChanges",
        +            "type": "object"
        +          },
        +          "final_url": {
        +            "type": "string"
        +          },
        +          "new_tab": {
        +            "type": "boolean"
        +          },
        +          "tab_id": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "url",
        +          "final_url",
        +          "new_tab",
        +          "tab_id"
        +        ],
        +        "title": "PageNavigateData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Addedpage_observe
    • Changedpage_refresh1 field changed
      • changedInput schema / description
        Previous value: -"Empty input schema for tools that don't require parameters."New value: +"Empty input schema for tools that don't require arguments."
    • Changedpage_screenshot1 field changed
      • removedInput schema / properties / path
        Removed value: -{
        -  "default": "",
        -  "description": "Optional local file path to save screenshot",
        -  "title": "Path",
        -  "type": "string"
        -}
    • Addedpage_screenshot_save
    • Changedpage_snapshot1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "buttons": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "action": {
        -                  "type": "string"
        -                },
        -                "attributes": {
        -                  "additionalProperties": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "type": "object"
        -                },
        -                "href": {
        -                  "type": "string"
        -                },
        -                "html": {
        -                  "type": "string"
        -                },
        -                "index": {
        -                  "type": "integer"
        -                },
        -                "method": {
        -                  "type": "string"
        -                },
        -                "selector": {
        -                  "type": "string"
        -                },
        -                "tag": {
        -                  "type": "string"
        -                },
        -                "text": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "tag",
        -                "text",
        -                "selector",
        -                "attributes"
        -              ],
        -              "title": "OutlineElement",
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "counts": {
        -            "additionalProperties": {
        -              "type": "integer"
        -            },
        -            "type": "object"
        -          },
        -          "forms": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "action": {
        -                  "type": "string"
        -                },
        -                "attributes": {
        -                  "additionalProperties": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "type": "object"
        -                },
        -                "href": {
        -                  "type": "string"
        -                },
        -                "html": {
        -                  "type": "string"
        -                },
        -                "index": {
        -                  "type": "integer"
        -                },
        -                "method": {
        -                  "type": "string"
        -                },
        -                "selector": {
        -                  "type": "string"
        -                },
        -                "tag": {
        -                  "type": "string"
        -                },
        -                "text": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "tag",
        -                "text",
        -                "selector",
        -                "attributes"
        -              ],
        -              "title": "OutlineElement",
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "headings": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "action": {
        -                  "type": "string"
        -                },
        -                "attributes": {
        -                  "additionalProperties": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "type": "object"
        -                },
        -                "href": {
        -                  "type": "string"
        -                },
        -                "html": {
        -                  "type": "string"
        -                },
        -                "index": {
        -                  "type": "integer"
        -                },
        -                "method": {
        -                  "type": "string"
        -                },
        -                "selector": {
        -                  "type": "string"
        -                },
        -                "tag": {
        -                  "type": "string"
        -                },
        -                "text": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "tag",
        -                "text",
        -                "selector",
        -                "attributes"
        -              ],
        -              "title": "OutlineElement",
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "inputs": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "action": {
        -                  "type": "string"
        -                },
        -                "attributes": {
        -                  "additionalProperties": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "type": "object"
        -                },
        -                "href": {
        -                  "type": "string"
        -                },
        -                "html": {
        -                  "type": "string"
        -                },
        -                "index": {
        -                  "type": "integer"
        -                },
        -                "method": {
        -                  "type": "string"
        -                },
        -                "selector": {
        -                  "type": "string"
        -                },
        -                "tag": {
        -                  "type": "string"
        -                },
        -                "text": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "tag",
        -                "text",
        -                "selector",
        -                "attributes"
        -              ],
        -              "title": "OutlineElement",
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "limits": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "max_elements": {
        -                "type": "integer"
        -              },
        -              "max_text_chars": {
        -                "type": "integer"
        -              }
        -            },
        -            "required": [
        -              "max_elements",
        -              "max_text_chars"
        -            ],
        -            "title": "PageSnapshotLimits",
        -            "type": "object"
        -          },
        -          "links": {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "action": {
        -                  "type": "string"
        -                },
        -                "attributes": {
        -                  "additionalProperties": {
        -                    "type": [
        -                      "string",
        -                      "null"
        -                    ]
        -                  },
        -                  "type": "object"
        -                },
        -                "href": {
        -                  "type": "string"
        -                },
        -                "html": {
        -                  "type": "string"
        -                },
        -                "index": {
        -                  "type": "integer"
        -                },
        -                "method": {
        -                  "type": "string"
        -                },
        -                "selector": {
        -                  "type": "string"
        -                },
        -                "tag": {
        -                  "type": "string"
        -                },
        -                "text": {
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "index",
        -                "tag",
        -                "text",
        -                "selector",
        -                "attributes"
        -              ],
        -              "title": "OutlineElement",
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "text_excerpt": {
        -            "type": "string"
        -          },
        -          "title": {
        -            "type": "string"
        -          },
        -          "truncated": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "elements": {
        -                "type": "boolean"
        -              },
        -              "returned_elements": {
        -                "type": "integer"
        -              },
        -              "text": {
        -                "type": "boolean"
        -              }
        -            },
        -            "required": [
        -              "text",
        -              "elements",
        -              "returned_elements"
        -            ],
        -            "title": "PageSnapshotTruncation",
        -            "type": "object"
        -          },
        -          "url": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "url",
        -          "title",
        -          "text_excerpt",
        -          "headings",
        -          "links",
        -          "buttons",
        -          "inputs",
        -          "forms",
        -          "counts",
        -          "truncated",
        -          "limits"
        -        ],
        -        "title": "PageSnapshotData",
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": true
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "data"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "error": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "details": {
        -            "additionalProperties": true,
        -            "type": "object"
        -          },
        -          "message": {
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "message"
        -        ],
        -        "type": "object"
        -      },
        -      "message": {
        -        "type": "string"
        -      },
        -      "ok": {
        -        "const": false
        -      }
        -    },
        -    "required": [
        -      "ok",
        -      "message",
        -      "error"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "buttons": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "action": {
        +                  "type": "string"
        +                },
        +                "attributes": {
        +                  "additionalProperties": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "type": "object"
        +                },
        +                "href": {
        +                  "type": "string"
        +                },
        +                "html": {
        +                  "type": "string"
        +                },
        +                "index": {
        +                  "type": "integer"
        +                },
        +                "method": {
        +                  "type": "string"
        +                },
        +                "selector": {
        +                  "type": "string"
        +                },
        +                "tag": {
        +                  "type": "string"
        +                },
        +                "text": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "index",
        +                "tag",
        +                "text",
        +                "selector",
        +                "attributes"
        +              ],
        +              "title": "OutlineElement",
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "counts": {
        +            "additionalProperties": {
        +              "type": "integer"
        +            },
        +            "type": "object"
        +          },
        +          "forms": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "action": {
        +                  "type": "string"
        +                },
        +                "attributes": {
        +                  "additionalProperties": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "type": "object"
        +                },
        +                "href": {
        +                  "type": "string"
        +                },
        +                "html": {
        +                  "type": "string"
        +                },
        +                "index": {
        +                  "type": "integer"
        +                },
        +                "method": {
        +                  "type": "string"
        +                },
        +                "selector": {
        +                  "type": "string"
        +                },
        +                "tag": {
        +                  "type": "string"
        +                },
        +                "text": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "index",
        +                "tag",
        +                "text",
        +                "selector",
        +                "attributes"
        +              ],
        +              "title": "OutlineElement",
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "headings": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "action": {
        +                  "type": "string"
        +                },
        +                "attributes": {
        +                  "additionalProperties": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "type": "object"
        +                },
        +                "href": {
        +                  "type": "string"
        +                },
        +                "html": {
        +                  "type": "string"
        +                },
        +                "index": {
        +                  "type": "integer"
        +                },
        +                "method": {
        +                  "type": "string"
        +                },
        +                "selector": {
        +                  "type": "string"
        +                },
        +                "tag": {
        +                  "type": "string"
        +                },
        +                "text": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "index",
        +                "tag",
        +                "text",
        +                "selector",
        +                "attributes"
        +              ],
        +              "title": "OutlineElement",
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "inputs": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "action": {
        +                  "type": "string"
        +                },
        +                "attributes": {
        +                  "additionalProperties": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "type": "object"
        +                },
        +                "href": {
        +                  "type": "string"
        +                },
        +                "html": {
        +                  "type": "string"
        +                },
        +                "index": {
        +                  "type": "integer"
        +                },
        +                "method": {
        +                  "type": "string"
        +                },
        +                "selector": {
        +                  "type": "string"
        +                },
        +                "tag": {
        +                  "type": "string"
        +                },
        +                "text": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "index",
        +                "tag",
        +                "text",
        +                "selector",
        +                "attributes"
        +              ],
        +              "title": "OutlineElement",
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "limits": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "max_elements": {
        +                "type": "integer"
        +              },
        +              "max_text_chars": {
        +                "type": "integer"
        +              }
        +            },
        +            "required": [
        +              "max_elements",
        +              "max_text_chars"
        +            ],
        +            "title": "PageSnapshotLimits",
        +            "type": "object"
        +          },
        +          "links": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "action": {
        +                  "type": "string"
        +                },
        +                "attributes": {
        +                  "additionalProperties": {
        +                    "type": [
        +                      "string",
        +                      "null"
        +                    ]
        +                  },
        +                  "type": "object"
        +                },
        +                "href": {
        +                  "type": "string"
        +                },
        +                "html": {
        +                  "type": "string"
        +                },
        +                "index": {
        +                  "type": "integer"
        +                },
        +                "method": {
        +                  "type": "string"
        +                },
        +                "selector": {
        +                  "type": "string"
        +                },
        +                "tag": {
        +                  "type": "string"
        +                },
        +                "text": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "index",
        +                "tag",
        +                "text",
        +                "selector",
        +                "attributes"
        +              ],
        +              "title": "OutlineElement",
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "meta": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "approx_tokens": {
        +                "type": "integer"
        +              },
        +              "json_chars": {
        +                "type": "integer"
        +              },
        +              "truncated": {
        +                "type": "boolean"
        +              }
        +            },
        +            "required": [
        +              "approx_tokens",
        +              "json_chars",
        +              "truncated"
        +            ],
        +            "title": "ResponseMeta",
        +            "type": "object"
        +          },
        +          "text_excerpt": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "truncated": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "elements": {
        +                "type": "boolean"
        +              },
        +              "returned_elements": {
        +                "type": "integer"
        +              },
        +              "text": {
        +                "type": "boolean"
        +              }
        +            },
        +            "required": [
        +              "text",
        +              "elements",
        +              "returned_elements"
        +            ],
        +            "title": "PageSnapshotTruncation",
        +            "type": "object"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "url",
        +          "title",
        +          "text_excerpt",
        +          "headings",
        +          "links",
        +          "buttons",
        +          "inputs",
        +          "forms",
        +          "counts",
        +          "truncated",
        +          "limits",
        +          "meta"
        +        ],
        +        "title": "PageSnapshotData",
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": true
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "data"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "error": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "code": {
        +            "type": "string"
        +          },
        +          "details": {
        +            "additionalProperties": true,
        +            "type": "object"
        +          },
        +          "message": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "message": {
        +        "type": "string"
        +      },
        +      "ok": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "ok",
        +      "message",
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Addedtab_close
    • Addedtab_list
    • Addedtab_switch
    • Changedwait_for_element2 fields changed
      • addedInput schema / properties / timeout / maximum
        Added value: +120
      • addedInput schema / properties / timeout / minimum
        Added value: +0
    • Changedwait_for_url2 fields changed
      • addedInput schema / properties / timeout / maximum
        Added value: +120
      • addedInput schema / properties / timeout / minimum
        Added value: +0
    • Changedwait_time2 fields changed
      • addedInput schema / properties / seconds / maximum
        Added value: +120
      • addedInput schema / properties / seconds / minimum
        Added value: +0
    • Addedwait_until
  5. 22 tool updatesv0.5.0
    • Changedelement_click2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Changedelement_find2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Addedelement_find_all
    • Changedelement_get_attribute2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Changedelement_get_html2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Changedelement_get_property2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Changedelement_get_text2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Changedelement_type2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Addedform_inspect
    • Changedpage_click_xy2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Changedpage_close2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Changedpage_get_url2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Changedpage_go_back2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Changedpage_go_forward2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Changedpage_navigate2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Changedpage_refresh2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Changedpage_resize2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Changedpage_screenshot2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Addedpage_snapshot
    • Changedwait_for_element2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Changedwait_for_url2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
    • Changedwait_time2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / additionalProperties
        Removed value: -false
  6. 19 tool updatesv0.4.1
    • First observedelement_click
    • First observedelement_find
    • First observedelement_get_attribute
    • First observedelement_get_html
    • First observedelement_get_property
    • First observedelement_get_text
    • First observedelement_type
    • First observedpage_click_xy
    • First observedpage_close
    • First observedpage_get_url
    • First observedpage_go_back
    • First observedpage_go_forward
    • First observedpage_navigate
    • First observedpage_refresh
    • First observedpage_resize
    • First observedpage_screenshot
    • First observedwait_for_element
    • First observedwait_for_url
    • First observedwait_time

TDQS

A3.5/5.0
Disambiguation4/5

Most tools have clearly distinct scopes via prefixes (page, element, browser, tab, frame, shadow, network, storage, wait). A few pairs overlap in concept (page_screenshot vs page_screenshot_save, element_click vs page_click_xy) but descriptions clarify their different use cases.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern with domain prefixes like page_, element_, browser_, and tab_. This makes the API predictable and easy to navigate despite the large number.

Tool Count1/5

69 tools is extremely excessive for any single MCP server. Even a comprehensive browser automation suite should be split into multiple focused servers to avoid overwhelming agents.

Completeness5/5

The tool surface covers the full browser automation domain: navigation, tabs, elements, frames, shadow DOM, dialogs, network, storage, permissions, downloads, uploads, and waits. No obvious dead ends or missing lifecycle operations.

Maintenance

ActivityActive
ResponsivenessWithin a week

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    An MCP server providing robust browser automation tools for AI assistants, including page navigation, element interaction, and screenshot capabilities. It leverages the DrissionPage library to enable standardized DOM analysis, network monitoring, and complex web task automation.
    17
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    A comprehensive browser automation MCP server providing 149 tools across 13 capability tiers, enabling LLMs to control Chrome/Edge via CDP or BiDi protocols with features like navigation, screenshots, network interception, and more.
    72
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A browser automation MCP server with stealth mode, profile management, and multi-browser support, enabling LLMs to control browsers for tasks like navigation, data extraction, and form filling.
    22
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jumodada/Drissionpage-MCP-Server'

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