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.8 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.8 keeps that registry stable while adding correlated network-listener generations, explicit packet cursors, timeout evidence, cancellation recovery, and tab-owned cleanup. 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.8"

# 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.8.

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.8 | License: Apache 2.0 | Maintained: βœ… Active


πŸ—ΊοΈ Roadmap

Current (v0.8.8)

  • 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=...)

  • Tab-owned network listener tokens, packet cursors, timeout evidence, cancellation-safe packet recovery, and deterministic close cleanup

  • 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.8

Released on 2026-09-08. This release keeps the 69-tool registry while making network listener lifetimes explicit and recoverable:

  • network_listen_start returns a new listener_token, lifecycle state, packet cursor, and startup timing for each listener generation.

  • network_listen_wait accepts the token and reports cumulative consumption, monotonic packet indices, elapsed time, explicit timeout status, and remaining timeout budget.

  • network_listen_stop rejects stale tokens with LISTENER_NOT_FOUND, preventing an old task from stopping a replacement listener on the same tab.

  • Cancelled waits preserve packets already removed by DrissionPage, and tab close performs best-effort listener stop/queue cleanup before native teardown.

  • Real Chromium tests isolate listeners across tabs and run 100 start/stop cycles without active driver or queue residue. The public surface remains 69 tools, zero prompts, and one Skills catalog resource.

Available Tools

69 tools
browser_cache_clearClear Browser CacheA
DestructiveIdempotent

Clear HTTP cache without clearing cookies or Web Storage.

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.

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 disclose destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds the genuinely useful blast-radius detail that cookies and Web Storage survive, which the annotations cannot express.

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

Conciseness5/5

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

A single sentence with zero filler; the verb and the scope exclusion are both 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?

For a one-parameter, annotated tool with an output schema, the description covers the essential scope question. The omission of tab-scoped behavior (that clearing applies to the resolved tab) is a minor gap it could have closed.

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 single tab_id parameter is fully documented in the schema, including the fallback to the current tab. The description adds nothing about tab scoping, so 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?

States a specific verb (clear) and resource (HTTP cache), and immediately delimits scope by naming what is NOT cleared. This cleanly separates it from sibling tools browser_cookies_clear and storage_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 negative scoping ('without clearing cookies or Web Storage') implicitly tells the agent to use this tool when the goal is cache-only eviction and to use the cookie/storage siblings otherwise. There is no explicit when-to-use trigger or prerequisite statement, so it stops short of a 5.

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 CookiesB
DestructiveIdempotent

Clear all cookies from the active browser context.

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds the scope qualifier "active browser context," which is genuinely useful (it does not clear every profile/context), but it omits the practical consequence that clearing all cookies logs the user out of sites and affects the whole context, not just the given tab.

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?

A single front-loaded sentence with no filler; the verb and scope appear immediately. It is efficient, though arguably so terse that it stops short of earning extra credit.

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?

An output schema exists, so return values need not be explained, and the single optional parameter is fully documented in the schema. For a one-parameter clear operation the description is nearly sufficient, with the only real gap being the tab_id-vs-context relationship and the downstream effect on active sessions.

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 tab_id is fully documented in the schema (optional, defaults to current tab), so the description need not restate it. The phrase "active browser context" is loosely related to the tab parameter but adds no syntax or defaulting detail beyond the schema. Baseline 3 applies.

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

Purpose4/5

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

The description gives a specific verb ("Clear") and resource ("all cookies") plus the scope ("active browser context"), so an agent knows exactly what happens. The word "all" implicitly separates it from the singular-sounding browser_cookies_delete, but that sibling is never named, so differentiation relies on inference.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of the closely related siblings browser_cookies_delete, browser_cookies_set, or storage_clear. The agent must infer from the word "all" which sibling to pick. No exclusions or context conditions are stated.

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 CookieB
DestructiveIdempotent

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

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
nameYes
pathNo
domainNo
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is largely covered. The description adds the 'one named cookie' targeting constraint but says nothing about behavior when the cookie is absent (error vs silent no-op) or whether a URL scope implies matching rules. It adds modest 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.

Conciseness4/5

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

A single front-loaded sentence with no filler. It is efficiently sized, though the extreme brevity is part of why coverage gaps remain elsewhere.

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?

An output schema exists and annotations cover safety, so the return behavior need not be described. However, for a destructive 5-parameter tool with low schema coverage, the description omits the tab_id context and any failure semantics, leaving the definition only minimally 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 only 20% (only tab_id is documented), so the description carries added weight. It names url/domain/path as scope controls, which maps to three parameters, but gives no semantics for how each narrows the match, and doesn't relate url vs domain vs path interactions.

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

Purpose4/5

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

The description states a specific verb (Delete), resource (browser cookie), and scope ('one named... with optional URL/domain/path scope'). The word 'one named' implicitly distinguishes it from browser_cookies_clear, but that sibling is never named, so differentiation relies on inference.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance or reference to alternatives. An agent must infer that targeted deletion is preferred over browser_cookies_clear, and nothing explains prerequisites or when scope parameters should be supplied.

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 CookiesB
Read-onlyIdempotent

Read normalized cookies with values redacted by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
all_infoNo
all_domainsNo
include_valuesNoReturn cookie values. Defaults to false to avoid leaking secrets.

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 cover the safety profile (readOnlyHint, destructiveHint=false, idempotent, openWorld). The description adds one useful behavioral fact β€” values are redacted by default β€” but omits what 'normalized' means, what the redaction looks like, and any rate/permission constraints.

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 tight sentence, front-loaded with the verb and the most important behavioral caveat (redaction). Nothing redundant.

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?

Output schema exists, so return values need not be explained, and annotations cover the safety profile. The remaining gap is the undocumented all_info/all_domains semantics, which leaves a small but real ambiguity for a 4-param 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 50%: tab_id and include_values have descriptions, while all_info and all_domains have none. The description reinforces only the include_values default; it does not explain all_info/all_domains, so it does not compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb (read) and resource (cookies), and adds scope qualifiers 'normalized' and 'values redacted by default'. It does not explicitly distinguish itself from storage_get or browser_cookies_set/delete, but the resource 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 Guidelines2/5

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

No when-to-use guidance, no mention of when to prefer this over storage_get, and no note on when include_values should be flipped. An agent must infer usage entirely from the name and schema.

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 CookiesA
DestructiveIdempotent

Set a bounded batch of browser cookies. Successful results preserve accepted metadata while redacting cookie values.

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
cookiesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/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 openWorldHint=true, so safety is covered. The description adds genuinely useful context beyond that: successful results preserve accepted metadata while redacting cookie values, telling the agent that secrets are not echoed back. It omits error behavior for rejected cookies, but the redaction disclosure is real 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?

Two tight sentences with the operation stated first and the outcome disclosure second. Nothing wasted and no burying of key 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?

An output schema exists so return shape need not be explained, and annotations carry the safety profile. However, for a destructive batch write with a nested cookie payload, the description never mentions the batch cap, per-cookie validation failures, or tab targeting nuances, leaving modest gaps.

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

Parameters3/5

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

Schema coverage is only 50%, and the description contributes little parameter detail β€” 'bounded batch' loosely corroborates the maxItems=100/minItems=1 constraint but adds no field-level meaning. The tab_id description lives entirely in the schema, so the description neither compensates for the gap nor contradicts it; 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?

States a specific verb and resource ('Set a bounded batch of browser cookies') and the word 'bounded' signals batch limits. It clearly names the write operation, letting an agent distinguish it from siblings like browser_cookies_get/delete/clear, though it never explicitly names those alternatives.

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 versus browser_cookies_delete, browser_cookies_clear, or storage_set, and no mention of prerequisites such as which tab is targeted. An agent gets no routing help beyond the name.

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 return header names with values redacted; an empty object clears them.

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
headersYesExtra request headers. An empty object clears all configured values.

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 declare destructiveHint=true and idempotentHint=true, but the description adds genuinely useful context the annotations cannot: the operation REPLACES rather than merges ('Replace extra...'), an empty object clears all headers, and returned values are redacted. It does not state scope of destruction beyond headers or any auth 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?

Two tight sentences, zero filler, with the core mutation semantics front-loaded and the clearing/redaction behavior second. Every clause 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?

An output schema exists, so return-format detail is not required, yet the description still flags that values come back redacted, which is helpful. Combined with full annotation coverage and complete parameter docs, little is missing; only usage routing to siblings is absent.

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 both parameters are documented in the schema, including the empty-object-clears semantics. The description repeats rather than extends that information, so the baseline 3 applies; no added syntax or format detail beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ('Replace extra HTTP request headers for the current tab'), making the operation unambiguous. It does not, however, distinguish itself from adjacent siblings such as browser_user_agent_set or network_blocked_urls_set, which also mutate per-tab browser configuration.

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

Usage Guidelines2/5

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

There is no explicit when-to-use, when-not-to-use, or alternative named. The phrase 'for the current tab' hints at scope but the agent gets no routing guidance versus browser_user_agent_set or browser_cache_clear.

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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
permissionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint/openWorldHint, so the safety profile is covered. The description adds genuinely non-obvious behavior: no OS prompt is triggered, the query is scoped to the current document origin, and only one permission is read at a time. That is meaningful context beyond the annotations, though pagination/failure behavior is not addressed.

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; the key differentiator (no OS prompt) is surfaced immediately.

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?

An output schema exists, so return values need no explanation, and rich annotations cover most behavioral concerns. The description supplies origin scoping and the no-prompt guarantee, making it adequate for a two-parameter read tool, with only minor gaps around error cases.

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

Parameters3/5

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

Schema description coverage is 50% (only tab_id is documented; permission has an enum but no description), so baseline is mid-range. The description clarifies that exactly one permission is queried and that origin scoping is automatic, but adds nothing about the enum values or the tab_id fallback semantics beyond what the schema already says.

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

Purpose4/5

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

The description states a specific verb ("Query") and resource ("one browser permission state") with scope ("current document origin"), which implicitly separates it from browser_permission_set and browser_permissions_reset. It does not name those siblings explicitly, so it lands just short of the top band.

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?

Usage is implied rather than stated: the "without opening an operating-system prompt" clause hints this is the non-intrusive read-only alternative, but the description never says when to prefer it over browser_permission_set or browser_permissions_reset. No explicit exclusions or prerequisites are given.

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.
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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?

Annotations declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, and the description does not contradict them. It adds the useful scoping detail that only ONE permission and ONE origin are affected, which bounds the destructive blast radius, but it does not disclose reversibility, whether the change is persisted, or interaction with existing permissions. With rich annotation coverage, a 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?

A single tight sentence with the verb, value enumeration, scope, and context front-loaded. No waste.

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

Completeness4/5

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

Output schema exists, so return values need not be explained. The description covers the action, its bounded scope, and target values. It lacks explicit when-to-use guidance against siblings and does not note prerequisites such as needing a page/context to exist, but is otherwise sufficient for a state-mutating permission 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 50%; origin and tab_id are documented in the schema but setting and permission enums have no descriptions. The description names the three setting values, partially compensating, but adds no semantics for tab_id or how origin interacts with the current context beyond what the schema states. Baseline 3 for moderate 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?

States a specific verb (Set), resource (one permission), and enumerates the exact target values (granted/denied/prompt) and scope (one bounded origin, current Chromium context). An agent can immediately distinguish this from browser_permission_get, browser_permissions_reset, and browser_headers_set.

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 via scope ('one bounded origin in the current Chromium context'), but never states when to use this versus sibling tools like browser_permissions_reset or browser_permission_get, nor does it explain when to specify an origin versus rely on the default. Usage is implied rather than instructed.

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 PermissionsB
DestructiveIdempotent

Reset all Chromium permission overrides in the current browser context.

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.

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 declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds the meaningful detail that the reset clears *all* overrides (not a single permission), but says nothing about reversibility, which permissions are affected, or the tab-scoped nature of the effect.

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 zero waste; the scope of the operation ('all ... overrides') leads the statement.

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?

An output schema exists, so return values need no explanation, and annotations cover the destructive/idempotent profile. However, for a destructive bulk reset the description is thin: it does not say the effect is limited to the current tab, nor what state the permissions revert to, leaving gaps an agent would want before invoking 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% and the single optional tab_id is fully documented in the schema, so the baseline is 3. The description adds nothing about tab scoping beyond implying the 'current browser context'.

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?

Clear specific verb+resource: 'Reset all Chromium permission overrides' names the operation and scope precisely. It is distinguishable from siblings like browser_permission_set/get in spirit, but the description never names those alternatives, so the differentiation is only inferable from the name.

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

Usage Guidelines2/5

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

No when-to-use guidance and no mention of alternatives such as browser_permission_set (which changes a single permission) versus this bulk reset. The agent is left to infer the routing from the tool name alone.

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

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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
platformNo
user_agentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds genuinely new context beyond that: the call returns the previous user agent, meaning the destructive change is reversible via a restore step. It stops short of saying whether the override persists across navigations or tabs.

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

Conciseness5/5

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

A single front-loaded sentence that states the action, the optional qualifier, and the return value with zero filler. Nothing could be cut without losing 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?

An output schema exists for the returned previous UA and annotations cover the mutation semantics, so the core gaps are filled elsewhere. Still missing is any guidance on platform value format or override persistence, leaving an agent with only partial information for a destructive, open-world operation.

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%) β€” only tab_id is documented in the schema, while platform and user_agent are not. The description only repeats that platform is optional, which the schema's null default already conveys, and says nothing about valid platform tokens (e.g., 'Win32', 'MacIntel') or UA string expectations.

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

Purpose4/5

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

The description names a specific verb and resource ('Override the current tab user agent and optional platform') and adds a useful side effect ('returning the previous user agent'). It does not, however, distinguish itself from the sibling browser_headers_set, which also mutates browser identity state.

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?

Usage is only implied: the mention of returning the previous UA hints at a save/restore workflow, but there is no explicit when-to-use, when-not-to-use, or reference to the browser_headers_set alternative. An agent must infer the scenario.

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

element_checkCheck ElementC
Destructive

Set a checkbox or radio element to checked/unchecked.

ParametersJSON Schema
NameRequiredDescriptionDefault
by_jsNoUse JavaScript-backed checking.
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
checkedNoDesired checked state.
timeoutNo
selectorYesString locator or structured checkbox target.

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 cover the safety profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false, openWorldHint=true), so the bar is lower, but the description adds nothing beyond them: no note that it waits up to `timeout`, what happens when the element is not a checkbox/radio, or that the change mutates page/application state irreversibly.

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?

A single front-loaded sentence with zero filler, but for a tool with a union-typed selector, JS fallback flag, timeout, and tab scoping it is arguably under-specified rather than tight.

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?

An output schema exists and annotations carry the safety profile, so returns and risk need not be spelled out. However, the structured selector alternatives (plain selector vs accessibility role/name target) and the destructive/idempotency implications of a state-setting call are never surfaced in prose, leaving it only minimally complete for a 5-parameter mutation 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 description coverage is 80%, so the schema already documents checked, timeout, tab_id, and by_js. The description's 'checked/unchecked' phrasing loosely maps to the `checked` parameter but adds no format, default, or interaction detail 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.

Purpose4/5

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

The description names a specific verb ('Set') and resource ('a checkbox or radio element') plus the target state vocabulary, so the agent can tell it apart from element_select (dropdowns/option lists) and element_state_get (a read). It never explicitly names those siblings, but the mutation intent 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 Guidelines2/5

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

No guidance on when to prefer this over element_click, which can also toggle a checkbox, and no prerequisites stated (element must exist, be actionable, may need scrolling into view). The agent is left to infer usage entirely from the one-line purpose.

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

element_clickClick ElementB
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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

B3.1/5.0
Behavior2/5

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

Annotations already declare non-read-only, destructive, non-idempotent, open-world semantics, so the safety profile is covered. The description adds no behavioral context beyond selector syntax: nothing about navigation/side effects, whether it waits for actionability, or what a timeout does.

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

Conciseness5/5

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

Two short, front-loaded sentences with no filler; the core action is stated first and the selector convention follows. Every sentence earns its place.

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

Completeness3/5

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

With a rich schema, full parameter coverage, an output schema, and annotations, the description is minimally viable. It omits any note on wait/failure behavior or side effects that an agent clicking in a live page would benefit from.

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 restates the selector conventions that the schema's own 'selector' description already documents, adding little new meaning for button, click_count, tab_id, timeout, or observe.

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

Purpose4/5

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

States a specific verb (Click) and resource (element found by CSS selector or XPath), which is enough for an agent to distinguish it from page_click_xy or element_hover. It does not explicitly contrast with siblings such as element_click_and_download or element_check, so it falls short of a 5.

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

Usage Guidelines2/5

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

The description only gives selector-syntax guidance ('bare selectors are CSS; use text:...'), which is invocation syntax rather than when-to-use guidance. There is no statement of when to prefer element_click over element_click_and_download, page_click_xy, or element_check, and no preconditions or exclusions.

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 DownloadB
Destructive

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

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true, so the side-effect profile is covered. The description adds that exactly one trigger is performed, that the call blocks until one download completes, and that the result is an integrity-checked artifact receipt β€” useful behavioral context the annotations do not convey. It does not disclose timeout/failure semantics or what 'safe' means concretely.

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?

A single front-loaded sentence that leads with the trigger action and ends with the deliverable. It is dense but free of filler; it could be slightly shorter but nothing is wasted.

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 output schema is present so return-value explanation is unnecessary, and annotations cover the safety profile. However, for a blocking, destructive download operation, the description omits failure/timeout behavior and the single-download constraint's consequences, leaving the agent to rely on schema defaults.

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 tab_id, timeout, operation_key replay, expected_filename, and expected_mime_type constraints. The description adds only the trigger-type enumeration, which the discriminator schema already provides. Baseline 3 applies when the schema does the heavy lifting.

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?

Names a specific verb set (trigger + await download + return receipt) and a concrete resource (one completed download artifact). Read against siblings like element_click and element_click_and_upload, it is clear this tool is the download variant. It is slightly imprecise in enumerating only 'selector, coordinate, or keyboard' triggers while the schema also supports an accessibility target.

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

Usage Guidelines2/5

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

There is no explicit statement of when to pick this tool over element_click, page_click_xy, or element_click_and_upload, nor any condition/antecedent for use. The 'await one completed download' phrasing only implies usage; an agent must infer the selection rule from the name.

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 UploadB
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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
timeoutNo
selectorYesSelector/accessibility target that opens a file chooser.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, openWorldHint=true, so the mutation profile is covered. The description does add real context beyond them: no native OS picker opens and interception is 'always' removed (a cleanup guarantee), plus files are 'approved' (implying some gating). These details are useful but cryptic and omit permission requirements or failure behavior.

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

Conciseness4/5

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

A single sentence that front-loads the action sequence and contains no filler. It is dense with jargon ('arm', 'inject', 'interception') but every clause maps to a real step in the workflow.

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?

An output schema exists, so return values need not be explained, and annotations carry the safety profile. Still, for a destructive browser-automation tool the description omits what happens if the trigger selector is not found, what 'approved files' means, and any tab/timeout interaction, leaving meaningful gaps.

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 50%, the description must compensate for undocumented params, but it mentions none of the four (paths, selector, timeout, tab_id). It adds no meaning about how 'paths' are supplied or how the trigger selector interacts with the injected files, leaving the coverage gap unfilled.

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

Purpose4/5

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

The description names a specific multi-step operation (arm file chooser, click trigger, inject files, remove interception), which is concrete and distinguishable in concept from a plain click or upload. However, it never names the closely related siblings element_upload_file, element_click, or element_click_and_download, so an agent must infer the distinction from the mechanics rather than being routed explicitly.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no alternatives named. The description implies the tool handles the file-chooser flow but does not say when to prefer it over element_upload_file (direct file input) or element_click (no upload), leaving selection between three overlapping siblings to inference.

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

element_findFind ElementB
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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds locator-interpretation semantics (bare = CSS, text: prefix) but says nothing about not-found behavior, whether the call blocks until the timeout, or whether it errors versus returning empty, which is the one behavioral detail an agent still needs.

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

Conciseness4/5

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

Two short sentences, front-loaded with the primary action and resource. The second sentence carries the locator-syntax rule, though it is nearly verbatim what the input schema already documents, so it earns slightly less than a full mark.

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?

An output schema exists, so return-value explanation is not required, and annotations carry the safety semantics. What remains missing is failure behavior (no match, timeout expiry) and any hint that this is the single-element counterpart to element_find_all, which matters given the dense element_* sibling 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 baseline is 3. The second sentence largely restates the schema's own selector description (bare = CSS, text:..., tag:/css:/xpath:/@attr), and the description says nothing about the accessibility target object, shadow_hosts, frame_selectors, or tab_id, so it adds little beyond structured fields.

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

Purpose4/5

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

States a specific verb and resource (find an element on the page) plus the accepted locator syntax, which is enough for an agent to know what it does. It does not, however, differentiate itself from the many close siblings such as element_find_all, wait_for_element, shadow_find, or frame_find, so the agent gets no routing help.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance. The description never says to prefer this over element_find_all for a single match, over wait_for_element when the element may not yet exist, or over shadow_find/frame_find for scoped lookups. Usage is only implied by the verb 'find'.

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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

A3.7/5.0
Behavior4/5

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

Annotations already declare this as a read-only, idempotent, non-destructive open-world operation, so the safety profile is covered. The description adds useful output behavior beyond annotations: results are bounded text/attribute summaries plus recommended selectors, telling the agent not to expect full DOM content.

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?

A single front-loaded sentence with no filler. It is dense but every clause (matching elements, bounded summaries, recommended selectors, target scenarios) carries information, so little is wasted.

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 full schema coverage, rich annotations, and an output schema, the description only needs to frame intent and usage. It covers the multi-element scope and the shape of the payload, leaving little missing 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?

Schema description coverage is 100% and each parameter (limit, tab_id, selector, include_html) is documented in the schema itself. The description adds no parameter-level detail, so the baseline 3 applies 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.

Purpose4/5

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

States a specific verb and resource (find multiple matching elements) and specifies the scope ('multiple') that separates it from the singular element_find sibling. It does not name the sibling explicitly, so an agent must infer that element_find is the single-element counterpart.

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?

Names the target scenarios ('repeated lists, cards, and tables'), which implies when to prefer this over a single-element find, but never states the alternative tool or any exclusion condition. Usage is implied rather than stated.

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

element_get_attributeGet AttributeC
Read-onlyIdempotent

Get an attribute value from an element

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds nothing beyond that β€” no note on what happens when the attribute is absent, whether it returns null vs. empty string, or whether it waits for the element.

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

Conciseness3/5

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

One short sentence with no waste, but it is terse to the point of under-specification rather than efficiently dense β€” there is room to add routing guidance without bloat.

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?

An output schema exists so return values need not be described, and annotations cover the safety profile. Still, the description leaves the attribute-vs-property distinction and missing-attribute behavior unexplained, which matters for a tool with two plausible 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?

Schema description coverage is 100%: tab_id, selector (with locator-syntax guidance) and attribute are all documented in the schema itself. The description adds no parameter-level meaning, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Get an attribute value from an element'), which an agent can distinguish from siblings like element_get_property or element_get_text in principle. However, it never names or contrasts those siblings, so the differentiation is left to inference.

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 vs. element_get_property (attribute vs. live DOM property) or element_get_html, and no prerequisite or precondition stated. The agent gets no routing signal.

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

element_get_htmlGet HTMLB
Read-onlyIdempotent

Get HTML from an element or the whole page

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, covering the safety and idempotency profile. The description adds little beyond scope, and an output schema exists so return values needn't be described. It also doesn't mention that HTML is the raw serialized DOM (vs. rendered text), which would meaningfully disambiguate output shape.

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 short sentence with no filler; the scope qualifier is front-loaded. Nothing redundant or padding.

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 an extraction tool with full schema coverage, an output schema, and rich annotations, the missing pieces are disambiguation from sibling extractors and whether HTML means raw markup or rendered content. Adequate but with clear gaps given the crowded sibling 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 documents both parameters thoroughly (tab_id defaulting to current tab, selector accepting 'text:...' for text matching and empty for whole page). The description adds only the phrasing 'element or the whole page', which is redundant with the schema's 'empty means whole page'. Baseline 3 for a fully covered schema.

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

Purpose4/5

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

States a specific verb and resource ('Get HTML') and adds scope ('from an element or the whole page'), which distinguishes it from sibling text/metadata extractors like element_get_text and element_get_attribute. It does not, however, name any sibling explicitly, so differentiation still requires reading other definitions.

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

Usage Guidelines2/5

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

No when-to-use guidance, no when-not-to-use, and no alternatives named. The description uses 'or the whole page' but doesn't say when whole-page retrieval is preferable to element extraction, so the agent must infer from siblings.

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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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.6/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 fully covered elsewhere. The description adds the useful notion that the value is 'live' runtime state, but says nothing about behavior when the element or property is missing, which is the main remaining behavioral gap.

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

Conciseness5/5

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

A single front-loaded sentence with zero filler; the verb, target, and an illustrative example are all packed into one line.

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

Completeness4/5

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

For a simple read-only getter with full annotation coverage, complete parameter docs, and an output schema, the description is nearly sufficient. It leaves only edge-case behavior (missing element, undefined property) unstated, 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 all three parameters are already documented in the schema, including the property name and selector syntax guidance. The description only echoes the property concept with an example ('input's current value') and adds no syntax or format detail beyond the schema.

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

Purpose4/5

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

States a specific verb (get) and resource (live DOM property value from an element) and gives a concrete example (an input's current value). The word 'live' subtly distinguishes it from the static-attribute sibling element_get_attribute, but it never names that sibling explicitly, so it stops short of a 5.

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

Usage Guidelines3/5

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

Usage is only implied: the 'live' qualifier hints this is for current runtime state versus static HTML attributes, which nudges the agent toward element_get_attribute as an alternative. There is no explicit when-to-use, when-not-to-use, or named alternative guidance.

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

element_get_textGet TextC
Read-onlyIdempotent

Get text from an element or the whole page

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is fully covered. The description adds no behavioral context beyond them β€” nothing about what text is returned (visible text vs. textContent), whitespace handling, or behavior on multiple matches.

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?

A single front-loaded sentence with zero waste, but that brevity is achieved by omitting rather than compressing useful information. Efficient, though borderline under-specified.

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?

An output schema exists so return values need not be described, and the input schema is fully annotated. However, for a tool with rich selector/accessibility targeting options, the description leaves routing and matching behavior entirely to the schema, making it only minimally 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 100% and the schema itself documents tab_id and the selector semantics (CSS/XPath, empty = whole page, text:... matching, accessibility targets). The description adds no parameter detail on top of that, so the baseline of 3 applies.

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

Purpose4/5

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

Specific verb+resource ('Get text') with a stated scope: an element or the whole page. It is clear what the tool does, but it does nothing to distinguish itself from close siblings like element_get_html or element_get_attribute, which an agent could easily confuse it with.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of alternatives (e.g. use element_get_html for markup, element_get_attribute for attributes), and no prerequisites or preconditions. The agent must infer routing from the name alone.

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

element_hoverHover ElementC
Destructive

Move the mouse over an element.

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

C2.3/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, openWorldHint=true, and idempotentHint=false, so the safety profile is covered. The description adds no behavioral context, such as what side effects hovering may trigger or whether the element must be scrolled into view, and it does not contradict 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.

Conciseness3/5

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

The description is a single front-loaded sentence with no wasted words, but it is too minimal for a 5-parameter tool with nested selector types and should at least clarify the hover mechanics.

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

Completeness2/5

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

Given the parameter count, nested selector schema, output schema, and sibling tools, the description is significantly incomplete. It omits usage context, selector handling, timeout behavior, and any behavioral caveats beyond what annotations already state.

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

Parameters3/5

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

Schema coverage is 80%, so the schema documents most parameters including the selector union and offset fields. The description adds no parameter meaning beyond what the schema already provides, which is the baseline for high schema coverage.

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

Purpose3/5

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

The description states a specific action (move mouse) on a specific resource (element), but it largely restates the title and does not distinguish this tool from nearby 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 Guidelines1/5

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

There is no indication of when to use hover instead of alternatives, no prerequisites, and no mention of related tools such as page_pointer_move or element_click.

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 ViewB
Destructive

Scroll an element into the viewport before a later action.

ParametersJSON Schema
NameRequiredDescriptionDefault
centerNoCenter the element in the viewport.
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
timeoutNo
selectorYesString locator or structured element target.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare the operation's profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false, openWorldHint=true), lowering the bar. The description adds nothing beyond them: it does not say what happens if the element is never found within `timeout`, whether scrolling waits for the element to exist, or whether it mutates the DOM/scroll position. For an operation flagged destructive, that silence is a real gap.

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?

A single short sentence with no waste and the action front-loaded. It earns its place but is thin enough that it reads as under-specification rather than economical writing.

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?

An output schema exists, so return values need not be explained, and annotations carry the safety profile. Still, for a tool with a timeout and a wait-implied contract, the description should say what a timeout/failure means; that omission leaves the agent guessing at the practical contract.

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% and the schema itself documents `center`, `tab_id`, and the dual-form `selector` clearly, so the baseline is met. The description contributes nothing about parameters, so it does not rise above the schema-provided baseline.

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

Purpose4/5

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

States a specific verb (scroll) and resource (element), plus the viewport scope, so the intent is unambiguous. It does not explicitly distinguish itself from the sibling page_scroll, which the agent could also reach for, so it falls short of a 5.

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

Usage Guidelines3/5

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

"before a later action" implies the preparatory use case, which is a genuine contextual cue. However, there is no explicit when-not guidance and no mention of page_scroll as the broader alternative, so usage is only suggested, not directed.

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

element_selectSelect Element OptionC
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.
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
timeoutNo
selectorYesString locator or structured select target.

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 declare destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing on top of that – it doesn't mention that page state is mutated, whether change events are dispatched, or what happens if the option is absent – so it earns only the minimum credit for not contradicting 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.

Conciseness4/5

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

A single front-loaded sentence with zero filler; the mode list is placed at the end where it belongs. It is efficient, though its brevity is a symptom of under-specification rather than disciplined editing.

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?

An output schema exists, so return values need no explanation, but this is a destructive, non-idempotent mutation with a complex selector union (plain string, selector target with frame/shadow scope, or accessibility target) and nothing in the description covers the structured target forms, timeout, or tab targeting. Most critically, it never clarifies that this applies to native select elements, leaving the agent to guess against siblings like element_click for custom dropdowns.

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 80%, so the schema already documents 'by', 'value', 'tab_id' and the selector union. The description's 'by value, text, or index' merely restates the enum and adds no syntax, format, or fallback detail beyond the structured fields. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource (select an option from a select element) plus the three selection modes, which is concrete enough for an agent to know what happens. It does not distinguish itself from nearby siblings such as element_click or element_check, which is where it loses the top mark.

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

Usage Guidelines2/5

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

There is no when-to-use guidance at all: no statement that the target must be a native <select>, no note about custom dropdown widgets needing element_click instead, and no prerequisite or ordering information. The agent must infer everything from the name.

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 StateB
Read-onlyIdempotent

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

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
timeoutNo
selectorYesString locator or structured selector/accessibility target with frame and shadow scope.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare this as a safe (readOnly, idempotent, non-destructive) but open-world read, so the safety profile is covered. The description adds that geometry for both page and viewport is returned, but says nothing about timeout behavior, what happens when the element is missing, or whether the call waits.

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?

A single front-loaded sentence with the resource and verb first, no filler. It is efficient, though the brevity contributes to the ambiguity noted elsewhere.

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?

An output schema exists, so return values need not be spelled out. However, for a 3-parameter inspection tool sitting among ~30 element/page siblings, the description leaves the concept of 'state' and the tab/timeout semantics for the agent to piece together from structured data alone.

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

Parameters3/5

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

Schema description coverage is 67%, so most meaning is carried by the schema itself (tab_id and the selector union are documented there). The description only echoes the selector/accessibility distinction already encoded in the discriminated union and says nothing about tab_id or timeout.

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

Purpose4/5

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

States a specific verb (Return) and resource (element state and page/viewport geometry) and names the accepted target forms (selector or accessibility target). It distinguishes itself adequately from element_get_text/attribute/property/html siblings, though 'element state' remains somewhat abstract about which state properties are returned.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of alternatives among the many element_* siblings, and no stated preconditions (e.g., element must exist, tab must be active). The agent must infer context entirely from the name and schema.

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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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 declare readOnlyHint=false, destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond thatβ€”it doesn't explain that the default clear=true overwrites existing field content (a destructive consequence), nor anything about focus, timeouts, or failure behavior.

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

Conciseness4/5

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

A single short sentence with zero redundancy and the core action front-loaded. It is efficient, though its brevity edges toward under-specification rather than tightness.

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 present and full schema descriptions, the description needn't cover return values, and annotations cover the safety profile. Still, for a 6-parameter destructive mutation on a page with many input-related siblings, the definition leaves sibling disambiguation and the destructive default clear=true unexplained.

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 every parameter including text, clear, tab_id, observe, timeout and selector is already documented in the schema. The description adds no extra semantics (e.g. what observe returns or how selector forms behave beyond the schema text), so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (type) and resource (text into an input element), which is unambiguous. However, it offers no differentiation from close siblings like keyboard_press or element_select, so an agent must infer the boundary from the schema alone.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as keyboard_press for key sequences or element_check/element_select for other input controls. The agent gets a purpose but no routing logic.

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

element_upload_fileUpload FileB
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.
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, openWorldHint=true, readOnlyHint=false. The description adds useful behavior beyond that: a path-root security constraint (DP_MCP_UPLOAD_ROOT) and that results only return safe file names (privacy/return behavior). It doesn't explain timeout behavior or what 'destructive' means here for the page state, but it does add real value on top of annotations.

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

Conciseness4/5

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

Two tight sentences, front-loaded with the core action, then constraints. No waste, though the first sentence could be a touch more explicit about the element vs. click-to-upload distinction.

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 destructive, open-world upload tool with an output schema present, the description covers the main security/path behavior. However it omits the key decision context (vs. element_click_and_upload) and any note on failure modes (e.g., multiple files, timeout). Adequate but with clear gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters including the root constraint and timeout. The description's restatement of the upload-root rule and safe-name return adds marginal value beyond structured data. Baseline 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?

States a specific action (set files on an input[type=file]) and the target element type. It's distinguishably a direct file-input upload. It doesn't, however, explicitly differentiate itself from the sibling element_click_and_upload, which performs a click-triggered upload flow.

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

Usage Guidelines2/5

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

There is no guidance on when to use this vs. element_click_and_upload, which is the obvious alternative for upload flows. The description only states constraints, not selection criteria.

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 FrameB
Read-onlyIdempotent

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

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
timeoutNo
selectorYesSelector inside the target frame.
frame_indexNo
frame_selectorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds the useful behavioral note that it operates 'without global frame state,' but provides no further detail on timeout behavior, error handling, or side effects beyond that single phrase.

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

Conciseness3/5

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

The description is a single front-loaded sentence with no wasted words, which is structurally efficient. However, for a tool with five parameters and low schema coverage, it is under-specified rather than appropriately sized, so it earns only a middling score for conciseness.

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

Completeness2/5

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

While the output schema and annotations cover return values and safety, the description is incomplete for a five-parameter frame tool with 40% schema coverage. It does not explain frame selection, timeout behavior, or what happens when no frame/element is found, leaving significant gaps for correct 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 coverage is only 40%, with timeout, frame_index, and frame_selector lacking descriptions. The description vaguely references a 'selected iframe/frame' but does not explain how to select the frame via frame_index versus frame_selector, nor does it clarify the selector or timeout semantics, leaving the low coverage uncompensated.

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

Purpose4/5

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

The description states a specific verb ('Find') and resource ('an element inside a selected iframe/frame'), making the tool's purpose immediately clear. It implies differentiation from element_find by scoping to a frame, but does not explicitly name or compare siblings, so it falls short of a 5.

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

Usage Guidelines3/5

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

Usage is implied: the tool is for finding elements within a frame rather than the main document, and 'without global frame state' hints at a specific non-mutating context. However, there is no explicit guidance on when to choose this over element_find, frame_snapshot, or shadow_find, and no prerequisites are stated.

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

frame_listList FramesB
Read-onlyIdempotent

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/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 covered. The phrase 'without changing global state' largely restates readOnly and adds little beyond the annotations; return behavior is covered by the output schema. Minor added context, so a 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?

A single front-loaded sentence with zero filler that states the action and its scope immediately. Nothing wastes space.

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

Completeness3/5

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

With an output schema defining returns and annotations covering safety, the description need not explain those. However, it omits any routing versus frame_snapshot/frame_find and gives no meaning for the limit parameter, leaving it only minimally adequate for the tool set.

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

Parameters2/5

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

Schema coverage is only 50%: tab_id is documented in the schema, but limit has no description anywhere. The description says nothing about parameters, so it fails to compensate for the undocumented limit field (e.g. that it caps the number of frames returned).

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

Purpose4/5

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

States a specific verb (List) and resource (iframe/frame contexts) scoped to the current page. It is clear what the tool does, but it does not differentiate itself from close siblings like frame_snapshot or frame_find, so an agent must infer the distinction.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance and no alternatives named. The agent is left to infer that this is the enumeration tool versus frame_find (search) or frame_snapshot (capture), with no stated condition to select between them.

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

frame_snapshotFrame SnapshotC
Read-onlyIdempotent

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

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The word 'bounded' adds a small amount of context about output truncation, but the description says nothing about frame resolution failures, timeouts, or auth/cross-origin limitations that matter for iframe inspection.

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?

A single efficient sentence with the scoping constraint front-loaded and no filler. It is arguably too terse for a 7-parameter tool, but nothing in it is wasted.

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?

An output schema exists so return values need no explanation, and annotations cover safety. However, with 7 optional params, 43% coverage, and no framing of frame-selection or tab-defaulting behavior, an agent lacks enough to reliably choose this over page_snapshot or frame_find.

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

Parameters2/5

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

Schema description coverage is only 43%, so the description is expected to compensate, and it does not. It only loosely gestures at frame selection via 'selected iframe/frame'; tab_id, timeout, include_html, max_elements, and max_text_chars semantics are left unexplained beyond the schema.

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

Purpose4/5

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

The description states a specific verb ('Return') and resource ('page outline') with a scope qualifier ('bounded'), and the 'from a selected iframe/frame' clause naturally distinguishes it from page_snapshot. It never names a sibling explicitly, so it stops short of full differentiation.

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

Usage Guidelines2/5

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

There is no when-to-use, when-not-to-use, or alternative-tool guidance. The only hint is that the outline comes from a frame, implying this is for iframe content, but which sibling to prefer (frame_list, frame_find, page_snapshot) is left entirely to inference.

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.
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
intervalNoOptional interval between key events in seconds.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is mostly covered. The description does add one genuine behavioral fact beyond annotations: the input is not echoed in the result. It says nothing about focus prerequisites or failure modes when no element is active.

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?

A single efficient sentence that front-loads the action and target. Nothing is wasted, though one clause about the sibling alternative would have paid for itself.

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?

An output schema exists, so return-value explanation is not needed, and annotations plus a fully documented schema cover the structural side. What is missing is interaction context: whether an element must be focused first and how this differs from element_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?

Schema description coverage is 100% and all three parameters are documented in-schema, so the description carries no extra burden. It adds no semantics for keys, tab_id or interval beyond what the schema already states; baseline 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?

States a specific verb (Send) and resource (keyboard text/keys) plus the target (active page element), which is more precise than a bare 'press keys'. It is distinguishable from element_type via the 'active page element' framing, though that contrast is never made explicit.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is given, and no sibling is named. With element_type and element_click sitting next to it, the agent must infer on its own which interaction path applies.

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 URLsB
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.
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.

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, idempotentHint=true and readOnlyHint=false, covering the safety profile. The description adds the replacement-vs-append distinction and the post-call echo behavior, which is genuine value, but the 'empty list clears' note simply repeats the input schema text. Useful 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?

Two short sentences, replacement semantics front-loaded, zero filler. Every clause 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?

An output schema exists, so return values need not be explained, and the description still notes that successful results echo the patterns. Combined with a fully documented schema and clear annotations, an agent has enough to call this correctly; only scope/preconditions for the 'current tab' are left implicit.

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 both parameters are already fully documented in the schema, including wildcard support and the empty-list-clears behavior. The description adds no syntax or format detail beyond what the schema provides, making 3 the correct baseline.

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

Purpose4/5

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

States a specific verb and resource: 'Replace URL patterns blocked for the current tab.' The 'replace' semantics clearly distinguish it from an add/append operation. It does not, however, distinguish itself from any sibling tool by name, so it lands at 4 rather than 5.

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

Usage Guidelines2/5

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

The description says what happens but never when to use this tool, what prerequisites exist (e.g., an active tab), or what alternatives exist (e.g., network_listen_* siblings). No when/when-not guidance of any kind.

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.
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, openWorldHint=true, and idempotentHint=false. The description usefully clarifies that it does not intercept or modify requests, but it fails to disclose the destructive behavior of clearing an existing listener queue (clear defaults true) and omits lifecycle behavior. It adds some context but leaves key destructive traits unexplained.

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, front-loaded with the action and scope, followed by a key behavioral caveat. No filler or repetition.

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?

An output schema exists, so return values need not be explained. However, the description omits the listener lifecycle (pair with network_listen_wait/stop) and the destructive consequence of clear=true, which are important for correct invocation of a stateful start 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 description coverage is 100%, with each of the six parameters documented. The description adds no parameter-level meaning, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb (Start), resource (HTTP/XHR/Fetch network observation), and scope (active tab). It explicitly disambiguates from interception tools by saying it observes only and does not modify requests, which clearly separates it from siblings like 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 Guidelines2/5

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

No guidance on when to start a listener versus using page_observe or wait_for_* tools, and no mention that network_listen_wait or network_listen_stop must follow. Usage context is only implicit from the tool name and the 'active tab' scope.

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 ListenerA
Destructive

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

ParametersJSON Schema
NameRequiredDescriptionDefault
clearNoClear the listener queue while stopping.
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
listener_tokenNoOptional token returned by network_listen_start.

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, openWorldHint=true, idempotentHint=false, so the safety profile is largely covered. The description contributes the fact that the active tab's listener is targeted and that clearing is optional, but it does not explain that clearing destroys queued packets, nor that stopping an already-stopped listener is not idempotent.

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 wasted clauses; the action, target, and optional behavior are all packed 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?

An output schema exists so return values need not be described, and all three parameters are documented in the schema. However, for a destructive, non-idempotent teardown tool with an optional token, the description omits what happens on a token mismatch or when no listener is active, leaving a meaningful behavioral 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 clear, tab_id, and listener_token are already documented with defaults in the schema. The description's 'optionally clear it' only mirrors the clear flag and adds no extra syntax, interaction, or token-matching detail. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Stop) and resource (network observation/listener) plus the scope (active tab) and an optional side effect. It is distinguishable from network_listen_start/wait, though it does not explicitly name those siblings. The word 'beta' adds noise rather than clarity.

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?

Usage is only implied: an agent can infer this is the teardown counterpart to network_listen_start, but the description never states when to call it (end of observation session), nor any prerequisite such as an active listener or token. No alternatives or exclusions are given.

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.
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
timeoutNoMaximum seconds to wait for packets.
include_bodyNoInclude bounded request/response body excerpts.
listener_tokenNoOptional token returned by network_listen_start. When supplied, stale listeners are rejected instead of silently reading another listener.
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

A3.8/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, so safety is covered. The description adds genuinely useful behavior beyond that: returned data is 'bounded metadata', bodies and headers are opt-in, and sensitive headers are redacted. What it omits is what happens if no packet arrives before timeout (empty result vs. error) and whether it returns early once limit is reached.

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 tight sentences, front-loaded with the core action and followed by the data-sensitivity caveat. No filler, no restatement of the title or parameter names.

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?

An output schema exists, so return-value explanation is unnecessary, and annotations carry the safety profile. The description covers the sensitive-data contract, which is the main thing an agent cannot infer. It is slightly incomplete on the waiting semantics (early return on limit vs. timeout behavior) for a tool with a 0-120s configurable wait.

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 every parameter (limit, tab_id, timeout, include_body, listener_token, max_body_chars, include_headers) is already documented in the schema. The description reinforces the opt-in nature of bodies/headers and the redaction guarantee, but adds no syntax, format, or default detail beyond what the structured fields provide, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Wait for observed HTTP/XHR/Fetch packets and return bounded metadata'), which cleanly separates it from the other wait_* siblings (wait_for_element, wait_for_url, wait_until) that target DOM/URL state rather than network traffic. It never names those siblings, so the differentiation is functional rather than explicit, keeping it just short of a 5.

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

Usage Guidelines3/5

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

'Observed' packets strongly implies a listener must already be running, and the listener_token parameter in the schema makes that concrete, but the description itself never states the prerequisite of calling network_listen_start first, nor when to prefer this over page_observe or page_console_logs. Usage is inferable, not stated.

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.
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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.2/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 fully covered structurally. The description adds 'bounded' (implying node truncation) and specifies the tree is Chromium-specific, but discloses nothing about truncation behavior, tab capture timing, or value-leakage handling that the annotations don't already imply.

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?

A single tight sentence with the verb and resource front-loaded and no filler. It is efficient, though the brevity is also what leaves usage guidance thin.

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?

An output schema exists, so return-value explanation is not required, and annotations carry the safety burden. For a 5-parameter tool with nested scope objects, however, the description omits tab targeting and the node-count bounding that the agent needs to reason about output size.

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

Parameters3/5

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

Schema description coverage is 60%, so the baseline is a middling score. The description touches on scope and bounding, which map to the scope and max_nodes parameters, but says nothing about tab_id, include_values (the secret-leakage toggle), or include_ignored, leaving those to the schema alone.

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

Purpose4/5

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

States a specific verb and resource: 'Return a bounded Chromium accessibility tree,' and enumerates the scoping options (page, selector, frame, shadow). It does not distinguish itself from near-siblings like page_snapshot or frame_snapshot, so an agent must infer the difference from the resource noun alone.

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 implies usage through 'for the page or a scoped selector/frame/shadow target,' but never states when to prefer this over page_snapshot, page_observe, or element_get_* tools. No exclusions or prerequisites are given.

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

page_click_xyClick CoordinatesB
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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds the two-phase move/click nature and the optional pre-press delay, but repeats trajectory detail that the schema's profile field already documents. It adds only modest value 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.

Conciseness4/5

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

A single front-loaded sentence that describes the full action sequence with no filler. It is dense but appropriately sized for a click primitive.

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?

An output schema exists and annotations carry the safety profile, so the description need not explain returns. Still, for a destructive click tool surrounded by many alternatives, it should at least signal when the coordinate-based route is appropriate; that routing information is absent.

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 every parameter is already documented in the schema, including the direct/natural profile semantics and the delay caveat. The description restates the trajectory and delay concepts without adding syntax or constraints beyond the schema. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource: move pointer to coordinates, then press and release a button. It is clear what the tool does. However, it never differentiates itself from close siblings like element_click or page_pointer_move, which is important given the crowded click/pointer family.

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

Usage Guidelines2/5

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

No when-to-use guidance appears in the description. It does not tell the agent when coordinate-based clicking is preferable to element_click or selector-first actions, even though that is the key routing decision. The only related hint (moving targets need a fresh screenshot) lives in the schema, not the description.

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 LogsB
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.
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.

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, covering the safety profile. The description adds that reads are 'bounded' and support filtering/pagination, which is useful but not rich behavioral context beyond what schema and 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.

Conciseness5/5

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

Two short sentences, front-loaded with the core action and followed by feature scope. No wasted words and easy to scan.

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

Completeness4/5

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

For a simple read-only tool with rich annotations, a 100%-covered schema, and an output schema, the description sufficiently conveys purpose and capabilities. It lacks usage context or alternatives, but otherwise complete enough to call correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter is already documented in the schema. The description's mention of level filtering, cursor pagination, and a maximum limit mirrors the parameters but adds no syntax, format, or edge-case meaning beyond the schema.

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

Purpose4/5

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

The description states a specific verb ('Read'), resource ('bounded browser console messages'), and scope ('current tab'), which is clear and precise. However, it does not explicitly differentiate from any sibling tool, so it falls short of the 5 criteria for sibling differentiation.

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

Usage Guidelines2/5

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

The description lists capabilities (level filtering, cursor pagination, limit) but gives no when-to-use guidance, no conditions, and no alternatives. Usage is only implied by the tool name and purpose.

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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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 readOnly/idempotent/non-destructive, so the safety burden is lifted. The description adds meaningful behavior: the dialog is left pending and the message is 'bounded', i.e. truncated rather than a full dump. Does not mention blocking/timeout semantics, but that is covered by the timeout parameter.

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 tight sentence with the verb, resource, and the non-handling constraint front-loaded. No filler 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?

Output schema exists so return values need not be explained, and annotations cover the safety profile. Only minor gap: the non-blocking/blocking behavior implied by timeout default 0 is not hinted at, but the schema documents 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 all three parameters (tab_id, timeout, max_message_chars) are documented in the schema itself. The description adds the notion that returned messages are bounded but no new parameter syntax or semantics. 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?

States a specific verb (observe) and resource (pending native alert/confirm/prompt) and adds the key scope qualifier 'without handling it', which cleanly separates it from the sibling page_dialog_respond. An agent can tell what it does and what it does not do.

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

Usage Guidelines4/5

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

The phrase 'without handling it' signals the use case (inspect a dialog without dismissing it), implying the contrast with page_dialog_respond. However, it never names the alternative nor states when-not-to-use, so an agent must infer the routing.

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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

A3.7/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered. The description adds the scoping detail that it handles exactly one pending dialog and notes a capability-probed native path, but says nothing about consequences of accept vs dismiss, error behavior when no dialog exists, or auth requirements, so it adds only modest context.

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

Conciseness4/5

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

A single sentences with the action front-loaded, so it reads efficiently. The trailing "capability-probed native DrissionPage dialog path" is implementation jargon that adds little agent-facing value but does not bloat the definition.

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?

An output schema exists, so return values need not be explained, and annotations carry the safety profile. The description plus schema covers the action, target, and timing adequately; only the outcome semantics of each action and the no-dialog case are left unstated, which keeps it short of fully 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 75%, with tab_id, timeout, and prompt_text all documented in the schema itself, and the action enum is self-explanatory. The description only loosely echoes these ("accept/dismiss", "prompt") without adding syntax, default behavior, or interaction detail beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description gives a specific verb pair ("Accept or dismiss") and a precise resource ("one pending alert, confirm, or prompt"), so an agent knows exactly what action is taken and on what. It is inherently distinguishable from the read-only sibling page_dialog_observe, which cannot take action on a dialog.

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 "one pending alert, confirm, or prompt" implies the precondition of a dialog being pending, which is useful context. However, it never states when to use this versus page_dialog_observe, whether observing first is expected, or what happens if no dialog is present, leaving usage to inference.

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.
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
max_charsNoMaximum serialized JSON characters returned in result

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=false, destructiveHint=true, openWorldHint=true, and idempotentHint=false, so the mutation risk is covered. The description adds 'bounded' and 'JSON-safe', which hint at execution limits and serialization constraints, but neither is quantified (no timeout, no sandbox detail), so it contributes modest extra 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 short sentences, front-loaded with the core action and immediately followed by the mutation warning. No filler, no restatement of the tool name.

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 an output schema present and annotations covering safety semantics, the description needs only to frame the operation, which it does. The main residual gap is what 'bounded' concretely means (time limit, sandbox scope) and how failures surface, which would help an agent decide whether a task is safely expressible 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 description coverage is 100%, so args, script, tab_id, and max_chars are already documented in the schema (including the return-statement requirement and the max_chars range). The description adds no parameter-level detail beyond that 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?

States a specific verb (run/evaluate) and resource (JavaScript function body in the current page) plus the return shape (JSON-safe result). No sibling tool evaluates arbitrary JavaScript, so the scope is unambiguous within this server.

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

Usage Guidelines3/5

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

The description implies when this is relevant by noting the script runs against the current page and can mutate it, which is a useful caution. However, it never states when to prefer this over the structured element_*/page_* siblings, nor any precondition (e.g., page must be loaded, no navigation-in-progress).

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 ArtifactC
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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is partly covered. The description adds useful context the annotations lack: output is written under DP_MCP_ARTIFACT_ROOT and a checksum, safe relative path and receipt evidence are returned. However it does not explain overwrite/duplicate-file behavior, why an export is flagged destructive, or how operation_key relates to the 'exact-once' claim.

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?

A single well-formed sentence, front-loaded with the action and artifact type. Most clauses earn their place by naming the output location and return payload, though 'exact-once receipt evidence' is jargon that is not self-explanatory and slightly inflates the sentence.

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

Completeness2/5

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

For a 15-parameter write tool the description is far too thin. An output schema exists, so it legitimately need not describe return values, but it should still clarify the idempotency/operation_key contract and the layout/paper/margin parameters that drive the export. As written, the agent must rely almost entirely on bare schema keys.

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 tab_id carries a schema description (7% coverage across 15 params), so the schema leaves scale, margins, page_ranges, paper size, filename, operation_key and print flags undocumented. The description only echoes the pdf/mhtml format choices and mentions a filename-adjacent artifact root; it compensates for none of the remaining parameter ambiguity, and 'operation_key' / 'page_ranges' syntax is left entirely unexplained.

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

Purpose4/5

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

States a specific verb and resource: 'Generate one PDF or MHTML file'. The format enum is named, so the agent knows it produces a document artifact rather than a screenshot/image like page_screenshot_save. It does not explicitly contrast itself with siblings such as page_screenshot or page_screenshot_save, but the artifact type is distinctive enough to be 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?

The description gives no when-to-use guidance and never names an alternative (e.g. page_screenshot_save for images vs this for PDF/MHTML). There is no indication of prerequisites, when it should be preferred, or when it should be avoided. Usage must be inferred entirely from the name and format options.

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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.

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, destructiveHint=false and openWorldHint=true, so the safety and side-effect profile is fully covered without the description. The description adds no extra behavioral context (e.g., whether it reflects post-redirect URL or the raw location), so it neither helps nor hurts.

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?

One short, front-loaded sentence with zero filler. It is appropriately sized for a trivial getter, though it is arguably too terse to earn a 5 given the surrounding tool set.

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?

An output schema exists, so return values need no explanation, and the tool's complexity is minimal. With annotations covering safety and the schema covering the only parameter, the short description is sufficient 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?

Schema description coverage is 100% and the single optional tab_id parameter is fully documented in the schema, including the default-current-tab behavior. The description contributes nothing beyond the schema, which is the expected baseline when coverage is complete.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('current URL of the page'), so an agent knows exactly what it returns. It does not, however, differentiate itself from adjacent siblings like wait_for_url or page_navigate, which is the only thing keeping it from a 5.

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

Usage Guidelines3/5

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

Usage is implied by the name and description β€” read the current tab's URL β€” but there is no explicit when-to-use statement, no note about how it differs from wait_for_url, and no mention of the tab_id scoping default behavior. Adequate but leaves routing to inference.

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

page_go_backGo BackC
Destructive

Go back to the previous page in browser history

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.

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 declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that: it does not say what happens when history is empty, whether the call blocks on load, or any side effects. With annotations present the bar is lower, but this adds no behavioral context at all.

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?

A single front-loaded sentence with no filler, appropriate for a simple one-step navigation action. It is efficient rather than padded, though it is arguably too terse to earn 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?

An output schema exists, so return values need not be described, and annotations carry the safety traits. For a mutation-style navigation tool the remaining gap is edge-case behavior (no history available) and timing, which keeps it at minimum-viable completeness.

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

Parameters3/5

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

Schema description coverage is 100% and the single optional tab_id parameter is fully documented in the schema, including the default-tab fallback behavior. Baseline 3 applies; the description contributes no additional 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 states a specific verb+resource ('go back to the previous page in browser history'), which clearly sets it apart from the sibling page_go_forward and page_navigate. It never names those siblings explicitly, but the directionality 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 Guidelines2/5

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

There is no guidance on when to use this versus page_navigate, page_refresh, or page_go_forward, and no prerequisites or state conditions (e.g., whether history must exist). The agent must infer usage entirely from the one-line purpose.

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

page_go_forwardGo ForwardB
Destructive

Go forward to the next page in browser history

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.

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 declare readOnlyHint=false, destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that β€” it doesn't say what happens when there is no forward entry (no-op vs. error) or whether the call waits for the page to load.

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 zero filler; the direction of navigation is stated immediately. Nothing could be removed without losing meaning.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations carry the safety profile. However, for a destructive navigation action the description omits meaningful behavior such as wait/load semantics and the no-forward-history case, leaving it only minimally 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?

The single tab_id parameter has 100% schema description coverage explaining the default-to-current-tab behavior, so the baseline is 3. The description contributes no additional parameter semantics, but none are 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 states a specific verb+resource (go forward in browser history) and the direction makes it naturally distinguishable from the sibling page_go_back. It is clear but adds no explicit sibling differentiation or scope detail beyond the name/title.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus page_navigate, page_go_back, or page_refresh, and no stated prerequisite that forward history must exist for the action to do anything. Usage is only implied by the phrase 'browser history'.

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

page_observeObserve PageB
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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so safety behavior is covered. The description usefully discloses that the output is a 'compact' fingerprint (bounded sampling), but adds nothing about pagination, cost, or how console data is summarized.

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?

One front-loaded sentence that leads with the outcome ('compact current-page fingerprint') then itemizes contents. Efficient, though the long enumerated list reads as a spec dump rather than purpose.

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

Completeness3/5

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

An output schema exists so return values need not be explained, and the safety profile is in annotations. What is missing is any usage context relative to the several overlapping observation tools, which matters given this tool's sibling density.

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% β€” tab_id, max_texts and max_text_chars are each fully documented in the schema, including the null-default semantics of tab_id. The description mentions none of them, so baseline 3 applies since the schema carries the load.

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

Purpose4/5

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

States a specific verb ('Return') and resource ('current-page fingerprint') and enumerates the payload (URL, title, ready state, element counts, text samples, active element, console summary). This distinguishes it from narrower siblings like page_get_url or page_console_logs, though it never directly contrasts with the closest siblings page_snapshot and page_accessibility_snapshot.

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

Usage Guidelines2/5

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

No when-to-use guidance at all. In a family containing page_snapshot, page_accessibility_snapshot, page_console_logs and page_get_url, the agent gets no hint about when this composite observe is preferable to those narrower tools, nor any preconditions.

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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds genuinely useful behavior beyond them: the drag is 'failure-safe' and 'Always releases the button', which tells the agent the button state will not be left pressed on failure. Movement semantics ('direct or bounded natural') are also disclosed. It does not cover permissions or rate limits, but for a pointer action those are minor.

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

Conciseness4/5

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

Two sentences, front-loaded with the core action and the safety guarantee in a prominent final position. Dense but no filler; each clause carries 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?

An output schema exists so return values need no explanation, and all nine parameters are documented. Combined with the annotations and the stated button-release guarantee, an agent has what it needs to call this correctly; only the sibling-routing guidance is missing.

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

Parameters3/5

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

Schema description coverage is 100% and every parameter carries its own description, so the schema does the heavy lifting. The description adds only light context, confirming that waypoints are ordered/optional and that the profile governs approach and held segments. Baseline 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?

States a specific verb (drag) and resource (viewport pointer) with the coordinate-based mechanic ('through optional ordered waypoints'), which is enough to distinguish it from page_pointer_drag_element. It does not name that sibling or page_pointer_move, so an agent must infer the coordinate-vs-element distinction from the name alone.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance. With page_pointer_drag_element, page_pointer_move and page_click_xy in the sibling set, the description never says when a raw-coordinate drag is preferred over the element-targeted drag. Usage is only implied by the required start/end coordinates in the schema.

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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
profileNodirect
destinationYes

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=false and openWorldHint=true, so the safety profile is covered. The description adds real behavioral context beyond that: resolution happens 'immediately before' the drag, the action is 'failure-safe' (single atomic attempt), and selector scope is bounded to the top document, one same-origin iframe, and CSS paths through nested open shadow hosts.

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

Conciseness4/5

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

Two dense sentences, front-loaded with the core action before the capability scoping. Every clause carries information, though the second sentence is a semicolon-joined run-on covering three separate constraints.

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?

An output schema exists so return values need no explanation, and annotations cover the mutation safety profile. However, with 5 parameters at 20% schema coverage, the description leaves profile ('direct' vs 'natural'), button, and tab_id semantics entirely undocumented, and never warns that a drag may reorder or move content despite destructiveHint=true.

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

Parameters3/5

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

Schema description coverage is only 20%, so the description must compensate, and it partially does: it names the three destination kinds and the selector forms (CSS/XPath, iframe, shadow hosts) that map to the target object. It says nothing about the remaining parameters (button, profile, tab_id), leaving those to bare enum/field names.

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?

States a specific verb and resource ('drag' of a resolved source element to a structured destination) and enumerates the three destination shapes (element, offset, track-ratio) that match the schema's discriminated union. It also differentiates itself from the coordinate-based sibling by pointing to 'coordinate drag for visual-only targets'.

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?

Gives one explicit routing condition β€” use coordinate drag when the target is visual-only β€” which effectively selects page_pointer_drag over this tool. It does not state the inverse ('use this tool when the destination is a real DOM element') or any prerequisites, but the context is clear.

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

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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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.2/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false, openWorldHint=true), so the bar is lower. The description still adds real behavioral substance: a bounded trajectory, a deterministic 24-step eased cubic Bezier path, 8-14ms intervals, and an exact endpoint, which tells an agent the call can consume measurable time and can trigger hover-driven page 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 sentence that front-loads the operation, then the constraint, then the movement modes. No filler and no repetition of the schema.

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 full input schema, an output schema, and annotations covering safety, the description only needs to explain intent and behavior, which it does. It omits any note about tab targeting or hover side effects, which is minor given the schema's tab_id documentation.

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 restates the coordinate target and loosely references the direct/natural distinction, but adds no syntax, default, or edge-case detail beyond what the schema's property descriptions already state.

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?

States a specific verb and resource ('Move the viewport pointer to exact CSS pixel coordinates') and immediately scopes it against related siblings with 'without pressing a button', which separates it from page_click_xy, page_pointer_drag, and drag-element tools. An agent can identify the operation and its boundary without opening the schema.

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 'without pressing a button' gives clear context for when this tool applies versus click/drag interactions, and the two movement profiles are named. It stops short of explicitly naming the alternatives (page_pointer_drag, page_click_xy) or stating exclusion conditions, so it is strong context rather than full routing guidance.

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

page_refreshRefresh PageC
Destructive

Refresh the current page

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is known. The description adds nothing on top of that β€” it does not warn that a refresh discards unsaved form state, may re-submit a POST, or otherwise differ from a navigation. No contradiction, but no 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.

Conciseness3/5

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

A single short sentence with no filler, so nothing is wasted and the verb is front-loaded. However, brevity here comes from under-specification rather than disciplined editing, so it earns no more than a middling score.

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?

An output schema exists, so return values need not be explained, but for a destructive, non-idempotent browser action the description should at least note the side effects of reloading and the tab-targeting behavior. As written, the definition leaves an agent with only the annotations to go on.

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 tab_id is well documented in the schema, so the baseline is 3. The description's phrase "current page" adds no meaning beyond the schema and slightly understates the tool, since tab_id can target a non-current tab.

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

Purpose2/5

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

"Refresh the current page" restates the tool name and title almost verbatim; it names a verb and resource but adds no distinguishing detail. Among ~60 siblings there is nothing here to separate it from page_navigate, page_go_back, or wait_for_url beyond the obvious word 'refresh'.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative guidance is provided. An agent must infer on its own that page_navigate is for loading a new URL and this tool is for reloading the existing one.

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

page_resizeResize WindowC
Destructive

Resize the browser window to specified dimensions

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYesWidth of the browser window
heightYesHeight of the browser window
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.

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 declare readOnlyHint=false, destructiveHint=true, and idempotentHint=false, so the safety profile is covered structurally. The description adds nothing beyond that: it doesn't explain what 'resize' destroys (e.g., prior window geometry), whether it is reversible, or whether it applies to the OS window or the page viewport.

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?

A single front-loaded sentence with zero filler, which is appropriate for a simple operation. It is efficient but too terse to earn a 5.

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?

An output schema exists, so return values need not be described, and annotations cover the safety profile. However, for a destructive, non-idempotent browser mutation the description never clarifies window vs. viewport scope or whether the resize affects the active tab only, leaving a real gap for a 3-parameter 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 description coverage is 100%; width, height, and tab_id are each documented in the schema, including the default-current-tab behavior for tab_id. The description only restates 'specified dimensions' and adds no format, unit, or constraint detail beyond the schema.

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

Purpose4/5

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

The description gives a clear verb ('Resize') and resource ('the browser window') with the target dimensions, and no sibling tool covers window resizing, so an agent can identify it. It stops short of distinguishing window vs. viewport sizing, which matters in a browser-automation context.

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

Usage Guidelines2/5

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

There is no guidance on when to resize (e.g., before screenshotting at a given resolution, or to unblock responsive layouts), no prerequisites, and no mention of which tab/window is affected. The agent must infer all usage context.

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

page_screenshotTake ScreenshotB
Read-onlyIdempotent

Take an inline screenshot of the current page

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
full_pageNoTake a full page screenshot

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/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 'inline', which hints the image is returned rather than persisted, but says nothing about return format, size limits, or how the default tab is resolved beyond what the schema states.

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?

A single tight sentence with the key qualifier ('inline') front-loaded. Efficient, though it is arguably too terse given the adjacent save variant.

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 rich annotations and an output schema, most of the burden is carried elsewhere, but the description never clarifies the inline-vs-save distinction against a very similarly named sibling, which is the one thing an agent most needs 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 description coverage is 100%: tab_id's omission behavior and full_page's meaning are fully documented in the schema. The description adds nothing beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Take') and resource ('screenshot of the current page'), and the word 'inline' implicitly distinguishes it from page_screenshot_save. It does not name or contrast with that sibling, but the core purpose is unambiguous.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of the natural alternative, page_screenshot_save. An agent must infer from the word 'inline' when to capture in-memory versus saving to disk.

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

page_screenshot_saveSave ScreenshotB
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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
full_pageNoTake a full page screenshot

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is partly covered. The description does contribute useful context by revealing that writes are sandboxed under DP_MCP_SCREENSHOT_ROOT, but it never explains the destructive semantics β€” whether an existing file at that path is overwritten, whether directories are created, or what a failure looks like.

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?

A single front-loaded sentence with no filler, and the scoping constraint is stated rather than buried. It is efficient, though its brevity comes at the cost of the missing behavioral and usage detail scored elsewhere.

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?

An output schema exists, so return values need not be explained. But for a destructive, non-idempotent write tool with a near-identical sibling, the description omits overwrite behavior, the relationship to page_screenshot, and any permission or path-edge constraints β€” leaving the agent under-informed for a state-changing 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 all three parameters (path, tab_id, full_page) are already documented in the schema with useful detail. The description only echoes the path root constraint and adds nothing about tab capture timing or full-page behavior, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb+resource ('Save a screenshot') and adds the destination constraint ('to a local path under DP_MCP_SCREENSHOT_ROOT'), so the agent knows this writes a file rather than just capturing. However, it never contrasts itself with the adjacent sibling page_screenshot, which an agent could easily pick instead, so sibling differentiation is left to inference.

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

Usage Guidelines2/5

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

There is no when-to-use / when-not-to-use guidance at all. Given that page_screenshot sits directly in the sibling list and presumably captures without persisting, the absence of any routing advice ('use this instead of page_screenshot when you need the image on disk') is a clear gap.

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

page_scrollScroll PageC
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.
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
directionNoScroll direction or target: down, up, left, right, top, bottom, half, position.down

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 declare the safety profile (readOnlyHint=false, destructiveHint=true, non-idempotent, openWorld), so the description only needs to add context β€” and it adds essentially none. It doesn't explain scroll behavior (instant vs animated, whether it awaits completion), that scrolling can trigger lazy-loading/network activity (which would explain destructiveHint=true), or how the optional tab_id changes which page is acted on beyond the schema's own text.

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?

A single tight sentence with the verb and scope front-loaded and no wasted words. It is arguably too terse for a five-parameter tool, but nothing is redundant or padded.

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?

An output schema exists, so return values need not be described. However, for a tool with five parameters, eight direction values, and no required arguments, the description leaves the agent to reconstruct mode selection (e.g., x/y only matter with direction=position) entirely from the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (x, y, pixels, tab_id, direction) is already documented, including the enum of direction values. The description's mention of 'direction or to a position' loosely mirrors the direction=position mode but adds no syntax or semantics beyond the schema, making the baseline 3 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 pairs a specific verb (scroll) with a clear resource (the current page) and names both supported modes β€” directional scrolling and scrolling to a position. It does not, however, contrast itself against the closely related sibling element_scroll_into_view, which is the most likely source of confusion.

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

Usage Guidelines2/5

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

There is no when-to-use guidance: nothing says when viewport scrolling is preferable to element_scroll_into_view, nor any prerequisites or side-effect warnings. The agent must infer usage from the name alone.

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

page_snapshotPage SnapshotB
Read-onlyIdempotent

Return a bounded page outline with text excerpt, headings, links, buttons, inputs, forms, and recommended selectors.

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds the 'bounded' trait, implying capped output, which is useful but thin; it says nothing about truncation behavior or how selectors are derived.

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?

A single front-loaded sentence with no filler; the key action comes first and the content list follows. It is slightly dense with enumerations but every clause earns its place.

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

Completeness3/5

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

An output schema exists so return values need not be explained, and the safety profile is carried by annotations. However, for a tool with multiple near-overlapping siblings, the description lacks the usage/routing context an agent needs to choose it confidently, leaving it only minimally 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 100%, so the schema already documents tab_id, include_html, max_elements and max_text_chars. The description's word 'bounded' loosely gestures at the size-limiting parameters but adds no syntax or meaning 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.

Purpose4/5

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

States a specific verb and resource ('Return a bounded page outline') and enumerates exactly what content the outline contains (headings, links, buttons, inputs, forms, selectors). It is clear what the tool does, but it does not differentiate itself from sibling snapshot/observe 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 Guidelines2/5

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

There is no when-to-use guidance, no mention of prerequisites (e.g., a page must be navigated first), and no routing to alternatives. With several overlapping siblings (page_accessibility_snapshot, page_observe, page_evaluate, frame_snapshot), the absence of any differentiation guidance is a real gap.

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

shadow_findFind Shadow ElementB
Read-onlyIdempotent

Find one element inside a shadow root exposed by the supported DrissionPage runtime.

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
timeoutNo
selectorYesSelector inside the shadow root.
host_selectorYesSelector for the shadow host element.

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, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds only the shadow-root requirement and the 'supported DrissionPage runtime' caveat; it says nothing about timeout behavior, failure mode when the element is not found, or host/selector resolution order.

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?

A single front-loaded sentence with no padding; the verb and scope come first. The trailing qualifier about the 'supported DrissionPage runtime' is slightly vague but not wasteful.

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?

An output schema exists, so return-value explanation is not required, and annotations cover safety. However, for a 4-parameter tool with implied failure semantics, the description omits timeout meaning and not-found behavior, leaving the definition minimally adequate rather than 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 75% with four parameters, so the schema largely carries the load (host_selector, selector and tab_id are documented inline). The description adds no meaning beyond the schema β€” no explanation of what timeout=0 means or how the host_selector/selector pair is combined.

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 gives a specific verb ('Find') and resource ('one element inside a shadow root'), clearly scoping it to shadow DOM penetration, which distinguishes it from element_find. The 'one element' phrasing also implicitly separates it from shadow_find_all, though that sibling is never named.

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?

Usage is only implied: the phrase 'inside a shadow root' tells the agent to reach for this tool when a normal selector would fail. There is no explicit when-not guidance, no mention of shadow_find_all as the multi-element alternative, and no statement about what happens when the element is absent.

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 ElementsC
Read-onlyIdempotent

Find repeated elements inside a shadow root exposed by the supported DrissionPage runtime.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
selectorYesSelector inside the shadow root.
include_htmlNo
host_selectorYesSelector for the shadow host element.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is fully covered. The description adds only the vague phrase 'supported DrissionPage runtime' and says nothing about pagination, the limit cap, or how repeated matches are ordered, so it contributes almost no behavior beyond the name.

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

Conciseness3/5

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

One front-loaded sentence with no filler, so it is structurally clean. But its brevity comes from under-specification rather than efficiency, leaving required decision information out.

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

Completeness2/5

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

For a five-parameter tool with two required selectors, an output schema present, and two undocumented parameters, the description omits usage context, error behavior and parameter meaning. The existence of an output schema excuses return-value explanation, but not the remaining gaps.

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 60%: tab_id, selector and host_selector are documented in the schema, but limit and include_html are not. The description adds no parameter meaning at all, so it fails to compensate for the two undocumented parameters (e.g., the 1-100 limit range or what include_html returns).

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

Purpose4/5

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

States a specific verb ('Find') plus resource ('repeated elements inside a shadow root'), which is more precise than the singular shadow_find. However it never names a sibling (element_find_all, shadow_find) to make the boundary explicit, so disambiguation is left to inference from the word 'shadow'.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no exclusions, and no mention of alternatives such as element_find_all for non-shadow DOM or shadow_find for a single element. The agent must infer the routing entirely from the tool name.

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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.

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 destructive/safety profile is already fully covered by destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so the bar is low. The description adds which storage areas are affected and the scope of clearing, but says nothing about irreversibility or tab targeting beyond what the schema says.

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 zero filler that delivers scope and resource simultaneously.

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 an output schema present and annotations covering the safety profile, return values and safety need not be re-explained. The description is nearly complete, losing only a little for not clarifying tab-targeting behavior, which the schema handles.

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 67%: 'key' and 'tab_id' are documented in the schema, and 'area' carries an enum. The description's 'one key or all items' merely restates the schema's 'Empty clears the area' rather than adding new semantics, 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?

States a specific verb ('Clear') plus the exact resource ('localStorage/sessionStorage') and scope ('one key or all items'). An agent can distinguish it immediately from storage_get and storage_set without opening any schema.

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 clearing use case and the key-vs-all choice, but gives no explicit when-to-use guidance or pointers to adjacent siblings such as browser_cookies_clear or storage_set. Usage is inferable but not spelled out.

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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
include_valuesNoReturn storage values instead of redacting non-empty values.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds genuinely new behavioral context: values are redacted by default and the map form is bounded, which the agent cannot learn from the annotations or schema defaults alone.

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; the redaction caveat is attached where it matters rather than buried.

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?

An output schema exists so return values need not be explained, and annotations cover the safety profile. The remaining gap is the unspecified bound on the 'bounded map' and the interaction between key and tab_id, but the definition is otherwise complete for a four-parameter read 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 75% and the schema already documents key, tab_id and include_values, including the redaction default. The description largely restates what the schema provides (the two storage areas, redaction behavior) without adding format, size limits, or bounds for the 'bounded map'.

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

Purpose4/5

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

States a specific verb and resource ('Read localStorage or sessionStorage') plus the two access modes (by key or as a bounded map). This clearly separates it from write-side siblings like storage_set and storage_clear, though it never names them explicitly.

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 redaction clause implies when to pass include_values, but there is no explicit when-to-use guidance relative to storage_set/storage_clear or any statement about prerequisites or when to prefer key lookup over the map form. Usage is implied rather than stated.

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.
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.

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 cover the mutation profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false). The description adds a concrete behavioral detail beyond that: 'The value is not echoed', which tells the agent not to expect the written value back even though an output schema exists. It does not, however, disclose permission requirements or the effect on other storage keys.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and scope, followed by the one surprising behavioral fact. Nothing is wasted.

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 (set one item), has an output schema (so return shape needn't be described), and annotations cover the safety profile. The description is nearly complete; the only gap is that 'area' and 'tab_id' semantics rely entirely on the schema.

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

Parameters3/5

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

Schema coverage is 50%, so the description must compensate for half the parameters, but it only mentions the key/value pair implicitly and says nothing about 'area' or 'tab_id'. The schema does describe tab_id and value, so baseline 3 is fair given partial 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?

States a specific verb (Set) and resource (one localStorage/sessionStorage item), and distinguishes clearly from siblings storage_get and storage_clear by naming the exact scope 'one ... item'. An agent can immediately tell this is the write counterpart to storage_get.

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

Usage Guidelines3/5

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

The description implies when to use it via the 'set ... item' verb and the localStorage/sessionStorage framing, but it never explicitly says when to prefer this over e.g. storage_clear or browser_cookies_set, nor states prerequisites. Usage is inferable but not spelled out.

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 ElementB
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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds selector-matching behavior (bare = CSS, text: prefix), which is useful, but says nothing about polling behavior, or what happens when the timeout elapses (error vs. empty result). Given the annotation coverage, a 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?

Two short sentences, front-loaded with the core action and followed immediately by the one non-obvious semantic detail. No padding or 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?

With rich annotations, a full input schema, and an output schema present, the description need not explain return values. However, for a wait/polling tool the timeout outcome (does it raise, return null, or return a status?) is the single most decision-relevant behavior and is absent, leaving a meaningful 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 baseline is 3. The description's selector-syntax note largely restates the 'selector' property description in the schema and adds no detail about tab_id or timeout beyond what the schema already documents.

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

Purpose4/5

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

States a specific verb+resource ('Wait for an element to appear on the page'), which clearly separates it from siblings like wait_for_url, wait_until, and wait_time. It does not explicitly name those siblings or contrast the conditions, so it falls short of a 5.

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

Usage Guidelines2/5

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

The description never says when to use this versus wait_until or wait_for_url, nor does it state prerequisites (e.g., a page must be loaded). The only guidance is selector syntax, which is not usage routing. This leaves the agent to infer the tool's place among several wait-family siblings.

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 URLB
Read-onlyIdempotent

Wait for the current URL to contain a substring

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
timeoutNoTimeout in seconds
url_patternYesSubstring or pattern expected in the current URL

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds the scoping detail that it watches the current URL, but says nothing about what happens on timeout (error vs. false) or whether it blocks, which is the key behavioral question for a wait tool.

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

Conciseness4/5

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

A single efficient sentence with the core action front-loaded and no filler. It is perhaps too terse to be genuinely helpful, but nothing is wasted.

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?

An output schema exists so return values need not be explained, and annotations cover the safety profile. However, for a wait operation the description omits the timeout/failure outcome and any distinction from sibling wait tools, leaving gaps an agent must guess at.

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 tab_id, timeout, and url_pattern are all documented in the schema itself. The description adds no format or syntax detail for url_pattern beyond what the schema provides, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb (wait), resource (current URL), and condition (contain a substring), so the operation is unambiguous. It does not distinguish itself from siblings like wait_for_element, wait_until, or wait_time, which all involve waiting, leaving the agent to infer the difference.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of alternatives. With wait_until and wait_for_element in the sibling set, the agent gets no signal on which waiting primitive applies to URL-change scenarios versus element or generic conditions.

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 UntilB
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
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
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

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and open-world, so the safety and idempotency profile is covered. The description adds the set of observable states but does not disclose key behavioral traits such as what happens on timeout (error vs. false), or how polling/interval interacts with the wait, leaving a gap for a timing-sensitive tool.

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

Conciseness4/5

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

A single front-loaded sentence that enumerates the condition categories without waste. It is tight, though the enumeration is incomplete relative to the schema's enum, slightly reducing its utility.

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?

An output schema exists so return values need not be explained, and annotations cover the safety profile. However, for a tool that overlaps three sibling wait tools, the description omits the routing guidance and failure semantics needed to call it confidently, leaving it only 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 100% and the parameters (timeout, interval, stable_ms, selector, condition) carry their own descriptions, so the schema does the heavy lifting. The description adds no semantics beyond the schema and notably omits the attribute_equals/attribute_nonempty/property_equals/property_nonempty conditions present in the enum, so a baseline 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?

States a specific verb ('wait') and resource (observable page state) and enumerates the observable condition categories, so an agent can tell it is a generalized state-wait. It does not explicitly differentiate from siblings wait_for_element, wait_for_url, and wait_time, whose functionality it partially overlaps, which keeps it below a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus wait_for_element, wait_for_url, or wait_time, even though those siblings cover subsets of the same behavior. The agent must infer that this is the general-purpose wait from the condition list alone, and no exclusions or prerequisites are given.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 63 tool updatesv0.8.8
    • Changedbrowser_cache_clear4 fields changed
      • changedInput schema / description
        Previous value: -"Empty input schema for tools that don't require arguments."New value: +"Empty argument shape for a tab-scoped tool."
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedInput schema / title
        Previous value: -"EmptyInput"New value: +"TabScopedEmptyInput"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "cleared": {
        -            "const": true,
        -            "title": "Cleared",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "cleared"
        -        ],
        -        "title": "BrowserCacheClearData",
        -        "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": {
        +          "cleared": {
        +            "const": true,
        +            "title": "Cleared",
        +            "type": "boolean"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "cleared",
        +          "tab_id"
        +        ],
        +        "title": "BrowserCacheClearData",
        +        "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"
        +  }
        +]
    • Changedbrowser_cookies_clear2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "cleared": {
        -            "const": true,
        -            "title": "Cleared",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "cleared"
        -        ],
        -        "title": "BrowserCookiesClearData",
        -        "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": {
        +          "cleared": {
        +            "const": true,
        +            "title": "Cleared",
        +            "type": "boolean"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "cleared",
        +          "tab_id"
        +        ],
        +        "title": "BrowserCookiesClearData",
        +        "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"
        +  }
        +]
    • Changedbrowser_cookies_delete2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "deleted": {
        -            "const": true,
        -            "title": "Deleted",
        -            "type": "boolean"
        -          },
        -          "domain": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "title": "Domain"
        -          },
        -          "name": {
        -            "title": "Name",
        -            "type": "string"
        -          },
        -          "path": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "title": "Path"
        -          },
        -          "url": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "title": "Url"
        -          }
        -        },
        -        "required": [
        -          "name",
        -          "url",
        -          "domain",
        -          "path",
        -          "deleted"
        -        ],
        -        "title": "BrowserCookiesDeleteData",
        -        "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": {
        +          "deleted": {
        +            "const": true,
        +            "title": "Deleted",
        +            "type": "boolean"
        +          },
        +          "domain": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "title": "Domain"
        +          },
        +          "name": {
        +            "title": "Name",
        +            "type": "string"
        +          },
        +          "path": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "title": "Path"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "title": "Url"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "url",
        +          "domain",
        +          "path",
        +          "deleted",
        +          "tab_id"
        +        ],
        +        "title": "BrowserCookiesDeleteData",
        +        "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"
        +  }
        +]
    • Changedbrowser_cookies_get2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "all_domains": {
        -            "title": "All Domains",
        -            "type": "boolean"
        -          },
        -          "cookies": {
        -            "items": {
        -              "additionalProperties": true,
        -              "type": "object"
        -            },
        -            "title": "Cookies",
        -            "type": "array"
        -          },
        -          "count": {
        -            "title": "Count",
        -            "type": "integer"
        -          },
        -          "include_values": {
        -            "title": "Include Values",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "count",
        -          "include_values",
        -          "all_domains",
        -          "cookies"
        -        ],
        -        "title": "BrowserCookiesGetData",
        -        "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": {
        +          "all_domains": {
        +            "title": "All Domains",
        +            "type": "boolean"
        +          },
        +          "cookies": {
        +            "items": {
        +              "additionalProperties": true,
        +              "type": "object"
        +            },
        +            "title": "Cookies",
        +            "type": "array"
        +          },
        +          "count": {
        +            "title": "Count",
        +            "type": "integer"
        +          },
        +          "include_values": {
        +            "title": "Include Values",
        +            "type": "boolean"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "count",
        +          "include_values",
        +          "all_domains",
        +          "cookies",
        +          "tab_id"
        +        ],
        +        "title": "BrowserCookiesGetData",
        +        "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"
        +  }
        +]
    • Changedbrowser_cookies_set2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "cookies": {
        -            "items": {
        -              "$ref": "#/$defs/BrowserCookieWriteData"
        -            },
        -            "title": "Cookies",
        -            "type": "array"
        -          },
        -          "count": {
        -            "title": "Count",
        -            "type": "integer"
        -          },
        -          "set": {
        -            "const": true,
        -            "title": "Set",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "count",
        -          "set",
        -          "cookies"
        -        ],
        -        "title": "BrowserCookiesSetData",
        -        "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": {
        +          "cookies": {
        +            "items": {
        +              "$ref": "#/$defs/BrowserCookieWriteData"
        +            },
        +            "title": "Cookies",
        +            "type": "array"
        +          },
        +          "count": {
        +            "title": "Count",
        +            "type": "integer"
        +          },
        +          "set": {
        +            "const": true,
        +            "title": "Set",
        +            "type": "boolean"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "count",
        +          "set",
        +          "cookies",
        +          "tab_id"
        +        ],
        +        "title": "BrowserCookiesSetData",
        +        "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"
        +  }
        +]
    • Changedbrowser_headers_set2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "count": {
        -            "title": "Count",
        -            "type": "integer"
        -          },
        -          "headers": {
        -            "additionalProperties": {
        -              "type": "string"
        -            },
        -            "title": "Headers",
        -            "type": "object"
        -          },
        -          "set": {
        -            "const": true,
        -            "title": "Set",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "count",
        -          "headers",
        -          "set"
        -        ],
        -        "title": "BrowserHeadersSetData",
        -        "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"
        +          },
        +          "headers": {
        +            "additionalProperties": {
        +              "type": "string"
        +            },
        +            "title": "Headers",
        +            "type": "object"
        +          },
        +          "set": {
        +            "const": true,
        +            "title": "Set",
        +            "type": "boolean"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "count",
        +          "headers",
        +          "set",
        +          "tab_id"
        +        ],
        +        "title": "BrowserHeadersSetData",
        +        "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"
        +  }
        +]
    • Changedbrowser_permission_get2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "origin": {
        -            "title": "Origin",
        -            "type": "string"
        -          },
        -          "permission": {
        -            "title": "Permission",
        -            "type": "string"
        -          },
        -          "query_supported": {
        -            "title": "Query Supported",
        -            "type": "boolean"
        -          },
        -          "state": {
        -            "enum": [
        -              "granted",
        -              "denied",
        -              "prompt",
        -              "unsupported"
        -            ],
        -            "title": "State",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "permission",
        -          "state",
        -          "origin",
        -          "query_supported"
        -        ],
        -        "title": "BrowserPermissionGetData",
        -        "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": {
        +          "origin": {
        +            "title": "Origin",
        +            "type": "string"
        +          },
        +          "permission": {
        +            "title": "Permission",
        +            "type": "string"
        +          },
        +          "query_supported": {
        +            "title": "Query Supported",
        +            "type": "boolean"
        +          },
        +          "state": {
        +            "enum": [
        +              "granted",
        +              "denied",
        +              "prompt",
        +              "unsupported"
        +            ],
        +            "title": "State",
        +            "type": "string"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "permission",
        +          "state",
        +          "origin",
        +          "query_supported",
        +          "tab_id"
        +        ],
        +        "title": "BrowserPermissionGetData",
        +        "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"
        +  }
        +]
    • Changedbrowser_permission_set2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "applied": {
        -            "const": true,
        -            "title": "Applied",
        -            "type": "boolean"
        -          },
        -          "context_scope": {
        -            "const": "current_browser_context",
        -            "title": "Context Scope",
        -            "type": "string"
        -          },
        -          "observed_state": {
        -            "anyOf": [
        -              {
        -                "enum": [
        -                  "granted",
        -                  "denied",
        -                  "prompt",
        -                  "unsupported"
        -                ],
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "title": "Observed State"
        -          },
        -          "origin": {
        -            "title": "Origin",
        -            "type": "string"
        -          },
        -          "permission": {
        -            "title": "Permission",
        -            "type": "string"
        -          },
        -          "setting": {
        -            "enum": [
        -              "granted",
        -              "denied",
        -              "prompt"
        -            ],
        -            "title": "Setting",
        -            "type": "string"
        -          },
        -          "verified": {
        -            "title": "Verified",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "permission",
        -          "setting",
        -          "origin",
        -          "applied",
        -          "verified",
        -          "observed_state",
        -          "context_scope"
        -        ],
        -        "title": "BrowserPermissionSetData",
        -        "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": {
        +          "applied": {
        +            "const": true,
        +            "title": "Applied",
        +            "type": "boolean"
        +          },
        +          "context_scope": {
        +            "const": "current_browser_context",
        +            "title": "Context Scope",
        +            "type": "string"
        +          },
        +          "observed_state": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "granted",
        +                  "denied",
        +                  "prompt",
        +                  "unsupported"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "title": "Observed State"
        +          },
        +          "origin": {
        +            "title": "Origin",
        +            "type": "string"
        +          },
        +          "permission": {
        +            "title": "Permission",
        +            "type": "string"
        +          },
        +          "setting": {
        +            "enum": [
        +              "granted",
        +              "denied",
        +              "prompt"
        +            ],
        +            "title": "Setting",
        +            "type": "string"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "verified": {
        +            "title": "Verified",
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "permission",
        +          "setting",
        +          "origin",
        +          "applied",
        +          "verified",
        +          "observed_state",
        +          "context_scope",
        +          "tab_id"
        +        ],
        +        "title": "BrowserPermissionSetData",
        +        "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"
        +  }
        +]
    • Changedbrowser_permissions_reset4 fields changed
      • changedInput schema / description
        Previous value: -"Empty input schema for tools that don't require arguments."New value: +"Empty argument shape for a tab-scoped tool."
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedInput schema / title
        Previous value: -"EmptyInput"New value: +"TabScopedEmptyInput"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "context_scope": {
        -            "const": "current_browser_context",
        -            "title": "Context Scope",
        -            "type": "string"
        -          },
        -          "reset": {
        -            "const": true,
        -            "title": "Reset",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "reset",
        -          "context_scope"
        -        ],
        -        "title": "BrowserPermissionsResetData",
        -        "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": {
        +          "context_scope": {
        +            "const": "current_browser_context",
        +            "title": "Context Scope",
        +            "type": "string"
        +          },
        +          "reset": {
        +            "const": true,
        +            "title": "Reset",
        +            "type": "boolean"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "reset",
        +          "context_scope",
        +          "tab_id"
        +        ],
        +        "title": "BrowserPermissionsResetData",
        +        "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"
        +  }
        +]
    • Changedbrowser_user_agent_set2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "platform": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "title": "Platform"
        -          },
        -          "previous_user_agent": {
        -            "title": "Previous User Agent",
        -            "type": "string"
        -          },
        -          "set": {
        -            "const": true,
        -            "title": "Set",
        -            "type": "boolean"
        -          },
        -          "user_agent": {
        -            "title": "User Agent",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "previous_user_agent",
        -          "user_agent",
        -          "platform",
        -          "set"
        -        ],
        -        "title": "BrowserUserAgentSetData",
        -        "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": {
        +          "platform": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "title": "Platform"
        +          },
        +          "previous_user_agent": {
        +            "title": "Previous User Agent",
        +            "type": "string"
        +          },
        +          "set": {
        +            "const": true,
        +            "title": "Set",
        +            "type": "boolean"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "user_agent": {
        +            "title": "User Agent",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "previous_user_agent",
        +          "user_agent",
        +          "platform",
        +          "set",
        +          "tab_id"
        +        ],
        +        "title": "BrowserUserAgentSetData",
        +        "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_check2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "target_kind": {
        +            "default": "selector",
        +            "enum": [
        +              "selector",
        +              "accessibility"
        +            ],
        +            "title": "Target Kind",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "checked",
        +          "by_js",
        +          "tab_id"
        +        ],
        +        "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_click2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • 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"
        -          },
        -          "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"
        -  }
        -]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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "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",
        +          "tab_id"
        +        ],
        +        "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_download17 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / tab_id
        Added value: +{
        +  "description": "MCP tab id captured for this operation.",
        +  "maxLength": 128,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedOutput schema / $defs / ElementClickAndDownloadFailedData / required
        Previous value: -[
        -  "operation_key",
        -  "status",
        -  "artifact",
        -  "receipt"
        -]New value: +[
        +  "operation_key",
        +  "status",
        +  "artifact",
        +  "receipt",
        +  "tab_id"
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadFailedReceipt / properties / tab_id / description
        Added value: +"MCP tab id captured for this operation."
      • removedOutput schema / $defs / ElementClickAndDownloadFailedReceipt / properties / tab_id / title
        Removed value: -"Tab Id"
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / tab_id
        Added value: +{
        +  "description": "MCP tab id captured for this operation.",
        +  "maxLength": 128,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / required
        Previous value: -[
        -  "operation_key",
        -  "status",
        -  "artifact",
        -  "receipt"
        -]New value: +[
        +  "operation_key",
        +  "status",
        +  "artifact",
        +  "receipt",
        +  "tab_id"
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateReceipt / properties / tab_id / description
        Added value: +"MCP tab id captured for this operation."
      • removedOutput schema / $defs / ElementClickAndDownloadIndeterminateReceipt / properties / tab_id / title
        Removed value: -"Tab Id"
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / tab_id
        Added value: +{
        +  "description": "MCP tab id captured for this operation.",
        +  "maxLength": 128,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedOutput schema / $defs / ElementClickAndDownloadSuccessData / required
        Previous value: -[
        -  "operation_key",
        -  "status",
        -  "artifact",
        -  "receipt"
        -]New value: +[
        +  "operation_key",
        +  "status",
        +  "artifact",
        +  "receipt",
        +  "tab_id"
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadSuccessReceipt / properties / tab_id / description
        Added value: +"MCP tab id captured for this operation."
      • removedOutput schema / $defs / ElementClickAndDownloadSuccessReceipt / properties / tab_id / title
        Removed value: -"Tab Id"
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / tab_id
        Added value: +{
        +  "description": "MCP tab id captured for this operation.",
        +  "maxLength": 128,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / required
        Previous value: -[
        -  "operation_key",
        -  "status",
        -  "artifact",
        -  "receipt"
        -]New value: +[
        +  "operation_key",
        +  "status",
        +  "artifact",
        +  "receipt",
        +  "tab_id"
        +]
      • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedReceipt / properties / tab_id / description
        Added value: +"MCP tab id captured for this operation."
      • removedOutput schema / $defs / ElementClickAndDownloadValidationFailedReceipt / properties / tab_id / title
        Removed value: -"Tab Id"
    • Changedelement_click_and_upload2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous 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": "ElementClickAndUploadData",
        -        "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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "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",
        +          "tab_id"
        +        ],
        +        "title": "ElementClickAndUploadData",
        +        "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 / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "element": {
        -            "additionalProperties": true,
        -            "title": "Element",
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "element"
        -        ],
        -        "title": "ElementFindData",
        -        "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": {
        +          "element": {
        +            "additionalProperties": true,
        +            "title": "Element",
        +            "type": "object"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "element",
        +          "tab_id"
        +        ],
        +        "title": "ElementFindData",
        +        "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_find_all2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • 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"
        -          },
        -          "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"
        -  }
        -]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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "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",
        +          "tab_id"
        +        ],
        +        "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_attribute2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "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",
        +          "tab_id"
        +        ],
        +        "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_html2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "target_kind": {
        +            "default": "selector",
        +            "enum": [
        +              "selector",
        +              "accessibility"
        +            ],
        +            "title": "Target Kind",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "html",
        +          "tab_id"
        +        ],
        +        "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_property2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "target_kind": {
        +            "default": "selector",
        +            "enum": [
        +              "selector",
        +              "accessibility"
        +            ],
        +            "title": "Target Kind",
        +            "type": "string"
        +          },
        +          "value": {
        +            "title": "Value"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "property",
        +          "value",
        +          "tab_id"
        +        ],
        +        "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_text2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "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",
        +          "tab_id"
        +        ],
        +        "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_hover2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "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",
        +          "tab_id"
        +        ],
        +        "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_view3 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • addedOutput schema / $defs
        Added value: +{
        +  "ElementPresentationData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "ancestor_3d": {
        +        "title": "Ancestor 3D",
        +        "type": "boolean"
        +      },
        +      "coordinate_actionability": {
        +        "enum": [
        +          "ready",
        +          "hidden",
        +          "off_viewport",
        +          "covered",
        +          "pointer_disabled",
        +          "transformed_3d",
        +          "target_document_only"
        +        ],
        +        "title": "Coordinate Actionability",
        +        "type": "string"
        +      },
        +      "display": {
        +        "title": "Display",
        +        "type": "string"
        +      },
        +      "opacity": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "title": "Opacity"
        +      },
        +      "perspective": {
        +        "title": "Perspective",
        +        "type": "string"
        +      },
        +      "pointer_events": {
        +        "title": "Pointer Events",
        +        "type": "string"
        +      },
        +      "three_dimensional": {
        +        "title": "Three Dimensional",
        +        "type": "boolean"
        +      },
        +      "transform": {
        +        "title": "Transform",
        +        "type": "string"
        +      },
        +      "transform_style": {
        +        "title": "Transform Style",
        +        "type": "string"
        +      },
        +      "transformed": {
        +        "title": "Transformed",
        +        "type": "boolean"
        +      },
        +      "visibility": {
        +        "title": "Visibility",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "display",
        +      "visibility",
        +      "opacity",
        +      "pointer_events",
        +      "transform",
        +      "transform_style",
        +      "perspective",
        +      "transformed",
        +      "ancestor_3d",
        +      "three_dimensional",
        +      "coordinate_actionability"
        +    ],
        +    "title": "ElementPresentationData",
        +    "type": "object"
        +  },
        +  "ElementRectData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "click_point": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "coordinate_space": {
        +        "const": "target_document",
        +        "title": "Coordinate Space",
        +        "type": "string"
        +      },
        +      "location": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "midpoint": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "size": {
        +        "$ref": "#/$defs/SizeData"
        +      },
        +      "viewport_click_point": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "viewport_coordinate_space": {
        +        "enum": [
        +          "top_level_viewport",
        +          "target_document_viewport"
        +        ],
        +        "title": "Viewport Coordinate Space",
        +        "type": "string"
        +      },
        +      "viewport_location": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "viewport_midpoint": {
        +        "$ref": "#/$defs/PointData"
        +      }
        +    },
        +    "required": [
        +      "location",
        +      "size",
        +      "midpoint",
        +      "click_point",
        +      "viewport_location",
        +      "viewport_midpoint",
        +      "viewport_click_point",
        +      "coordinate_space",
        +      "viewport_coordinate_space"
        +    ],
        +    "title": "ElementRectData",
        +    "type": "object"
        +  },
        +  "ElementViewportEvidenceData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "alive": {
        +        "title": "Alive",
        +        "type": "boolean"
        +      },
        +      "checked": {
        +        "title": "Checked",
        +        "type": "boolean"
        +      },
        +      "clickable": {
        +        "title": "Clickable",
        +        "type": "boolean"
        +      },
        +      "covered": {
        +        "title": "Covered",
        +        "type": "boolean"
        +      },
        +      "covering_backend_node_id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "title": "Covering Backend Node Id"
        +      },
        +      "displayed": {
        +        "title": "Displayed",
        +        "type": "boolean"
        +      },
        +      "enabled": {
        +        "title": "Enabled",
        +        "type": "boolean"
        +      },
        +      "in_viewport": {
        +        "title": "In Viewport",
        +        "type": "boolean"
        +      },
        +      "presentation": {
        +        "$ref": "#/$defs/ElementPresentationData"
        +      },
        +      "rect": {
        +        "$ref": "#/$defs/ElementRectData"
        +      },
        +      "selected": {
        +        "title": "Selected",
        +        "type": "boolean"
        +      },
        +      "whole_in_viewport": {
        +        "title": "Whole In Viewport",
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "displayed",
        +      "enabled",
        +      "alive",
        +      "clickable",
        +      "checked",
        +      "selected",
        +      "in_viewport",
        +      "whole_in_viewport",
        +      "covered",
        +      "covering_backend_node_id",
        +      "rect",
        +      "presentation"
        +    ],
        +    "title": "ElementViewportEvidenceData",
        +    "type": "object"
        +  },
        +  "PointData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "x": {
        +        "title": "X",
        +        "type": "number"
        +      },
        +      "y": {
        +        "title": "Y",
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "x",
        +      "y"
        +    ],
        +    "title": "PointData",
        +    "type": "object"
        +  },
        +  "SizeData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "height": {
        +        "title": "Height",
        +        "type": "number"
        +      },
        +      "width": {
        +        "title": "Width",
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "width",
        +      "height"
        +    ],
        +    "title": "SizeData",
        +    "type": "object"
        +  }
        +}
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "after": {
        +            "$ref": "#/$defs/ElementViewportEvidenceData"
        +          },
        +          "before": {
        +            "$ref": "#/$defs/ElementViewportEvidenceData"
        +          },
        +          "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"
        +          },
        +          "scroll_method": {
        +            "enum": [
        +              "element",
        +              "page_fallback"
        +            ],
        +            "title": "Scroll Method",
        +            "type": "string"
        +          },
        +          "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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "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",
        +          "scroll_method",
        +          "before",
        +          "after",
        +          "url",
        +          "tab_id"
        +        ],
        +        "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_select2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "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",
        +          "tab_id"
        +        ],
        +        "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"
        +  }
        +]
    • Changedelement_state_get5 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • addedOutput schema / $defs / ElementPresentationData
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "ancestor_3d": {
        +      "title": "Ancestor 3D",
        +      "type": "boolean"
        +    },
        +    "coordinate_actionability": {
        +      "enum": [
        +        "ready",
        +        "hidden",
        +        "off_viewport",
        +        "covered",
        +        "pointer_disabled",
        +        "transformed_3d",
        +        "target_document_only"
        +      ],
        +      "title": "Coordinate Actionability",
        +      "type": "string"
        +    },
        +    "display": {
        +      "title": "Display",
        +      "type": "string"
        +    },
        +    "opacity": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "title": "Opacity"
        +    },
        +    "perspective": {
        +      "title": "Perspective",
        +      "type": "string"
        +    },
        +    "pointer_events": {
        +      "title": "Pointer Events",
        +      "type": "string"
        +    },
        +    "three_dimensional": {
        +      "title": "Three Dimensional",
        +      "type": "boolean"
        +    },
        +    "transform": {
        +      "title": "Transform",
        +      "type": "string"
        +    },
        +    "transform_style": {
        +      "title": "Transform Style",
        +      "type": "string"
        +    },
        +    "transformed": {
        +      "title": "Transformed",
        +      "type": "boolean"
        +    },
        +    "visibility": {
        +      "title": "Visibility",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "display",
        +    "visibility",
        +    "opacity",
        +    "pointer_events",
        +    "transform",
        +    "transform_style",
        +    "perspective",
        +    "transformed",
        +    "ancestor_3d",
        +    "three_dimensional",
        +    "coordinate_actionability"
        +  ],
        +  "title": "ElementPresentationData",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / ElementRectData / properties / viewport_coordinate_space
        Added value: +{
        +  "enum": [
        +    "top_level_viewport",
        +    "target_document_viewport"
        +  ],
        +  "title": "Viewport Coordinate Space",
        +  "type": "string"
        +}
      • changedOutput schema / $defs / ElementRectData / required
        Previous value: -[
        -  "location",
        -  "size",
        -  "midpoint",
        -  "click_point",
        -  "viewport_location",
        -  "viewport_midpoint",
        -  "viewport_click_point",
        -  "coordinate_space"
        -]New value: +[
        +  "location",
        +  "size",
        +  "midpoint",
        +  "click_point",
        +  "viewport_location",
        +  "viewport_midpoint",
        +  "viewport_click_point",
        +  "coordinate_space",
        +  "viewport_coordinate_space"
        +]
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "alive": {
        -            "title": "Alive",
        -            "type": "boolean"
        -          },
        -          "checked": {
        -            "title": "Checked",
        -            "type": "boolean"
        -          },
        -          "clickable": {
        -            "title": "Clickable",
        -            "type": "boolean"
        -          },
        -          "covered": {
        -            "title": "Covered",
        -            "type": "boolean"
        -          },
        -          "covering_backend_node_id": {
        -            "anyOf": [
        -              {
        -                "type": "integer"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "title": "Covering Backend Node Id"
        -          },
        -          "displayed": {
        -            "title": "Displayed",
        -            "type": "boolean"
        -          },
        -          "enabled": {
        -            "title": "Enabled",
        -            "type": "boolean"
        -          },
        -          "exact": {
        -            "anyOf": [
        -              {
        -                "type": "boolean"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null,
        -            "title": "Exact"
        -          },
        -          "frame_selectors": {
        -            "items": {
        -              "type": "string"
        -            },
        -            "title": "Frame Selectors",
        -            "type": "array"
        -          },
        -          "in_viewport": {
        -            "title": "In Viewport",
        -            "type": "boolean"
        -          },
        -          "locator": {
        -            "title": "Locator",
        -            "type": "string"
        -          },
        -          "name": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null,
        -            "title": "Name"
        -          },
        -          "rect": {
        -            "$ref": "#/$defs/ElementRectData"
        -          },
        -          "role": {
        -            "anyOf": [
        -              {
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "default": null,
        -            "title": "Role"
        -          },
        -          "selected": {
        -            "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"
        -          },
        -          "tag": {
        -            "title": "Tag",
        -            "type": "string"
        -          },
        -          "target_kind": {
        -            "default": "selector",
        -            "enum": [
        -              "selector",
        -              "accessibility"
        -            ],
        -            "title": "Target Kind",
        -            "type": "string"
        -          },
        -          "text": {
        -            "title": "Text",
        -            "type": "string"
        -          },
        -          "whole_in_viewport": {
        -            "title": "Whole In Viewport",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "selector",
        -          "locator",
        -          "selector_strategy",
        -          "selector_normalized",
        -          "tag",
        -          "text",
        -          "displayed",
        -          "enabled",
        -          "alive",
        -          "clickable",
        -          "checked",
        -          "selected",
        -          "in_viewport",
        -          "whole_in_viewport",
        -          "covered",
        -          "covering_backend_node_id",
        -          "rect"
        -        ],
        -        "title": "ElementStateData",
        -        "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": {
        +          "alive": {
        +            "title": "Alive",
        +            "type": "boolean"
        +          },
        +          "checked": {
        +            "title": "Checked",
        +            "type": "boolean"
        +          },
        +          "clickable": {
        +            "title": "Clickable",
        +            "type": "boolean"
        +          },
        +          "covered": {
        +            "title": "Covered",
        +            "type": "boolean"
        +          },
        +          "covering_backend_node_id": {
        +            "anyOf": [
        +              {
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "title": "Covering Backend Node Id"
        +          },
        +          "displayed": {
        +            "title": "Displayed",
        +            "type": "boolean"
        +          },
        +          "enabled": {
        +            "title": "Enabled",
        +            "type": "boolean"
        +          },
        +          "exact": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Exact"
        +          },
        +          "frame_selectors": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Frame Selectors",
        +            "type": "array"
        +          },
        +          "in_viewport": {
        +            "title": "In Viewport",
        +            "type": "boolean"
        +          },
        +          "locator": {
        +            "title": "Locator",
        +            "type": "string"
        +          },
        +          "name": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Name"
        +          },
        +          "presentation": {
        +            "$ref": "#/$defs/ElementPresentationData"
        +          },
        +          "rect": {
        +            "$ref": "#/$defs/ElementRectData"
        +          },
        +          "role": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Role"
        +          },
        +          "selected": {
        +            "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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "tag": {
        +            "title": "Tag",
        +            "type": "string"
        +          },
        +          "target_kind": {
        +            "default": "selector",
        +            "enum": [
        +              "selector",
        +              "accessibility"
        +            ],
        +            "title": "Target Kind",
        +            "type": "string"
        +          },
        +          "text": {
        +            "title": "Text",
        +            "type": "string"
        +          },
        +          "whole_in_viewport": {
        +            "title": "Whole In Viewport",
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "selector",
        +          "locator",
        +          "selector_strategy",
        +          "selector_normalized",
        +          "tag",
        +          "text",
        +          "displayed",
        +          "enabled",
        +          "alive",
        +          "clickable",
        +          "checked",
        +          "selected",
        +          "in_viewport",
        +          "whole_in_viewport",
        +          "covered",
        +          "covering_backend_node_id",
        +          "rect",
        +          "presentation",
        +          "tab_id"
        +        ],
        +        "title": "ElementStateData",
        +        "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_type2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • 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"
        -          },
        -          "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"
        -  }
        -]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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "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",
        +          "tab_id"
        +        ],
        +        "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_file2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "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",
        +          "tab_id"
        +        ],
        +        "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_find3 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • addedOutput schema / $defs
        Added value: +{
        +  "ElementPresentationData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "ancestor_3d": {
        +        "title": "Ancestor 3D",
        +        "type": "boolean"
        +      },
        +      "coordinate_actionability": {
        +        "enum": [
        +          "ready",
        +          "hidden",
        +          "off_viewport",
        +          "covered",
        +          "pointer_disabled",
        +          "transformed_3d",
        +          "target_document_only"
        +        ],
        +        "title": "Coordinate Actionability",
        +        "type": "string"
        +      },
        +      "display": {
        +        "title": "Display",
        +        "type": "string"
        +      },
        +      "opacity": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "title": "Opacity"
        +      },
        +      "perspective": {
        +        "title": "Perspective",
        +        "type": "string"
        +      },
        +      "pointer_events": {
        +        "title": "Pointer Events",
        +        "type": "string"
        +      },
        +      "three_dimensional": {
        +        "title": "Three Dimensional",
        +        "type": "boolean"
        +      },
        +      "transform": {
        +        "title": "Transform",
        +        "type": "string"
        +      },
        +      "transform_style": {
        +        "title": "Transform Style",
        +        "type": "string"
        +      },
        +      "transformed": {
        +        "title": "Transformed",
        +        "type": "boolean"
        +      },
        +      "visibility": {
        +        "title": "Visibility",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "display",
        +      "visibility",
        +      "opacity",
        +      "pointer_events",
        +      "transform",
        +      "transform_style",
        +      "perspective",
        +      "transformed",
        +      "ancestor_3d",
        +      "three_dimensional",
        +      "coordinate_actionability"
        +    ],
        +    "title": "ElementPresentationData",
        +    "type": "object"
        +  },
        +  "ElementRectData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "click_point": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "coordinate_space": {
        +        "const": "target_document",
        +        "title": "Coordinate Space",
        +        "type": "string"
        +      },
        +      "location": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "midpoint": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "size": {
        +        "$ref": "#/$defs/SizeData"
        +      },
        +      "viewport_click_point": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "viewport_coordinate_space": {
        +        "enum": [
        +          "top_level_viewport",
        +          "target_document_viewport"
        +        ],
        +        "title": "Viewport Coordinate Space",
        +        "type": "string"
        +      },
        +      "viewport_location": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "viewport_midpoint": {
        +        "$ref": "#/$defs/PointData"
        +      }
        +    },
        +    "required": [
        +      "location",
        +      "size",
        +      "midpoint",
        +      "click_point",
        +      "viewport_location",
        +      "viewport_midpoint",
        +      "viewport_click_point",
        +      "coordinate_space",
        +      "viewport_coordinate_space"
        +    ],
        +    "title": "ElementRectData",
        +    "type": "object"
        +  },
        +  "ElementViewportEvidenceData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "alive": {
        +        "title": "Alive",
        +        "type": "boolean"
        +      },
        +      "checked": {
        +        "title": "Checked",
        +        "type": "boolean"
        +      },
        +      "clickable": {
        +        "title": "Clickable",
        +        "type": "boolean"
        +      },
        +      "covered": {
        +        "title": "Covered",
        +        "type": "boolean"
        +      },
        +      "covering_backend_node_id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "title": "Covering Backend Node Id"
        +      },
        +      "displayed": {
        +        "title": "Displayed",
        +        "type": "boolean"
        +      },
        +      "enabled": {
        +        "title": "Enabled",
        +        "type": "boolean"
        +      },
        +      "in_viewport": {
        +        "title": "In Viewport",
        +        "type": "boolean"
        +      },
        +      "presentation": {
        +        "$ref": "#/$defs/ElementPresentationData"
        +      },
        +      "rect": {
        +        "$ref": "#/$defs/ElementRectData"
        +      },
        +      "selected": {
        +        "title": "Selected",
        +        "type": "boolean"
        +      },
        +      "whole_in_viewport": {
        +        "title": "Whole In Viewport",
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "displayed",
        +      "enabled",
        +      "alive",
        +      "clickable",
        +      "checked",
        +      "selected",
        +      "in_viewport",
        +      "whole_in_viewport",
        +      "covered",
        +      "covering_backend_node_id",
        +      "rect",
        +      "presentation"
        +    ],
        +    "title": "ElementViewportEvidenceData",
        +    "type": "object"
        +  },
        +  "FrameSummaryData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "boundary": {
        +        "enum": [
        +          "same_origin",
        +          "cross_origin",
        +          "unknown"
        +        ],
        +        "title": "Boundary",
        +        "type": "string"
        +      },
        +      "document_access": {
        +        "enum": [
        +          "readable",
        +          "outer_only",
        +          "unknown"
        +        ],
        +        "title": "Document Access",
        +        "type": "string"
        +      },
        +      "id": {
        +        "title": "Id",
        +        "type": "string"
        +      },
        +      "index": {
        +        "title": "Index",
        +        "type": "integer"
        +      },
        +      "name": {
        +        "title": "Name",
        +        "type": "string"
        +      },
        +      "outer": {
        +        "$ref": "#/$defs/ElementViewportEvidenceData"
        +      },
        +      "selector": {
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "title": {
        +        "title": "Title",
        +        "type": "string"
        +      },
        +      "url": {
        +        "title": "Url",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "index",
        +      "selector",
        +      "id",
        +      "name",
        +      "title",
        +      "url",
        +      "boundary",
        +      "document_access",
        +      "outer"
        +    ],
        +    "title": "FrameSummaryData",
        +    "type": "object"
        +  },
        +  "PointData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "x": {
        +        "title": "X",
        +        "type": "number"
        +      },
        +      "y": {
        +        "title": "Y",
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "x",
        +      "y"
        +    ],
        +    "title": "PointData",
        +    "type": "object"
        +  },
        +  "SizeData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "height": {
        +        "title": "Height",
        +        "type": "number"
        +      },
        +      "width": {
        +        "title": "Width",
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "width",
        +      "height"
        +    ],
        +    "title": "SizeData",
        +    "type": "object"
        +  }
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "element": {
        -            "additionalProperties": true,
        -            "title": "Element",
        -            "type": "object"
        -          },
        -          "frame": {
        -            "additionalProperties": true,
        -            "title": "Frame",
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "frame",
        -          "element"
        -        ],
        -        "title": "FrameFindData",
        -        "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": {
        +          "element": {
        +            "additionalProperties": true,
        +            "title": "Element",
        +            "type": "object"
        +          },
        +          "frame": {
        +            "$ref": "#/$defs/FrameSummaryData"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "frame",
        +          "element",
        +          "tab_id"
        +        ],
        +        "title": "FrameFindData",
        +        "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_list3 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • addedOutput schema / $defs
        Added value: +{
        +  "ElementPresentationData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "ancestor_3d": {
        +        "title": "Ancestor 3D",
        +        "type": "boolean"
        +      },
        +      "coordinate_actionability": {
        +        "enum": [
        +          "ready",
        +          "hidden",
        +          "off_viewport",
        +          "covered",
        +          "pointer_disabled",
        +          "transformed_3d",
        +          "target_document_only"
        +        ],
        +        "title": "Coordinate Actionability",
        +        "type": "string"
        +      },
        +      "display": {
        +        "title": "Display",
        +        "type": "string"
        +      },
        +      "opacity": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "title": "Opacity"
        +      },
        +      "perspective": {
        +        "title": "Perspective",
        +        "type": "string"
        +      },
        +      "pointer_events": {
        +        "title": "Pointer Events",
        +        "type": "string"
        +      },
        +      "three_dimensional": {
        +        "title": "Three Dimensional",
        +        "type": "boolean"
        +      },
        +      "transform": {
        +        "title": "Transform",
        +        "type": "string"
        +      },
        +      "transform_style": {
        +        "title": "Transform Style",
        +        "type": "string"
        +      },
        +      "transformed": {
        +        "title": "Transformed",
        +        "type": "boolean"
        +      },
        +      "visibility": {
        +        "title": "Visibility",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "display",
        +      "visibility",
        +      "opacity",
        +      "pointer_events",
        +      "transform",
        +      "transform_style",
        +      "perspective",
        +      "transformed",
        +      "ancestor_3d",
        +      "three_dimensional",
        +      "coordinate_actionability"
        +    ],
        +    "title": "ElementPresentationData",
        +    "type": "object"
        +  },
        +  "ElementRectData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "click_point": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "coordinate_space": {
        +        "const": "target_document",
        +        "title": "Coordinate Space",
        +        "type": "string"
        +      },
        +      "location": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "midpoint": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "size": {
        +        "$ref": "#/$defs/SizeData"
        +      },
        +      "viewport_click_point": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "viewport_coordinate_space": {
        +        "enum": [
        +          "top_level_viewport",
        +          "target_document_viewport"
        +        ],
        +        "title": "Viewport Coordinate Space",
        +        "type": "string"
        +      },
        +      "viewport_location": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "viewport_midpoint": {
        +        "$ref": "#/$defs/PointData"
        +      }
        +    },
        +    "required": [
        +      "location",
        +      "size",
        +      "midpoint",
        +      "click_point",
        +      "viewport_location",
        +      "viewport_midpoint",
        +      "viewport_click_point",
        +      "coordinate_space",
        +      "viewport_coordinate_space"
        +    ],
        +    "title": "ElementRectData",
        +    "type": "object"
        +  },
        +  "ElementViewportEvidenceData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "alive": {
        +        "title": "Alive",
        +        "type": "boolean"
        +      },
        +      "checked": {
        +        "title": "Checked",
        +        "type": "boolean"
        +      },
        +      "clickable": {
        +        "title": "Clickable",
        +        "type": "boolean"
        +      },
        +      "covered": {
        +        "title": "Covered",
        +        "type": "boolean"
        +      },
        +      "covering_backend_node_id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "title": "Covering Backend Node Id"
        +      },
        +      "displayed": {
        +        "title": "Displayed",
        +        "type": "boolean"
        +      },
        +      "enabled": {
        +        "title": "Enabled",
        +        "type": "boolean"
        +      },
        +      "in_viewport": {
        +        "title": "In Viewport",
        +        "type": "boolean"
        +      },
        +      "presentation": {
        +        "$ref": "#/$defs/ElementPresentationData"
        +      },
        +      "rect": {
        +        "$ref": "#/$defs/ElementRectData"
        +      },
        +      "selected": {
        +        "title": "Selected",
        +        "type": "boolean"
        +      },
        +      "whole_in_viewport": {
        +        "title": "Whole In Viewport",
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "displayed",
        +      "enabled",
        +      "alive",
        +      "clickable",
        +      "checked",
        +      "selected",
        +      "in_viewport",
        +      "whole_in_viewport",
        +      "covered",
        +      "covering_backend_node_id",
        +      "rect",
        +      "presentation"
        +    ],
        +    "title": "ElementViewportEvidenceData",
        +    "type": "object"
        +  },
        +  "FrameSummaryData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "boundary": {
        +        "enum": [
        +          "same_origin",
        +          "cross_origin",
        +          "unknown"
        +        ],
        +        "title": "Boundary",
        +        "type": "string"
        +      },
        +      "document_access": {
        +        "enum": [
        +          "readable",
        +          "outer_only",
        +          "unknown"
        +        ],
        +        "title": "Document Access",
        +        "type": "string"
        +      },
        +      "id": {
        +        "title": "Id",
        +        "type": "string"
        +      },
        +      "index": {
        +        "title": "Index",
        +        "type": "integer"
        +      },
        +      "name": {
        +        "title": "Name",
        +        "type": "string"
        +      },
        +      "outer": {
        +        "$ref": "#/$defs/ElementViewportEvidenceData"
        +      },
        +      "selector": {
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "title": {
        +        "title": "Title",
        +        "type": "string"
        +      },
        +      "url": {
        +        "title": "Url",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "index",
        +      "selector",
        +      "id",
        +      "name",
        +      "title",
        +      "url",
        +      "boundary",
        +      "document_access",
        +      "outer"
        +    ],
        +    "title": "FrameSummaryData",
        +    "type": "object"
        +  },
        +  "PointData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "x": {
        +        "title": "X",
        +        "type": "number"
        +      },
        +      "y": {
        +        "title": "Y",
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "x",
        +      "y"
        +    ],
        +    "title": "PointData",
        +    "type": "object"
        +  },
        +  "SizeData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "height": {
        +        "title": "Height",
        +        "type": "number"
        +      },
        +      "width": {
        +        "title": "Width",
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "width",
        +      "height"
        +    ],
        +    "title": "SizeData",
        +    "type": "object"
        +  }
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "count": {
        -            "title": "Count",
        -            "type": "integer"
        -          },
        -          "frames": {
        -            "items": {
        -              "additionalProperties": true,
        -              "type": "object"
        -            },
        -            "title": "Frames",
        -            "type": "array"
        -          },
        -          "limit": {
        -            "title": "Limit",
        -            "type": "integer"
        -          },
        -          "returned": {
        -            "title": "Returned",
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "count",
        -          "returned",
        -          "limit",
        -          "frames"
        -        ],
        -        "title": "FrameListData",
        -        "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"
        +          },
        +          "frames": {
        +            "items": {
        +              "$ref": "#/$defs/FrameSummaryData"
        +            },
        +            "title": "Frames",
        +            "type": "array"
        +          },
        +          "limit": {
        +            "title": "Limit",
        +            "type": "integer"
        +          },
        +          "returned": {
        +            "title": "Returned",
        +            "type": "integer"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "count",
        +          "returned",
        +          "limit",
        +          "frames",
        +          "tab_id"
        +        ],
        +        "title": "FrameListData",
        +        "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_snapshot3 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • addedOutput schema / $defs
        Added value: +{
        +  "ElementPresentationData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "ancestor_3d": {
        +        "title": "Ancestor 3D",
        +        "type": "boolean"
        +      },
        +      "coordinate_actionability": {
        +        "enum": [
        +          "ready",
        +          "hidden",
        +          "off_viewport",
        +          "covered",
        +          "pointer_disabled",
        +          "transformed_3d",
        +          "target_document_only"
        +        ],
        +        "title": "Coordinate Actionability",
        +        "type": "string"
        +      },
        +      "display": {
        +        "title": "Display",
        +        "type": "string"
        +      },
        +      "opacity": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "title": "Opacity"
        +      },
        +      "perspective": {
        +        "title": "Perspective",
        +        "type": "string"
        +      },
        +      "pointer_events": {
        +        "title": "Pointer Events",
        +        "type": "string"
        +      },
        +      "three_dimensional": {
        +        "title": "Three Dimensional",
        +        "type": "boolean"
        +      },
        +      "transform": {
        +        "title": "Transform",
        +        "type": "string"
        +      },
        +      "transform_style": {
        +        "title": "Transform Style",
        +        "type": "string"
        +      },
        +      "transformed": {
        +        "title": "Transformed",
        +        "type": "boolean"
        +      },
        +      "visibility": {
        +        "title": "Visibility",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "display",
        +      "visibility",
        +      "opacity",
        +      "pointer_events",
        +      "transform",
        +      "transform_style",
        +      "perspective",
        +      "transformed",
        +      "ancestor_3d",
        +      "three_dimensional",
        +      "coordinate_actionability"
        +    ],
        +    "title": "ElementPresentationData",
        +    "type": "object"
        +  },
        +  "ElementRectData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "click_point": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "coordinate_space": {
        +        "const": "target_document",
        +        "title": "Coordinate Space",
        +        "type": "string"
        +      },
        +      "location": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "midpoint": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "size": {
        +        "$ref": "#/$defs/SizeData"
        +      },
        +      "viewport_click_point": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "viewport_coordinate_space": {
        +        "enum": [
        +          "top_level_viewport",
        +          "target_document_viewport"
        +        ],
        +        "title": "Viewport Coordinate Space",
        +        "type": "string"
        +      },
        +      "viewport_location": {
        +        "$ref": "#/$defs/PointData"
        +      },
        +      "viewport_midpoint": {
        +        "$ref": "#/$defs/PointData"
        +      }
        +    },
        +    "required": [
        +      "location",
        +      "size",
        +      "midpoint",
        +      "click_point",
        +      "viewport_location",
        +      "viewport_midpoint",
        +      "viewport_click_point",
        +      "coordinate_space",
        +      "viewport_coordinate_space"
        +    ],
        +    "title": "ElementRectData",
        +    "type": "object"
        +  },
        +  "ElementViewportEvidenceData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "alive": {
        +        "title": "Alive",
        +        "type": "boolean"
        +      },
        +      "checked": {
        +        "title": "Checked",
        +        "type": "boolean"
        +      },
        +      "clickable": {
        +        "title": "Clickable",
        +        "type": "boolean"
        +      },
        +      "covered": {
        +        "title": "Covered",
        +        "type": "boolean"
        +      },
        +      "covering_backend_node_id": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "title": "Covering Backend Node Id"
        +      },
        +      "displayed": {
        +        "title": "Displayed",
        +        "type": "boolean"
        +      },
        +      "enabled": {
        +        "title": "Enabled",
        +        "type": "boolean"
        +      },
        +      "in_viewport": {
        +        "title": "In Viewport",
        +        "type": "boolean"
        +      },
        +      "presentation": {
        +        "$ref": "#/$defs/ElementPresentationData"
        +      },
        +      "rect": {
        +        "$ref": "#/$defs/ElementRectData"
        +      },
        +      "selected": {
        +        "title": "Selected",
        +        "type": "boolean"
        +      },
        +      "whole_in_viewport": {
        +        "title": "Whole In Viewport",
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "displayed",
        +      "enabled",
        +      "alive",
        +      "clickable",
        +      "checked",
        +      "selected",
        +      "in_viewport",
        +      "whole_in_viewport",
        +      "covered",
        +      "covering_backend_node_id",
        +      "rect",
        +      "presentation"
        +    ],
        +    "title": "ElementViewportEvidenceData",
        +    "type": "object"
        +  },
        +  "FrameSummaryData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "boundary": {
        +        "enum": [
        +          "same_origin",
        +          "cross_origin",
        +          "unknown"
        +        ],
        +        "title": "Boundary",
        +        "type": "string"
        +      },
        +      "document_access": {
        +        "enum": [
        +          "readable",
        +          "outer_only",
        +          "unknown"
        +        ],
        +        "title": "Document Access",
        +        "type": "string"
        +      },
        +      "id": {
        +        "title": "Id",
        +        "type": "string"
        +      },
        +      "index": {
        +        "title": "Index",
        +        "type": "integer"
        +      },
        +      "name": {
        +        "title": "Name",
        +        "type": "string"
        +      },
        +      "outer": {
        +        "$ref": "#/$defs/ElementViewportEvidenceData"
        +      },
        +      "selector": {
        +        "title": "Selector",
        +        "type": "string"
        +      },
        +      "title": {
        +        "title": "Title",
        +        "type": "string"
        +      },
        +      "url": {
        +        "title": "Url",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "index",
        +      "selector",
        +      "id",
        +      "name",
        +      "title",
        +      "url",
        +      "boundary",
        +      "document_access",
        +      "outer"
        +    ],
        +    "title": "FrameSummaryData",
        +    "type": "object"
        +  },
        +  "PointData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "x": {
        +        "title": "X",
        +        "type": "number"
        +      },
        +      "y": {
        +        "title": "Y",
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "x",
        +      "y"
        +    ],
        +    "title": "PointData",
        +    "type": "object"
        +  },
        +  "SizeData": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "height": {
        +        "title": "Height",
        +        "type": "number"
        +      },
        +      "width": {
        +        "title": "Width",
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "width",
        +      "height"
        +    ],
        +    "title": "SizeData",
        +    "type": "object"
        +  }
        +}
      • changedOutput schema / oneOf
        Previous 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"
        -          },
        -          "frame": {
        -            "additionalProperties": true,
        -            "title": "Frame",
        -            "type": "object"
        -          },
        -          "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": [
        -          "frame",
        -          "url",
        -          "title",
        -          "text_excerpt",
        -          "headings",
        -          "links",
        -          "buttons",
        -          "inputs",
        -          "forms",
        -          "counts",
        -          "truncated",
        -          "limits",
        -          "meta"
        -        ],
        -        "title": "FrameSnapshotData",
        -        "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"
        +          },
        +          "frame": {
        +            "$ref": "#/$defs/FrameSummaryData"
        +          },
        +          "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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "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": [
        +          "frame",
        +          "url",
        +          "title",
        +          "text_excerpt",
        +          "headings",
        +          "links",
        +          "buttons",
        +          "inputs",
        +          "forms",
        +          "counts",
        +          "truncated",
        +          "limits",
        +          "meta",
        +          "tab_id"
        +        ],
        +        "title": "FrameSnapshotData",
        +        "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"
        +  }
        +]
    • Changedkeyboard_press2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "interval": {
        +            "title": "Interval",
        +            "type": "number"
        +          },
        +          "keys": {
        +            "$ref": "#/$defs/KeyboardInputMetadata"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "keys",
        +          "interval",
        +          "url",
        +          "tab_id"
        +        ],
        +        "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"
        +  }
        +]
    • Changednetwork_blocked_urls_set2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "count": {
        -            "title": "Count",
        -            "type": "integer"
        -          },
        -          "set": {
        -            "const": true,
        -            "title": "Set",
        -            "type": "boolean"
        -          },
        -          "urls": {
        -            "items": {
        -              "type": "string"
        -            },
        -            "title": "Urls",
        -            "type": "array"
        -          }
        -        },
        -        "required": [
        -          "count",
        -          "urls",
        -          "set"
        -        ],
        -        "title": "NetworkBlockedUrlsSetData",
        -        "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"
        +          },
        +          "set": {
        +            "const": true,
        +            "title": "Set",
        +            "type": "boolean"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "urls": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "title": "Urls",
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "count",
        +          "urls",
        +          "set",
        +          "tab_id"
        +        ],
        +        "title": "NetworkBlockedUrlsSetData",
        +        "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"
        +  }
        +]
    • Changednetwork_listen_start2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "cleared": {
        -            "title": "Cleared",
        -            "type": "boolean"
        -          },
        -          "filters": {
        -            "additionalProperties": true,
        -            "title": "Filters",
        -            "type": "object"
        -          },
        -          "listening": {
        -            "title": "Listening",
        -            "type": "boolean"
        -          },
        -          "started_at": {
        -            "title": "Started At",
        -            "type": "string"
        -          },
        -          "tab_id": {
        -            "title": "Tab Id",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "listening",
        -          "filters",
        -          "started_at",
        -          "tab_id",
        -          "cleared"
        -        ],
        -        "title": "NetworkListenStartData",
        -        "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": {
        +          "cleared": {
        +            "title": "Cleared",
        +            "type": "boolean"
        +          },
        +          "consumed_count": {
        +            "minimum": 0,
        +            "title": "Consumed Count",
        +            "type": "integer"
        +          },
        +          "filters": {
        +            "additionalProperties": true,
        +            "title": "Filters",
        +            "type": "object"
        +          },
        +          "listener_token": {
        +            "title": "Listener Token",
        +            "type": "string"
        +          },
        +          "listening": {
        +            "title": "Listening",
        +            "type": "boolean"
        +          },
        +          "next_cursor": {
        +            "minimum": 0,
        +            "title": "Next Cursor",
        +            "type": "integer"
        +          },
        +          "started_at": {
        +            "title": "Started At",
        +            "type": "string"
        +          },
        +          "state": {
        +            "enum": [
        +              "idle",
        +              "listening",
        +              "stopped",
        +              "closed"
        +            ],
        +            "title": "State",
        +            "type": "string"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "timing": {
        +            "additionalProperties": {
        +              "type": "integer"
        +            },
        +            "title": "Timing",
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "listening",
        +          "filters",
        +          "started_at",
        +          "cleared",
        +          "listener_token",
        +          "state",
        +          "consumed_count",
        +          "next_cursor",
        +          "timing",
        +          "tab_id"
        +        ],
        +        "title": "NetworkListenStartData",
        +        "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"
        +  }
        +]
    • Changednetwork_listen_stop3 fields changed
      • addedInput schema / properties / listener_token
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional token returned by network_listen_start.",
        +  "title": "Listener Token"
        +}
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "cleared": {
        -            "title": "Cleared",
        -            "type": "boolean"
        -          },
        -          "listening": {
        -            "title": "Listening",
        -            "type": "boolean"
        -          },
        -          "was_listening": {
        -            "title": "Was Listening",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "listening",
        -          "was_listening",
        -          "cleared"
        -        ],
        -        "title": "NetworkListenStopData",
        -        "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": {
        +          "cleared": {
        +            "title": "Cleared",
        +            "type": "boolean"
        +          },
        +          "consumed_count": {
        +            "minimum": 0,
        +            "title": "Consumed Count",
        +            "type": "integer"
        +          },
        +          "listener_token": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "title": "Listener Token"
        +          },
        +          "listening": {
        +            "title": "Listening",
        +            "type": "boolean"
        +          },
        +          "next_cursor": {
        +            "minimum": 0,
        +            "title": "Next Cursor",
        +            "type": "integer"
        +          },
        +          "state": {
        +            "enum": [
        +              "idle",
        +              "listening",
        +              "stopped",
        +              "closed"
        +            ],
        +            "title": "State",
        +            "type": "string"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "was_listening": {
        +            "title": "Was Listening",
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "listening",
        +          "was_listening",
        +          "cleared",
        +          "listener_token",
        +          "state",
        +          "consumed_count",
        +          "next_cursor",
        +          "tab_id"
        +        ],
        +        "title": "NetworkListenStopData",
        +        "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"
        +  }
        +]
    • Changednetwork_listen_wait3 fields changed
      • addedInput schema / properties / listener_token
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional token returned by network_listen_start. When supplied, stale listeners are rejected instead of silently reading another listener.",
        +  "title": "Listener Token"
        +}
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "count": {
        -            "title": "Count",
        -            "type": "integer"
        -          },
        -          "limit": {
        -            "title": "Limit",
        -            "type": "integer"
        -          },
        -          "listening": {
        -            "title": "Listening",
        -            "type": "boolean"
        -          },
        -          "meta": {
        -            "additionalProperties": true,
        -            "title": "Meta",
        -            "type": "object"
        -          },
        -          "packets": {
        -            "items": {
        -              "additionalProperties": true,
        -              "type": "object"
        -            },
        -            "title": "Packets",
        -            "type": "array"
        -          },
        -          "timed_out": {
        -            "title": "Timed Out",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "listening",
        -          "timed_out",
        -          "count",
        -          "limit",
        -          "packets",
        -          "meta"
        -        ],
        -        "title": "NetworkListenWaitData",
        -        "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": {
        +          "consumed_count": {
        +            "minimum": 0,
        +            "title": "Consumed Count",
        +            "type": "integer"
        +          },
        +          "count": {
        +            "title": "Count",
        +            "type": "integer"
        +          },
        +          "elapsed_ms": {
        +            "minimum": 0,
        +            "title": "Elapsed Ms",
        +            "type": "integer"
        +          },
        +          "limit": {
        +            "title": "Limit",
        +            "type": "integer"
        +          },
        +          "listener_token": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "title": "Listener Token"
        +          },
        +          "listening": {
        +            "title": "Listening",
        +            "type": "boolean"
        +          },
        +          "meta": {
        +            "additionalProperties": true,
        +            "title": "Meta",
        +            "type": "object"
        +          },
        +          "next_cursor": {
        +            "minimum": 0,
        +            "title": "Next Cursor",
        +            "type": "integer"
        +          },
        +          "packets": {
        +            "items": {
        +              "additionalProperties": true,
        +              "type": "object"
        +            },
        +            "title": "Packets",
        +            "type": "array"
        +          },
        +          "remaining_timeout_ms": {
        +            "minimum": 0,
        +            "title": "Remaining Timeout Ms",
        +            "type": "integer"
        +          },
        +          "state": {
        +            "enum": [
        +              "idle",
        +              "listening",
        +              "stopped",
        +              "closed"
        +            ],
        +            "title": "State",
        +            "type": "string"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "timed_out": {
        +            "title": "Timed Out",
        +            "type": "boolean"
        +          },
        +          "timeout_ms": {
        +            "minimum": 0,
        +            "title": "Timeout Ms",
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "listening",
        +          "timed_out",
        +          "count",
        +          "limit",
        +          "packets",
        +          "meta",
        +          "listener_token",
        +          "state",
        +          "consumed_count",
        +          "next_cursor",
        +          "timeout_ms",
        +          "elapsed_ms",
        +          "remaining_timeout_ms",
        +          "tab_id"
        +        ],
        +        "title": "NetworkListenWaitData",
        +        "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_accessibility_snapshot2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "count": {
        -            "title": "Count",
        -            "type": "integer"
        -          },
        -          "max_nodes": {
        -            "title": "Max Nodes",
        -            "type": "integer"
        -          },
        -          "meta": {
        -            "additionalProperties": true,
        -            "title": "Meta",
        -            "type": "object"
        -          },
        -          "nodes": {
        -            "items": {
        -              "$ref": "#/$defs/AccessibilityNodeData"
        -            },
        -            "title": "Nodes",
        -            "type": "array"
        -          },
        -          "returned": {
        -            "title": "Returned",
        -            "type": "integer"
        -          },
        -          "scope": {
        -            "anyOf": [
        -              {
        -                "additionalProperties": true,
        -                "type": "object"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "title": "Scope"
        -          },
        -          "truncated": {
        -            "title": "Truncated",
        -            "type": "boolean"
        -          },
        -          "values_included": {
        -            "title": "Values Included",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "nodes",
        -          "count",
        -          "returned",
        -          "max_nodes",
        -          "truncated",
        -          "values_included",
        -          "scope",
        -          "meta"
        -        ],
        -        "title": "PageAccessibilitySnapshotData",
        -        "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"
        +          },
        +          "max_nodes": {
        +            "title": "Max Nodes",
        +            "type": "integer"
        +          },
        +          "meta": {
        +            "additionalProperties": true,
        +            "title": "Meta",
        +            "type": "object"
        +          },
        +          "nodes": {
        +            "items": {
        +              "$ref": "#/$defs/AccessibilityNodeData"
        +            },
        +            "title": "Nodes",
        +            "type": "array"
        +          },
        +          "returned": {
        +            "title": "Returned",
        +            "type": "integer"
        +          },
        +          "scope": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "title": "Scope"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "truncated": {
        +            "title": "Truncated",
        +            "type": "boolean"
        +          },
        +          "values_included": {
        +            "title": "Values Included",
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "nodes",
        +          "count",
        +          "returned",
        +          "max_nodes",
        +          "truncated",
        +          "values_included",
        +          "scope",
        +          "meta",
        +          "tab_id"
        +        ],
        +        "title": "PageAccessibilitySnapshotData",
        +        "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_click_xy2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "element": {
        -            "title": "Element",
        -            "type": "string"
        -          },
        -          "motion": {
        -            "$ref": "#/$defs/PointerMotionData"
        -          },
        -          "url": {
        -            "title": "Url",
        -            "type": "string"
        -          },
        -          "x": {
        -            "title": "X",
        -            "type": "number"
        -          },
        -          "y": {
        -            "title": "Y",
        -            "type": "number"
        -          }
        -        },
        -        "required": [
        -          "x",
        -          "y",
        -          "element",
        -          "url",
        -          "motion"
        -        ],
        -        "title": "PageClickXYData",
        -        "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": {
        +          "element": {
        +            "title": "Element",
        +            "type": "string"
        +          },
        +          "motion": {
        +            "$ref": "#/$defs/PointerMotionData"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          },
        +          "x": {
        +            "title": "X",
        +            "type": "number"
        +          },
        +          "y": {
        +            "title": "Y",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "x",
        +          "y",
        +          "element",
        +          "url",
        +          "motion",
        +          "tab_id"
        +        ],
        +        "title": "PageClickXYData",
        +        "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_console_logs2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "available": {
        -            "title": "Available",
        -            "type": "boolean"
        -          },
        -          "count": {
        -            "title": "Count",
        -            "type": "integer"
        -          },
        -          "listening": {
        -            "title": "Listening",
        -            "type": "boolean"
        -          },
        -          "logs": {
        -            "items": {
        -              "additionalProperties": true,
        -              "type": "object"
        -            },
        -            "title": "Logs",
        -            "type": "array"
        -          },
        -          "next_cursor": {
        -            "title": "Next Cursor",
        -            "type": "integer"
        -          },
        -          "total": {
        -            "title": "Total",
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "available",
        -          "listening",
        -          "count",
        -          "total",
        -          "next_cursor",
        -          "logs"
        -        ],
        -        "title": "ConsoleLogsData",
        -        "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": {
        +          "available": {
        +            "title": "Available",
        +            "type": "boolean"
        +          },
        +          "count": {
        +            "title": "Count",
        +            "type": "integer"
        +          },
        +          "listening": {
        +            "title": "Listening",
        +            "type": "boolean"
        +          },
        +          "logs": {
        +            "items": {
        +              "additionalProperties": true,
        +              "type": "object"
        +            },
        +            "title": "Logs",
        +            "type": "array"
        +          },
        +          "next_cursor": {
        +            "title": "Next Cursor",
        +            "type": "integer"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "total": {
        +            "title": "Total",
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "available",
        +          "listening",
        +          "count",
        +          "total",
        +          "next_cursor",
        +          "logs",
        +          "tab_id"
        +        ],
        +        "title": "ConsoleLogsData",
        +        "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_dialog_observe2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "dialog_type": {
        -            "anyOf": [
        -              {
        -                "enum": [
        -                  "alert",
        -                  "confirm",
        -                  "prompt"
        -                ],
        -                "type": "string"
        -              },
        -              {
        -                "type": "null"
        -              }
        -            ],
        -            "title": "Dialog Type"
        -          },
        -          "message": {
        -            "title": "Message",
        -            "type": "string"
        -          },
        -          "message_truncated": {
        -            "title": "Message Truncated",
        -            "type": "boolean"
        -          },
        -          "pending": {
        -            "title": "Pending",
        -            "type": "boolean"
        -          },
        -          "timed_out": {
        -            "title": "Timed Out",
        -            "type": "boolean"
        -          },
        -          "timeout": {
        -            "title": "Timeout",
        -            "type": "number"
        -          }
        -        },
        -        "required": [
        -          "pending",
        -          "timed_out",
        -          "dialog_type",
        -          "message",
        -          "message_truncated",
        -          "timeout"
        -        ],
        -        "title": "PageDialogObserveData",
        -        "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": {
        +          "dialog_type": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "alert",
        +                  "confirm",
        +                  "prompt"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "title": "Dialog Type"
        +          },
        +          "message": {
        +            "title": "Message",
        +            "type": "string"
        +          },
        +          "message_truncated": {
        +            "title": "Message Truncated",
        +            "type": "boolean"
        +          },
        +          "pending": {
        +            "title": "Pending",
        +            "type": "boolean"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "timed_out": {
        +            "title": "Timed Out",
        +            "type": "boolean"
        +          },
        +          "timeout": {
        +            "title": "Timeout",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "pending",
        +          "timed_out",
        +          "dialog_type",
        +          "message",
        +          "message_truncated",
        +          "timeout",
        +          "tab_id"
        +        ],
        +        "title": "PageDialogObserveData",
        +        "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_dialog_respond4 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • addedOutput schema / $defs / ActionReceipt / properties / tab_id / description
        Added value: +"MCP tab id captured for this operation."
      • removedOutput schema / $defs / ActionReceipt / properties / tab_id / title
        Removed value: -"Tab Id"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "action": {
        -            "enum": [
        -              "accept",
        -              "dismiss"
        -            ],
        -            "title": "Action",
        -            "type": "string"
        -          },
        -          "dialog_message": {
        -            "$ref": "#/$defs/DialogMessageMetadata"
        -          },
        -          "dialog_type": {
        -            "enum": [
        -              "alert",
        -              "confirm",
        -              "prompt"
        -            ],
        -            "title": "Dialog Type",
        -            "type": "string"
        -          },
        -          "final_url": {
        -            "title": "Final Url",
        -            "type": "string"
        -          },
        -          "handled": {
        -            "const": true,
        -            "title": "Handled",
        -            "type": "boolean"
        -          },
        -          "prompt": {
        -            "$ref": "#/$defs/DialogPromptMetadata"
        -          },
        -          "receipt": {
        -            "$ref": "#/$defs/ActionReceipt"
        -          }
        -        },
        -        "required": [
        -          "dialog_type",
        -          "action",
        -          "handled",
        -          "dialog_message",
        -          "prompt",
        -          "final_url",
        -          "receipt"
        -        ],
        -        "title": "PageDialogRespondData",
        -        "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": {
        +          "action": {
        +            "enum": [
        +              "accept",
        +              "dismiss"
        +            ],
        +            "title": "Action",
        +            "type": "string"
        +          },
        +          "dialog_message": {
        +            "$ref": "#/$defs/DialogMessageMetadata"
        +          },
        +          "dialog_type": {
        +            "enum": [
        +              "alert",
        +              "confirm",
        +              "prompt"
        +            ],
        +            "title": "Dialog Type",
        +            "type": "string"
        +          },
        +          "final_url": {
        +            "title": "Final Url",
        +            "type": "string"
        +          },
        +          "handled": {
        +            "const": true,
        +            "title": "Handled",
        +            "type": "boolean"
        +          },
        +          "prompt": {
        +            "$ref": "#/$defs/DialogPromptMetadata"
        +          },
        +          "receipt": {
        +            "$ref": "#/$defs/ActionReceipt"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "dialog_type",
        +          "action",
        +          "handled",
        +          "dialog_message",
        +          "prompt",
        +          "final_url",
        +          "receipt",
        +          "tab_id"
        +        ],
        +        "title": "PageDialogRespondData",
        +        "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_evaluate2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "truncated": {
        +            "title": "Truncated",
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "result",
        +          "result_type",
        +          "truncated",
        +          "original_json_chars",
        +          "max_chars",
        +          "tab_id"
        +        ],
        +        "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_export_artifact4 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • addedOutput schema / $defs / PageExportArtifactReceipt / properties / tab_id / description
        Added value: +"MCP tab id captured for this operation."
      • removedOutput schema / $defs / PageExportArtifactReceipt / properties / tab_id / title
        Removed value: -"Tab Id"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "artifact": {
        -            "$ref": "#/$defs/ArtifactRef"
        -          },
        -          "format": {
        -            "enum": [
        -              "pdf",
        -              "mhtml"
        -            ],
        -            "title": "Format",
        -            "type": "string"
        -          },
        -          "operation_key": {
        -            "title": "Operation Key",
        -            "type": "string"
        -          },
        -          "receipt": {
        -            "$ref": "#/$defs/PageExportArtifactReceipt"
        -          }
        -        },
        -        "required": [
        -          "operation_key",
        -          "format",
        -          "artifact",
        -          "receipt"
        -        ],
        -        "title": "PageExportArtifactData",
        -        "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": {
        +          "artifact": {
        +            "$ref": "#/$defs/ArtifactRef"
        +          },
        +          "format": {
        +            "enum": [
        +              "pdf",
        +              "mhtml"
        +            ],
        +            "title": "Format",
        +            "type": "string"
        +          },
        +          "operation_key": {
        +            "title": "Operation Key",
        +            "type": "string"
        +          },
        +          "receipt": {
        +            "$ref": "#/$defs/PageExportArtifactReceipt"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "operation_key",
        +          "format",
        +          "artifact",
        +          "receipt",
        +          "tab_id"
        +        ],
        +        "title": "PageExportArtifactData",
        +        "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_url4 fields changed
      • changedInput schema / description
        Previous value: -"Empty input schema for tools that don't require arguments."New value: +"Empty argument shape for a tab-scoped tool."
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedInput schema / title
        Previous value: -"EmptyInput"New value: +"TabScopedEmptyInput"
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "url",
        +          "tab_id"
        +        ],
        +        "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"
        +  }
        +]
    • Changedpage_go_back4 fields changed
      • changedInput schema / description
        Previous value: -"Empty input schema for tools that don't require arguments."New value: +"Empty argument shape for a tab-scoped tool."
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedInput schema / title
        Previous value: -"EmptyInput"New value: +"TabScopedEmptyInput"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "url": {
        -            "title": "Url",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "url"
        -        ],
        -        "title": "PageGoBackData",
        -        "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_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "url",
        +          "tab_id"
        +        ],
        +        "title": "PageGoBackData",
        +        "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_go_forward4 fields changed
      • changedInput schema / description
        Previous value: -"Empty input schema for tools that don't require arguments."New value: +"Empty argument shape for a tab-scoped tool."
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedInput schema / title
        Previous value: -"EmptyInput"New value: +"TabScopedEmptyInput"
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "url",
        +          "tab_id"
        +        ],
        +        "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_navigate5 fields changed
      • addedInput schema / properties / background
        Added value: +{
        +  "default": false,
        +  "description": "Create the requested new tab in the background without changing the MCP current tab. Requires new_tab=true.",
        +  "title": "Background",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / new_context
        Added value: +{
        +  "default": false,
        +  "description": "Create the requested new tab in a disposable Chromium browser context. Closing the tab disposes that context. Requires new_tab=true.",
        +  "title": "New Context",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / new_window
        Added value: +{
        +  "default": false,
        +  "description": "Open the requested new tab in a separate window. Requires new_tab=true.",
        +  "title": "New Window",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "active": {
        +            "default": true,
        +            "title": "Active",
        +            "type": "boolean"
        +          },
        +          "background": {
        +            "default": false,
        +            "title": "Background",
        +            "type": "boolean"
        +          },
        +          "changes": {
        +            "anyOf": [
        +              {
        +                "additionalProperties": true,
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "default": null,
        +            "title": "Changes"
        +          },
        +          "final_url": {
        +            "title": "Final Url",
        +            "type": "string"
        +          },
        +          "new_context": {
        +            "default": false,
        +            "title": "New Context",
        +            "type": "boolean"
        +          },
        +          "new_tab": {
        +            "title": "New Tab",
        +            "type": "boolean"
        +          },
        +          "new_window": {
        +            "default": false,
        +            "title": "New Window",
        +            "type": "boolean"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "tab_id",
        +          "url",
        +          "final_url",
        +          "new_tab"
        +        ],
        +        "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_observe2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "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",
        +          "tab_id"
        +        ],
        +        "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"
        +  }
        +]
    • Changedpage_pointer_drag2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "element": {
        -            "title": "Element",
        -            "type": "string"
        -          },
        -          "end_x": {
        -            "title": "End X",
        -            "type": "number"
        -          },
        -          "end_y": {
        -            "title": "End Y",
        -            "type": "number"
        -          },
        -          "motion": {
        -            "$ref": "#/$defs/PointerDragData"
        -          },
        -          "start_x": {
        -            "title": "Start X",
        -            "type": "number"
        -          },
        -          "start_y": {
        -            "title": "Start Y",
        -            "type": "number"
        -          },
        -          "url": {
        -            "title": "Url",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "start_x",
        -          "start_y",
        -          "end_x",
        -          "end_y",
        -          "element",
        -          "url",
        -          "motion"
        -        ],
        -        "title": "PagePointerDragData",
        -        "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": {
        +          "element": {
        +            "title": "Element",
        +            "type": "string"
        +          },
        +          "end_x": {
        +            "title": "End X",
        +            "type": "number"
        +          },
        +          "end_y": {
        +            "title": "End Y",
        +            "type": "number"
        +          },
        +          "motion": {
        +            "$ref": "#/$defs/PointerDragData"
        +          },
        +          "start_x": {
        +            "title": "Start X",
        +            "type": "number"
        +          },
        +          "start_y": {
        +            "title": "Start Y",
        +            "type": "number"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "start_x",
        +          "start_y",
        +          "end_x",
        +          "end_y",
        +          "element",
        +          "url",
        +          "motion",
        +          "tab_id"
        +        ],
        +        "title": "PagePointerDragData",
        +        "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_pointer_drag_element2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "destination": {
        -            "$ref": "#/$defs/PointerDragElementDestinationData"
        -          },
        -          "motion": {
        -            "$ref": "#/$defs/PointerDragData"
        -          },
        -          "source": {
        -            "$ref": "#/$defs/ResolvedPointerTargetData"
        -          },
        -          "url": {
        -            "title": "Url",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "source",
        -          "destination",
        -          "url",
        -          "motion"
        -        ],
        -        "title": "PagePointerDragElementData",
        -        "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": {
        +          "destination": {
        +            "$ref": "#/$defs/PointerDragElementDestinationData"
        +          },
        +          "motion": {
        +            "$ref": "#/$defs/PointerDragData"
        +          },
        +          "source": {
        +            "$ref": "#/$defs/ResolvedPointerTargetData"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "source",
        +          "destination",
        +          "url",
        +          "motion",
        +          "tab_id"
        +        ],
        +        "title": "PagePointerDragElementData",
        +        "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_pointer_move2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "element": {
        -            "title": "Element",
        -            "type": "string"
        -          },
        -          "motion": {
        -            "$ref": "#/$defs/PointerMoveData"
        -          },
        -          "url": {
        -            "title": "Url",
        -            "type": "string"
        -          },
        -          "x": {
        -            "title": "X",
        -            "type": "number"
        -          },
        -          "y": {
        -            "title": "Y",
        -            "type": "number"
        -          }
        -        },
        -        "required": [
        -          "x",
        -          "y",
        -          "element",
        -          "url",
        -          "motion"
        -        ],
        -        "title": "PagePointerMoveData",
        -        "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": {
        +          "element": {
        +            "title": "Element",
        +            "type": "string"
        +          },
        +          "motion": {
        +            "$ref": "#/$defs/PointerMoveData"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          },
        +          "x": {
        +            "title": "X",
        +            "type": "number"
        +          },
        +          "y": {
        +            "title": "Y",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "x",
        +          "y",
        +          "element",
        +          "url",
        +          "motion",
        +          "tab_id"
        +        ],
        +        "title": "PagePointerMoveData",
        +        "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_refresh4 fields changed
      • changedInput schema / description
        Previous value: -"Empty input schema for tools that don't require arguments."New value: +"Empty argument shape for a tab-scoped tool."
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedInput schema / title
        Previous value: -"EmptyInput"New value: +"TabScopedEmptyInput"
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "url": {
        -            "title": "Url",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "url"
        -        ],
        -        "title": "PageRefreshData",
        -        "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_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "url",
        +          "tab_id"
        +        ],
        +        "title": "PageRefreshData",
        +        "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_resize2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "data": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "height": {
        +            "title": "Height",
        +            "type": "integer"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "width": {
        +            "title": "Width",
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "width",
        +          "height",
        +          "tab_id"
        +        ],
        +        "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"
        +  }
        +]
    • Changedpage_screenshot2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "screenshot": {
        -            "additionalProperties": true,
        -            "title": "Screenshot",
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "screenshot"
        -        ],
        -        "title": "PageScreenshotData",
        -        "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": {
        +          "screenshot": {
        +            "additionalProperties": true,
        +            "title": "Screenshot",
        +            "type": "object"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "screenshot",
        +          "tab_id"
        +        ],
        +        "title": "PageScreenshotData",
        +        "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_screenshot_save2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "screenshot": {
        -            "additionalProperties": true,
        -            "title": "Screenshot",
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "screenshot"
        -        ],
        -        "title": "PageScreenshotSaveData",
        -        "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": {
        +          "screenshot": {
        +            "additionalProperties": true,
        +            "title": "Screenshot",
        +            "type": "object"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "screenshot",
        +          "tab_id"
        +        ],
        +        "title": "PageScreenshotSaveData",
        +        "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_scroll2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "direction": {
        -            "title": "Direction",
        -            "type": "string"
        -          },
        -          "pixels": {
        -            "title": "Pixels",
        -            "type": "integer"
        -          },
        -          "url": {
        -            "title": "Url",
        -            "type": "string"
        -          },
        -          "x": {
        -            "title": "X",
        -            "type": "integer"
        -          },
        -          "y": {
        -            "title": "Y",
        -            "type": "integer"
        -          }
        -        },
        -        "required": [
        -          "direction",
        -          "pixels",
        -          "x",
        -          "y",
        -          "url"
        -        ],
        -        "title": "PageScrollData",
        -        "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": {
        +          "direction": {
        +            "title": "Direction",
        +            "type": "string"
        +          },
        +          "pixels": {
        +            "title": "Pixels",
        +            "type": "integer"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          },
        +          "x": {
        +            "title": "X",
        +            "type": "integer"
        +          },
        +          "y": {
        +            "title": "Y",
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "direction",
        +          "pixels",
        +          "x",
        +          "y",
        +          "url",
        +          "tab_id"
        +        ],
        +        "title": "PageScrollData",
        +        "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_snapshot2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "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",
        +          "tab_id"
        +        ],
        +        "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"
        +  }
        +]
    • Changedshadow_find2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "element": {
        -            "additionalProperties": true,
        -            "title": "Element",
        -            "type": "object"
        -          },
        -          "host": {
        -            "additionalProperties": true,
        -            "title": "Host",
        -            "type": "object"
        -          }
        -        },
        -        "required": [
        -          "host",
        -          "element"
        -        ],
        -        "title": "ShadowFindData",
        -        "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": {
        +          "element": {
        +            "additionalProperties": true,
        +            "title": "Element",
        +            "type": "object"
        +          },
        +          "host": {
        +            "additionalProperties": true,
        +            "title": "Host",
        +            "type": "object"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "host",
        +          "element",
        +          "tab_id"
        +        ],
        +        "title": "ShadowFindData",
        +        "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"
        +  }
        +]
    • Changedshadow_find_all2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • 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"
        -          },
        -          "host": {
        -            "additionalProperties": true,
        -            "title": "Host",
        -            "type": "object"
        -          },
        -          "limit": {
        -            "title": "Limit",
        -            "type": "integer"
        -          },
        -          "meta": {
        -            "additionalProperties": true,
        -            "title": "Meta",
        -            "type": "object"
        -          },
        -          "returned": {
        -            "title": "Returned",
        -            "type": "integer"
        -          },
        -          "target": {
        -            "additionalProperties": true,
        -            "title": "Target",
        -            "type": "object"
        -          },
        -          "truncated": {
        -            "title": "Truncated",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "host",
        -          "target",
        -          "count",
        -          "returned",
        -          "limit",
        -          "truncated",
        -          "elements",
        -          "meta"
        -        ],
        -        "title": "ShadowFindAllData",
        -        "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"
        +          },
        +          "host": {
        +            "additionalProperties": true,
        +            "title": "Host",
        +            "type": "object"
        +          },
        +          "limit": {
        +            "title": "Limit",
        +            "type": "integer"
        +          },
        +          "meta": {
        +            "additionalProperties": true,
        +            "title": "Meta",
        +            "type": "object"
        +          },
        +          "returned": {
        +            "title": "Returned",
        +            "type": "integer"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "target": {
        +            "additionalProperties": true,
        +            "title": "Target",
        +            "type": "object"
        +          },
        +          "truncated": {
        +            "title": "Truncated",
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "host",
        +          "target",
        +          "count",
        +          "returned",
        +          "limit",
        +          "truncated",
        +          "elements",
        +          "meta",
        +          "tab_id"
        +        ],
        +        "title": "ShadowFindAllData",
        +        "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"
        +  }
        +]
    • Changedstorage_clear2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "area": {
        -            "title": "Area",
        -            "type": "string"
        -          },
        -          "cleared": {
        -            "const": true,
        -            "title": "Cleared",
        -            "type": "boolean"
        -          },
        -          "key": {
        -            "title": "Key",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "area",
        -          "key",
        -          "cleared"
        -        ],
        -        "title": "StorageClearData",
        -        "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": {
        +          "area": {
        +            "title": "Area",
        +            "type": "string"
        +          },
        +          "cleared": {
        +            "const": true,
        +            "title": "Cleared",
        +            "type": "boolean"
        +          },
        +          "key": {
        +            "title": "Key",
        +            "type": "string"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "area",
        +          "key",
        +          "cleared",
        +          "tab_id"
        +        ],
        +        "title": "StorageClearData",
        +        "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"
        +  }
        +]
    • Changedstorage_get2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "area": {
        -            "title": "Area",
        -            "type": "string"
        -          },
        -          "count": {
        -            "title": "Count",
        -            "type": "integer"
        -          },
        -          "include_values": {
        -            "title": "Include Values",
        -            "type": "boolean"
        -          },
        -          "items": {
        -            "additionalProperties": {
        -              "type": "string"
        -            },
        -            "title": "Items",
        -            "type": "object"
        -          },
        -          "key": {
        -            "title": "Key",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "area",
        -          "key",
        -          "include_values",
        -          "count",
        -          "items"
        -        ],
        -        "title": "StorageGetData",
        -        "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": {
        +          "area": {
        +            "title": "Area",
        +            "type": "string"
        +          },
        +          "count": {
        +            "title": "Count",
        +            "type": "integer"
        +          },
        +          "include_values": {
        +            "title": "Include Values",
        +            "type": "boolean"
        +          },
        +          "items": {
        +            "additionalProperties": {
        +              "type": "string"
        +            },
        +            "title": "Items",
        +            "type": "object"
        +          },
        +          "key": {
        +            "title": "Key",
        +            "type": "string"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "area",
        +          "key",
        +          "include_values",
        +          "count",
        +          "items",
        +          "tab_id"
        +        ],
        +        "title": "StorageGetData",
        +        "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"
        +  }
        +]
    • Changedstorage_set2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "area": {
        -            "title": "Area",
        -            "type": "string"
        -          },
        -          "key": {
        -            "title": "Key",
        -            "type": "string"
        -          },
        -          "set": {
        -            "const": true,
        -            "title": "Set",
        -            "type": "boolean"
        -          }
        -        },
        -        "required": [
        -          "area",
        -          "key",
        -          "set"
        -        ],
        -        "title": "StorageSetData",
        -        "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": {
        +          "area": {
        +            "title": "Area",
        +            "type": "string"
        +          },
        +          "key": {
        +            "title": "Key",
        +            "type": "string"
        +          },
        +          "set": {
        +            "const": true,
        +            "title": "Set",
        +            "type": "boolean"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "area",
        +          "key",
        +          "set",
        +          "tab_id"
        +        ],
        +        "title": "StorageSetData",
        +        "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_element2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous 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"
        -  }
        -]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"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "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",
        +          "tab_id"
        +        ],
        +        "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_url2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "matched": {
        -            "const": true,
        -            "title": "Matched",
        -            "type": "boolean"
        -          },
        -          "timeout": {
        -            "title": "Timeout",
        -            "type": "number"
        -          },
        -          "url": {
        -            "title": "Url",
        -            "type": "string"
        -          },
        -          "url_pattern": {
        -            "title": "Url Pattern",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "url_pattern",
        -          "matched",
        -          "url",
        -          "timeout"
        -        ],
        -        "title": "WaitForUrlData",
        -        "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": {
        +          "matched": {
        +            "const": true,
        +            "title": "Matched",
        +            "type": "boolean"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "timeout": {
        +            "title": "Timeout",
        +            "type": "number"
        +          },
        +          "url": {
        +            "title": "Url",
        +            "type": "string"
        +          },
        +          "url_pattern": {
        +            "title": "Url Pattern",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "url_pattern",
        +          "matched",
        +          "url",
        +          "timeout",
        +          "tab_id"
        +        ],
        +        "title": "WaitForUrlData",
        +        "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_until2 fields changed
      • addedInput schema / properties / tab_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
        +  "title": "Tab Id"
        +}
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "data": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "condition": {
        -            "title": "Condition",
        -            "type": "string"
        -          },
        -          "elapsed_ms": {
        -            "title": "Elapsed Ms",
        -            "type": "integer"
        -          },
        -          "matched": {
        -            "const": true,
        -            "title": "Matched",
        -            "type": "boolean"
        -          },
        -          "name": {
        -            "title": "Name",
        -            "type": "string"
        -          },
        -          "selector": {
        -            "title": "Selector",
        -            "type": "string"
        -          },
        -          "state": {
        -            "additionalProperties": true,
        -            "title": "State",
        -            "type": "object"
        -          },
        -          "timeout": {
        -            "title": "Timeout",
        -            "type": "number"
        -          },
        -          "value": {
        -            "title": "Value",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "condition",
        -          "selector",
        -          "value",
        -          "name",
        -          "matched",
        -          "timeout",
        -          "elapsed_ms",
        -          "state"
        -        ],
        -        "title": "WaitUntilData",
        -        "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": {
        +          "condition": {
        +            "title": "Condition",
        +            "type": "string"
        +          },
        +          "elapsed_ms": {
        +            "title": "Elapsed Ms",
        +            "type": "integer"
        +          },
        +          "matched": {
        +            "const": true,
        +            "title": "Matched",
        +            "type": "boolean"
        +          },
        +          "name": {
        +            "title": "Name",
        +            "type": "string"
        +          },
        +          "selector": {
        +            "title": "Selector",
        +            "type": "string"
        +          },
        +          "state": {
        +            "additionalProperties": true,
        +            "title": "State",
        +            "type": "object"
        +          },
        +          "tab_id": {
        +            "description": "MCP tab id captured for this operation.",
        +            "maxLength": 128,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "timeout": {
        +            "title": "Timeout",
        +            "type": "number"
        +          },
        +          "value": {
        +            "title": "Value",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "condition",
        +          "selector",
        +          "value",
        +          "name",
        +          "matched",
        +          "timeout",
        +          "elapsed_ms",
        +          "state",
        +          "tab_id"
        +        ],
        +        "title": "WaitUntilData",
        +        "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"
        +  }
        +]
  2. 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"
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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

C2.9/5.0

Scored across 69 tools

Disambiguation3/5

Many tools have overlapping purposes, such as page_screenshot/page_screenshot_save/page_export_artifact, multiple snapshot variants (page_snapshot, page_accessibility_snapshot, page_observe, frame_snapshot), click variants (element_click, page_click_xy, element_click_and_download, element_click_and_upload), and wait_for_element vs wait_until. Descriptions are detailed enough to differentiate most cases, but the large number of similar granular tools creates real misselection risk.

Naming Consistency4/5

All names use snake_case with clear prefix-based grouping (page_, element_, browser_, frame_, shadow_, storage_, wait_, network_, tab_). There are minor ordering deviations: some tools put the action immediately after the prefix (page_get_url, element_get_text) while others put the resource first (browser_headers_set, browser_cookies_get), but the pattern remains largely predictable.

Tool Count1/5

With 69 tools, the count is far beyond the typical 3-15 range and crosses the rubric's threshold for extreme mismatch (50+ tools). Many operations could be consolidated (e.g., pointer move/drag/click_xy, multiple snapshot variants), making the surface unnecessarily heavy for agent use.

Completeness4/5

The tool surface is exceptionally comprehensive, covering navigation, interactions, element queries, cookies, storage, network observation, dialogs, frames, shadow DOM, uploads/downloads, permissions, headers, and tab management. Minor gaps remain, such as dedicated double-click/right-click element actions, element-level screenshots, and explicit browser context creation/teardown beyond the HTTP auth path.

Maintenance

ActivityActive
ResponsivenessWithin a week

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
    A
    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.
    6 npm
    1
    MIT