DrissionPage MCP Server
DrissionPage MCP Server exposes 69 typed MCP tools that let an MCP client drive a local Chrome/Chromium browser: navigate, observe, interact with elements, and capture or export results.
Navigation & tabs: open URLs (with
new_tab,background,new_window,new_context), handle HTTP-auth pages, go back/forward, refresh, list/switch/close tabs, resize the window, and close the browser.Observation: page snapshots (headings, links, buttons, inputs, forms), bounded Chromium accessibility trees, page fingerprints, console logs, and current URL.
Element interaction: find one/all by CSS, XPath, text, or accessibility target; click, double/right/middle click, type, hover, select options, check/uncheck, scroll into view, and read text, attributes, DOM properties, HTML, or live state/geometry.
Vision-backed pointer control:
page_click_xy,page_pointer_move, and coordinate drags withdirector deterministic 24-stepnaturalmotion plus ordered waypoints.Structured drag: resolve source and destination (element, offset, or track-ratio) immediately before a failure-safe drag, including iframes and open Shadow DOM.
Frames & Shadow DOM: list/snapshot frames, find inside an iframe, and query elements inside exposed (including closed) shadow roots.
Files & artifacts: upload files to
input[type=file], click-and-upload via Chromium's file chooser, click-and-download with integrity checks, save screenshots, and export PDF/MHTML artifacts with SHA-256 receipts.Browser environment: set request headers, override user agent, clear cache only, and get/set/reset browser permissions per origin.
Cookies & Web Storage: read (redacted by default), batch-write, delete, and clear cookies; get/set/clear localStorage and sessionStorage.
Network control: start/wait/stop HTTP/XHR/Fetch observation with packet cursor pagination and redacted headers/bodies, plus blocked-URL pattern management.
Waiting & dialogs: wait for elements, URLs, arbitrary conditions, or fixed time; observe and accept/dismiss native alert, confirm, and prompt dialogs.
Scripting & input: run bounded JavaScript in the page and send keyboard text/keys to the active element.
Safety by design: secret values are redacted by default, sensitive outputs require explicit opt-in flags, and results are typed with structured success/error contracts and receipts.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DrissionPage MCP ServerGo to news.ycombinator.com and extract the top 10 headlines"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.

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 stateCore interaction guarantees
Two bounded profiles:
directemits one exact move;naturalemits 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 doctorThe 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.
Edit Codex configuration:
User-level:
~/.codex/config.tomlProject-level:
.codex/config.tomlinside a trusted project
Add this configuration:
[mcp_servers.drissionpage] command = "drissionpage-mcp" startup_timeout_sec = 20 tool_timeout_sec = 60Restart Codex. In the TUI, run
/mcp; from a shell, runcodex 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 existingtab_id, or combinenew_tab=truewith optionalbackground,new_window, ornew_context;observereturns a change summarypage_navigate_with_http_auth- Navigate through a scoped HTTP auth challenge in a dedicated disposable Chromium context without returning credentialspage_go_back- Navigate backward in browser historypage_go_forward- Navigate forward in browser historypage_refresh- Reload current page
ποΈ Tab Operations (3 tools)
tab_list- List open browser tabs with stable MCP tab IDstab_switch- Switch to a tab returned bytab_listtab_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 likeh1are treated as CSSelement_find_all- Extract bounded repeated elements with text, attributes, and recommended selectorselement_click- Click any element with additive left/right/middle and single/double-click semanticselement_click_and_download- Correlate one selector, coordinate, or keyboard trigger with one integrity-checked artifact underDP_MCP_DOWNLOAD_ROOTelement_type- Input text into elementselement_upload_file- Useelement_upload_file(paths=[...])to upload files fromDP_MCP_UPLOAD_ROOTtoinput[type=file]element_click_and_upload- Arm Chromium's file chooser, click its trigger, inject approved files, and clean interception without an operating-system pickerelement_scroll_into_view- Bring an element into the viewport before actingelement_hover- Hover an element to trigger menu/tooltip stateselement_select- Select an option by value, text, or indexelement_check- Check or uncheck checkbox/radio controlselement_get_text- Get element or page textelement_get_attribute- Get an HTML attributeelement_get_property- Get a live DOM property such as an input valueelement_get_html- Get element or page HTMLelement_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 screenshotpage_screenshot_save- Save a screenshot underDP_MCP_SCREENSHOT_ROOTpage_export_artifact- Generate a managed PDF or MHTML artifact underDP_MCP_ARTIFACT_ROOTwith SHA-256 and receipt evidencepage_snapshot- Return a bounded page outline with headings, links, buttons, inputs, forms, and selector recommendationspage_accessibility_snapshot- Return a bounded Chromium accessibility tree for the page or a scoped element, with field values redacted unless explicitly requestedpage_observe- Return a compact page fingerprint with URL, title, counts, visible text samples, active element, and recent console summarypage_evaluate- Run bounded JavaScript in the current page and return a JSON-safe resultpage_scroll- Usepage_scroll(pixels=...)for relative scrolling, or passx/yfor an absolute positionkeyboard_press- Send keys to the active element/page without echoing the input in resultspage_resize- Adjust browser windowpage_pointer_move- Move to exact viewport CSS coordinates withdirector bounded deterministicnaturalmotionpage_pointer_drag- Perform one failure-safe coordinate drag through up to six optional ordered waypoints with the selected profilepage_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 hostspage_click_xy- Move withdirectornaturalmotion, optionally wait for an explicit delay, then press and release at the exact targetpage_close- Close browserpage_get_url- Get current URLpage_dialog_observe- Wait for and inspect a pending native alert, confirm, or prompt without handling itpage_dialog_respond- Usepage_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 stateframe_snapshot- Useframe_snapshot(frame_selector="...")orframe_indexto inspect one iframe with bounded outline dataframe_find- Find an element inside a selected iframeshadow_find- Find one element inside a shadow root exposed by the current supported DrissionPage runtime, including tested closed rootsshadow_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 thembrowser_user_agent_set- Override the user agent and optional platform, returning both the accepted and previous user agentsbrowser_cache_clear- Clear HTTP cache while preserving Cookies, localStorage, and sessionStoragebrowser_permission_get- Query one browser permission for the current document origin without opening an OS promptbrowser_permission_set- Usebrowser_permission_set(setting="granted")(or"denied"/"prompt") for an exact origin/current Chromium contextbrowser_permissions_reset- Reset permission overrides for the current Chromium context
πͺ Cookies & Storage (7 tools)
browser_cookies_get- Read normalized cookies with values redacted by defaultbrowser_cookies_set- Set up to 100 cookies in one call and return accepted metadata with redacted valuesbrowser_cookies_delete- Delete one named cookie with optional URL/domain/path scopebrowser_cookies_clear- Clear all browser cookiesstorage_get- Read localStorage/sessionStorage by key or as a map, with values redacted unlessinclude_values=truestorage_set- Set one localStorage/sessionStorage item without echoing the valuestorage_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- Usewait_for_url(url_pattern="...")until the current URL contains the supplied textwait_until- Usewait_until(condition="text_contains", value="...")or another documented condition/value pairwait_time- Delay execution
π Network Control & Observation (4 tools)
network_listen_start- Start bounded HTTP/XHR/Fetch observation through DrissionPagenetwork_listen_wait- Wait for bounded packet metadata with optional redacted headers or body excerptsnetwork_listen_stop- Stop observation and optionally clear queued packetsnetwork_blocked_urls_set- Usenetwork_blocked_urls_set(urls=[...])to replace blocked URL patterns; an empty list clears them
π§© Optional Skills Discovery
Resource:
drissionpage://skills/catalogPrompts: none
Repository examples:
cross-origin-iframe-probe,turnstile-testing, andxiaohongshu-content-researchEntry point:
skills/<skill-name>/SKILL.md; catalog schema v2 includes Skill/MCP versions, required tools, fixture, fixedv0.8.4source revision, verification status, and SHA-256Skills 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 |
Frame discovery, cross-origin diagnosis, coordinate fallback, and outside verification | Cannot read the inner DOM of a cross-origin iframe | |
Cloudflare test fixtures, authorized production challenge interaction, coordinate geometry, and parent-page checks | Use the documented support matrix and verify the resulting page state | |
Bounded read-only note research and the deterministic | 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 |
Installation, tools, and architecture | |
Supported Python, DrissionPage, MCP, and browser versions | |
Public MCP tool names, inputs, annotations, and response shape | |
Doctor command, browser startup, and client setup fixes | |
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 playgroundKey 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
Codex CLI / IDE (Recommended)
[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-mcpIf 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 = 60JSON 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 --jsonGitHub 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 --versionShould 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 # macOSCodex / MCP Client Not Finding Server?
Codex: run
codex mcp list; in the TUI, run/mcpJSON 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 MCPoutputSchemaStructured recovery hints in
error.details.hintsfor common failuresSanitized browser failures with
DIALOG_PENDING/DIALOG_NOT_FOUNDrecovery and strict standards-compliant JSON for non-finite JavaScript valuesBalanced
page_snapshotoutput so link-heavy pages still expose controls and formsAtomic 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_idtargeting across 63 tab-scoped tools, per-tab action serialization, cross-tab parallelism, and draining close/cleanup semanticsTab management with
tab_list,tab_switch,tab_close, andpage_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 optionalobserve=truechanges on navigation, click, and typeConsole observability with
page_console_logs, console summary inpage_observe, and console change fields inobserve=trueForm, 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 safeArtifactRefmetadataSecret-bearing Web Storage values require
include_values=true; keyboard and keyboard-download results expose redacted metadata onlyPer-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, andnetwork_listen_stopfor HTTP/XHR/Fetch observationPublic-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
directand deterministic boundednaturalprofiles forpage_pointer_move,page_pointer_drag, andpage_click_xy, with exact endpoints and failure-safe releaseOptional bounded
page_pointer_drag.waypointsfor one held multi-segment canvas, map, box-selection, or visual-editor gestureFile 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-backedshadow_*, with narrower pointer targeting documented separatelyFrame 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=1is reserved for restricted container/root environmentsNo 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 = 60Verify with:
codex mcp listClaude 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!
Fork the repository
Create a feature branch
Make focused changes
Run the relevant checks
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
π 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_startreturns a newlistener_token, lifecycle state, packet cursor, and startup timing for each listener generation.network_listen_waitaccepts the token and reports cumulative consumption, monotonic packet indices, elapsed time, explicit timeout status, and remaining timeout budget.network_listen_stoprejects stale tokens withLISTENER_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 toolsbrowser_cache_clearClear Browser CacheADestructiveIdempotent
Clear HTTP cache without clearing cookies or Web Storage.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 CookiesBDestructiveIdempotent
Clear all cookies from the active browser context.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 CookieBDestructiveIdempotent
Delete one named browser cookie with optional URL/domain/path scope.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| name | Yes | ||
| path | No | ||
| domain | No | ||
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 CookiesBRead-onlyIdempotent
Read normalized cookies with values redacted by default.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| all_info | No | ||
| all_domains | No | ||
| include_values | No | Return cookie values. Defaults to false to avoid leaking secrets. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 CookiesADestructiveIdempotent
Set a bounded batch of browser cookies. Successful results preserve accepted metadata while redacting cookie values.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| cookies | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 HeadersADestructiveIdempotent
Replace extra HTTP request headers for the current tab. Successful results return header names with values redacted; an empty object clears them.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| headers | Yes | Extra request headers. An empty object clears all configured values. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 PermissionARead-onlyIdempotent
Query one browser permission state for the current document origin without opening an operating-system prompt.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| permission | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 PermissionADestructiveIdempotent
Set one permission to granted, denied, or prompt for one bounded origin in the current Chromium context.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | Exact HTTP(S) origin. Defaults to the current page origin. | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| setting | Yes | ||
| permission | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 PermissionsBDestructiveIdempotent
Reset all Chromium permission overrides in the current browser context.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 AgentADestructiveIdempotent
Override the current tab user agent and optional platform, returning the previous user agent so callers can restore it.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| platform | No | ||
| user_agent | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ElementCDestructive
Set a checkbox or radio element to checked/unchecked.
| Name | Required | Description | Default |
|---|---|---|---|
| by_js | No | Use JavaScript-backed checking. | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| checked | No | Desired checked state. | |
| timeout | No | ||
| selector | Yes | String locator or structured checkbox target. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ElementBDestructive
Click an element found by CSS selector or XPath. Bare selectors are treated as CSS; use text:... for text matching.
| Name | Required | Description | Default |
|---|---|---|---|
| button | No | Native pointer button to use. | left |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| observe | No | Return a compact before/after page change summary. | |
| timeout | No | Timeout in seconds to wait for element | |
| selector | Yes | CSS selector or XPath to find the element. Bare selectors are CSS; use text:... for text matching or explicit tag:/css:/xpath:/@attr locators. | |
| click_count | No | Native click count; 2 requests double-click semantics. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 DownloadBDestructive
Perform one selector, coordinate, or keyboard trigger, await one completed download, and return an integrity-checked safe artifact receipt.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| timeout | No | Shared maximum seconds for target resolution, click, and download completion. | |
| selector | Yes | Selector/accessibility target, viewport coordinate click, or keyboard input that starts one download. | |
| operation_key | No | Optional live-task key. Reusing the same key replays the frozen artifact result without clicking again. | |
| expected_filename | No | Optional exact basename constraint for the downloaded artifact. | |
| expected_mime_type | No | Optional MIME constraint inferred from the completed filename. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 UploadBDestructive
Arm Chromium's file chooser, click one trigger, inject approved files, and always remove interception without opening a native operating-system picker.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | ||
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| timeout | No | ||
| selector | Yes | Selector/accessibility target that opens a file chooser. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ElementBRead-onlyIdempotent
Find an element on the page using CSS selector or XPath. Bare selectors are treated as CSS; use text:... for text matching.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| timeout | No | Timeout in seconds to wait for element | |
| selector | Yes | CSS 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ElementsARead-onlyIdempotent
Find multiple matching elements with bounded text/attribute summaries and recommended selectors for repeated lists, cards, and tables.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of matched elements to return | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| selector | Yes | CSS selector, XPath, or explicit DrissionPage locator for repeated elements. Bare selectors are CSS. | |
| include_html | No | Include bounded outerHTML excerpts for each returned element |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 AttributeCRead-onlyIdempotent
Get an attribute value from an element
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| selector | Yes | CSS selector or XPath to find the element. Bare selectors are CSS; use text:... for text matching or explicit tag:/css:/xpath:/@attr locators. | |
| attribute | Yes | Attribute name to retrieve |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 HTMLBRead-onlyIdempotent
Get HTML from an element or the whole page
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| selector | No | CSS selector or XPath; empty means whole page. Bare selectors are CSS; use text:... for text matching. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 PropertyARead-onlyIdempotent
Get a live DOM property value from an element, such as an input's current value
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| property | Yes | DOM property to retrieve, e.g. value | |
| selector | Yes | CSS 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 TextCRead-onlyIdempotent
Get text from an element or the whole page
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| selector | No | CSS selector or XPath; empty means whole page. Bare selectors are CSS; use text:... for text matching. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ElementCDestructive
Move the mouse over an element.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| timeout | No | ||
| offset_x | No | Optional hover X offset. | |
| offset_y | No | Optional hover Y offset. | |
| selector | Yes | String locator or structured element target. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ViewBDestructive
Scroll an element into the viewport before a later action.
| Name | Required | Description | Default |
|---|---|---|---|
| center | No | Center the element in the viewport. | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| timeout | No | ||
| selector | Yes | String locator or structured element target. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 OptionCDestructive
Select an option from a select element by value, text, or index.
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Select by value, text, or index. | value |
| value | Yes | Option value, text, or index string. | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| timeout | No | ||
| selector | Yes | String locator or structured select target. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 StateBRead-onlyIdempotent
Return DrissionPage element state and page/viewport geometry for a selector or accessibility target.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| timeout | No | ||
| selector | Yes | String locator or structured selector/accessibility target with frame and shadow scope. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 TextCDestructive
Type text into an input element
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to type into the element | |
| clear | No | Clear existing input content before typing | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| observe | No | Return a compact before/after page change summary. | |
| timeout | No | Timeout in seconds to wait for element | |
| selector | Yes | CSS 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 FileBDestructive
Set files on an input[type=file]. Paths must exist under DP_MCP_UPLOAD_ROOT and response data only returns safe file names.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | One or more local file paths under DP_MCP_UPLOAD_ROOT. Absolute paths are accepted but never echoed back in tool results. | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| timeout | No | Timeout in seconds to wait for the file input. | |
| selector | Yes | CSS/XPath/DrissionPage locator for an input[type=file]. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 FrameBRead-onlyIdempotent
Find an element inside a selected iframe/frame without global frame state.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| timeout | No | ||
| selector | Yes | Selector inside the target frame. | |
| frame_index | No | ||
| frame_selector | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 FramesBRead-onlyIdempotent
List iframe/frame contexts on the current page without changing global state.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 SnapshotCRead-onlyIdempotent
Return a bounded page outline from a selected iframe/frame.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| timeout | No | ||
| frame_index | No | Zero-based frame index. | |
| include_html | No | ||
| max_elements | No | ||
| frame_selector | No | Optional iframe/frame selector. When empty, frame_index is used. | |
| max_text_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 PressBDestructive
Send keyboard text/keys to the active page element without echoing the input in the result.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes | Text or DrissionPage key string to send. | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| interval | No | Optional interval between key events in seconds. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 URLsBDestructiveIdempotent
Replace URL patterns blocked for the current tab. Successful results echo patterns; an empty list clears them.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | URL patterns with optional wildcards. An empty list clears them. | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ListenerADestructive
Start beta HTTP/XHR/Fetch network observation for the active tab. This observes packets only; it does not intercept or modify requests.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | Clear any existing listener queue before starting. | |
| method | No | Optional HTTP method filter such as GET or POST. | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| targets | No | Optional URL substrings or regex patterns passed to DrissionPage. | |
| is_regex | No | Treat targets as regular expressions when targets are provided. | |
| resource_type | No | Optional resource type filter such as Fetch, XHR, or Document. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ListenerADestructive
Stop beta network observation for the active tab and optionally clear it.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | Clear the listener queue while stopping. | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| listener_token | No | Optional token returned by network_listen_start. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ListenerARead-only
Wait for observed HTTP/XHR/Fetch packets and return bounded metadata. Bodies and headers are opt-in and sensitive headers are redacted.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum packets to return. | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| timeout | No | Maximum seconds to wait for packets. | |
| include_body | No | Include bounded request/response body excerpts. | |
| listener_token | No | Optional token returned by network_listen_start. When supplied, stale listeners are rejected instead of silently reading another listener. | |
| max_body_chars | No | Maximum characters for each body excerpt when include_body is true. | |
| include_headers | No | Include request/response headers with sensitive names redacted. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 SnapshotBRead-onlyIdempotent
Return a bounded Chromium accessibility tree for the page or a scoped selector/frame/shadow target.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Optional selector/accessibility element whose AX subtree is returned. | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| max_nodes | No | ||
| include_values | No | Return accessibility field values. Defaults to false to avoid leaking secrets. | |
| include_ignored | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 CoordinatesBDestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Viewport X coordinate in CSS pixels | |
| y | Yes | Viewport Y coordinate in CSS pixels | |
| button | No | Mouse button to press and release | left |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| element | No | Human-readable element or interaction description | |
| profile | No | Movement profile: direct emits one exact move; natural emits a deterministic 24-step eased cubic Bezier path with bounded 8-14ms intervals and an exact endpoint | direct |
| delay_before_press_ms | No | Optional 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 BrowserCDestructive
Close the current page/browser
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 LogsBRead-onlyIdempotent
Read bounded browser console messages from the current tab. Supports level filtering, cursor pagination, and a maximum result limit.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Console level filter: all, error, warning, warn, info, or log. | all |
| limit | No | Maximum number of console entries to return. | |
| since | No | Return only log entries with index greater than this cursor. | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 DialogARead-onlyIdempotent
Observe a pending native alert, confirm, or prompt and return its bounded message without handling it.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| timeout | No | Seconds to wait for a pending alert, confirm, or prompt. | |
| max_message_chars | No | Maximum dialog message characters returned to the MCP client. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 DialogADestructive
Accept or dismiss one pending alert, confirm, or prompt through a capability-probed native DrissionPage dialog path.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| timeout | No | Maximum seconds to wait for a pending dialog. Zero checks immediately; an already-pending dialog still receives a bounded native response budget. | |
| prompt_text | No | Text for an accepted prompt. The value is never returned. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 JavaScriptADestructive
Run a bounded JavaScript function body in the current page and return a JSON-safe result. This can mutate the page.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | JSON arguments passed to the JavaScript function body | |
| script | Yes | JavaScript function body to run in the current page. Use return to provide a JSON-serializable result. | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| max_chars | No | Maximum serialized JSON characters returned in result |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ArtifactCDestructive
Generate one PDF or MHTML file under DP_MCP_ARTIFACT_ROOT and return checksum, safe relative path, and exact-once receipt evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | ||
| format | Yes | ||
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| filename | No | ||
| landscape | No | ||
| margin_top | No | ||
| margin_left | No | ||
| page_ranges | No | ||
| paper_width | No | ||
| margin_right | No | ||
| paper_height | No | ||
| margin_bottom | No | ||
| operation_key | No | ||
| print_background | No | ||
| prefer_css_page_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 URLARead-onlyIdempotent
Get the current URL of the page
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 BackCDestructive
Go back to the previous page in browser history
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ForwardBDestructive
Go forward to the next page in browser history
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 PageBRead-onlyIdempotent
Return a compact current-page fingerprint with URL, title, ready state, element counts, visible text samples, active element, and recent console summary.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| max_texts | No | Maximum number of visible text samples to return | |
| max_text_chars | No | Maximum characters per visible text sample |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 CoordinatesADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| end_x | Yes | Viewport drag end X in CSS pixels | |
| end_y | Yes | Viewport drag end Y in CSS pixels | |
| button | No | Mouse button held during the drag | left |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| element | No | Human-readable draggable element or interaction description | |
| profile | No | Movement profile for the approach and every held segment: direct or deterministic bounded natural motion | direct |
| start_x | Yes | Viewport drag start X in CSS pixels | |
| start_y | Yes | Viewport drag start Y in CSS pixels | |
| waypoints | No | Optional ordered viewport points visited while the button remains pressed |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 DestinationADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| button | No | left | |
| source | Yes | ||
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| profile | No | direct | |
| destination | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 CoordinatesADestructive
Move the viewport pointer to exact CSS pixel coordinates without pressing a button, using either one direct move or a bounded natural trajectory.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Viewport X coordinate in CSS pixels | |
| y | Yes | Viewport Y coordinate in CSS pixels | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| element | No | Human-readable element or interaction description | |
| profile | No | Movement profile: direct emits one exact move; natural emits a deterministic 24-step eased cubic Bezier path with bounded 8-14ms intervals and an exact endpoint | direct |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 PageCDestructive
Refresh the current page
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 WindowCDestructive
Resize the browser window to specified dimensions
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | Width of the browser window | |
| height | Yes | Height of the browser window | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ScreenshotBRead-onlyIdempotent
Take an inline screenshot of the current page
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| full_page | No | Take a full page screenshot |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ScreenshotBDestructive
Save a screenshot to a local path under DP_MCP_SCREENSHOT_ROOT
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Local file path under DP_MCP_SCREENSHOT_ROOT to save screenshot | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| full_page | No | Take a full page screenshot |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 PageCDestructive
Scroll the current page by direction or to a position.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X coordinate for direction=position. | |
| y | No | Y coordinate for direction=position. | |
| pixels | No | Pixel distance for directional scrolling. | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| direction | No | Scroll direction or target: down, up, left, right, top, bottom, half, position. | down |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 SnapshotBRead-onlyIdempotent
Return a bounded page outline with text excerpt, headings, links, buttons, inputs, forms, and recommended selectors.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| include_html | No | Include bounded outerHTML excerpts for summarized elements | |
| max_elements | No | Maximum total headings/links/buttons/inputs/forms to return | |
| max_text_chars | No | Maximum page text excerpt characters to return |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ElementBRead-onlyIdempotent
Find one element inside a shadow root exposed by the supported DrissionPage runtime.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| timeout | No | ||
| selector | Yes | Selector inside the shadow root. | |
| host_selector | Yes | Selector for the shadow host element. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ElementsCRead-onlyIdempotent
Find repeated elements inside a shadow root exposed by the supported DrissionPage runtime.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| selector | Yes | Selector inside the shadow root. | |
| include_html | No | ||
| host_selector | Yes | Selector for the shadow host element. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 StorageADestructive
Clear one key or all items from localStorage/sessionStorage.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Optional key. Empty clears the area. | |
| area | No | local | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 StorageARead-onlyIdempotent
Read localStorage or sessionStorage by key or as a bounded map, with values redacted unless explicitly requested.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Optional key. Empty returns all keys. | |
| area | No | local | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| include_values | No | Return storage values instead of redacting non-empty values. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 StorageADestructive
Set one localStorage/sessionStorage item. The value is not echoed.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| area | No | local | |
| value | Yes | String value to store. Not echoed in result. | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 TabADestructive
Close a browser tab by id from tab_list without closing the whole browser.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes | MCP tab id from tab_list, or the underlying DrissionPage native tab id. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 TabsARead-onlyIdempotent
List browser tabs tracked by the current DrissionPage MCP session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 TabADestructive
Switch the active browser tab by id from tab_list.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes | MCP tab id from tab_list, or the underlying DrissionPage native tab id. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 ElementBRead-onlyIdempotent
Wait for an element to appear on the page. Bare selectors are treated as CSS; use text:... for text matching.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| timeout | No | Timeout in seconds | |
| selector | Yes | CSS selector or XPath to wait for. Bare selectors are CSS; use text:... for text matching or explicit tag:/css:/xpath:/@attr locators. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 URLBRead-onlyIdempotent
Wait for the current URL to contain a substring
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| timeout | No | Timeout in seconds | |
| url_pattern | Yes | Substring or pattern expected in the current URL |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 TimeBRead-onlyIdempotent
Wait for a specific amount of time
| Name | Required | Description | Default |
|---|---|---|---|
| seconds | Yes | Number of seconds to wait |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 UntilBRead-onlyIdempotent
Wait for observable page state: element present/visible/hidden/detached/clickable/stable, text contains/matches, or URL contains/matches.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Attribute or property name for attribute/property conditions | |
| value | No | Expected value or substring/regular expression, depending on condition | |
| tab_id | No | Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start. | |
| timeout | No | Timeout in seconds | |
| interval | No | Polling interval in seconds | |
| selector | No | CSS/XPath/DrissionPage locator for element or text conditions | |
| condition | Yes | Condition to wait for | |
| stable_ms | No | Element stability window for the stable condition |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
63 tool updates
v0.8.8- Changed
browser_cache_clear4 fields changed- changed
Input schema / descriptionPrevious value: -"Empty input schema for tools that don't require arguments."New value: +"Empty argument shape for a tab-scoped tool." - added
Input schema / properties / tab_idAdded 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" +} - changed
Input schema / titlePrevious value: -"EmptyInput"New value: +"TabScopedEmptyInput" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
browser_cookies_clear2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
browser_cookies_delete2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
browser_cookies_get2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
browser_cookies_set2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
browser_headers_set2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
browser_permission_get2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
browser_permission_set2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
browser_permissions_reset4 fields changed- changed
Input schema / descriptionPrevious value: -"Empty input schema for tools that don't require arguments."New value: +"Empty argument shape for a tab-scoped tool." - added
Input schema / properties / tab_idAdded 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" +} - changed
Input schema / titlePrevious value: -"EmptyInput"New value: +"TabScopedEmptyInput" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
browser_user_agent_set2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_check2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_click2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_click_and_download17 fields changed- added
Input schema / properties / tab_idAdded 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" +} - added
Output schema / $defs / ElementClickAndDownloadFailedData / properties / tab_idAdded value: +{ + "description": "MCP tab id captured for this operation.", + "maxLength": 128, + "minLength": 1, + "type": "string" +} - changed
Output schema / $defs / ElementClickAndDownloadFailedData / requiredPrevious value: -[ - "operation_key", - "status", - "artifact", - "receipt" -]New value: +[ + "operation_key", + "status", + "artifact", + "receipt", + "tab_id" +] - added
Output schema / $defs / ElementClickAndDownloadFailedReceipt / properties / tab_id / descriptionAdded value: +"MCP tab id captured for this operation." - removed
Output schema / $defs / ElementClickAndDownloadFailedReceipt / properties / tab_id / titleRemoved value: -"Tab Id" - added
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / tab_idAdded value: +{ + "description": "MCP tab id captured for this operation.", + "maxLength": 128, + "minLength": 1, + "type": "string" +} - changed
Output schema / $defs / ElementClickAndDownloadIndeterminateData / requiredPrevious value: -[ - "operation_key", - "status", - "artifact", - "receipt" -]New value: +[ + "operation_key", + "status", + "artifact", + "receipt", + "tab_id" +] - added
Output schema / $defs / ElementClickAndDownloadIndeterminateReceipt / properties / tab_id / descriptionAdded value: +"MCP tab id captured for this operation." - removed
Output schema / $defs / ElementClickAndDownloadIndeterminateReceipt / properties / tab_id / titleRemoved value: -"Tab Id" - added
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / tab_idAdded value: +{ + "description": "MCP tab id captured for this operation.", + "maxLength": 128, + "minLength": 1, + "type": "string" +} - changed
Output schema / $defs / ElementClickAndDownloadSuccessData / requiredPrevious value: -[ - "operation_key", - "status", - "artifact", - "receipt" -]New value: +[ + "operation_key", + "status", + "artifact", + "receipt", + "tab_id" +] - added
Output schema / $defs / ElementClickAndDownloadSuccessReceipt / properties / tab_id / descriptionAdded value: +"MCP tab id captured for this operation." - removed
Output schema / $defs / ElementClickAndDownloadSuccessReceipt / properties / tab_id / titleRemoved value: -"Tab Id" - added
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / tab_idAdded value: +{ + "description": "MCP tab id captured for this operation.", + "maxLength": 128, + "minLength": 1, + "type": "string" +} - changed
Output schema / $defs / ElementClickAndDownloadValidationFailedData / requiredPrevious value: -[ - "operation_key", - "status", - "artifact", - "receipt" -]New value: +[ + "operation_key", + "status", + "artifact", + "receipt", + "tab_id" +] - added
Output schema / $defs / ElementClickAndDownloadValidationFailedReceipt / properties / tab_id / descriptionAdded value: +"MCP tab id captured for this operation." - removed
Output schema / $defs / ElementClickAndDownloadValidationFailedReceipt / properties / tab_id / titleRemoved value: -"Tab Id"
- Changed
element_click_and_upload2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_find2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_find_all2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_get_attribute2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_get_html2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_get_property2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_get_text2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_hover2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_scroll_into_view3 fields changed- added
Input schema / properties / tab_idAdded 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" +} - added
Output schema / $defsAdded 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" + } +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_select2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_state_get5 fields changed- added
Input schema / properties / tab_idAdded 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" +} - added
Output schema / $defs / ElementPresentationDataAdded 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" +} - added
Output schema / $defs / ElementRectData / properties / viewport_coordinate_spaceAdded value: +{ + "enum": [ + "top_level_viewport", + "target_document_viewport" + ], + "title": "Viewport Coordinate Space", + "type": "string" +} - changed
Output schema / $defs / ElementRectData / requiredPrevious 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" +] - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_type2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_upload_file2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
frame_find3 fields changed- added
Input schema / properties / tab_idAdded 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" +} - added
Output schema / $defsAdded 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" + } +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
frame_list3 fields changed- added
Input schema / properties / tab_idAdded 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" +} - added
Output schema / $defsAdded 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" + } +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
frame_snapshot3 fields changed- added
Input schema / properties / tab_idAdded 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" +} - added
Output schema / $defsAdded 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" + } +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
keyboard_press2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
network_blocked_urls_set2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
network_listen_start2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
network_listen_stop3 fields changed- added
Input schema / properties / listener_tokenAdded value: +{ + "anyOf": [ + { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional token returned by network_listen_start.", + "title": "Listener Token" +} - added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
network_listen_wait3 fields changed- added
Input schema / properties / listener_tokenAdded 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" +} - added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_accessibility_snapshot2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_click_xy2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_console_logs2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_dialog_observe2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_dialog_respond4 fields changed- added
Input schema / properties / tab_idAdded 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" +} - added
Output schema / $defs / ActionReceipt / properties / tab_id / descriptionAdded value: +"MCP tab id captured for this operation." - removed
Output schema / $defs / ActionReceipt / properties / tab_id / titleRemoved value: -"Tab Id" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_evaluate2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_export_artifact4 fields changed- added
Input schema / properties / tab_idAdded 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" +} - added
Output schema / $defs / PageExportArtifactReceipt / properties / tab_id / descriptionAdded value: +"MCP tab id captured for this operation." - removed
Output schema / $defs / PageExportArtifactReceipt / properties / tab_id / titleRemoved value: -"Tab Id" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_get_url4 fields changed- changed
Input schema / descriptionPrevious value: -"Empty input schema for tools that don't require arguments."New value: +"Empty argument shape for a tab-scoped tool." - added
Input schema / properties / tab_idAdded 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" +} - changed
Input schema / titlePrevious value: -"EmptyInput"New value: +"TabScopedEmptyInput" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_go_back4 fields changed- changed
Input schema / descriptionPrevious value: -"Empty input schema for tools that don't require arguments."New value: +"Empty argument shape for a tab-scoped tool." - added
Input schema / properties / tab_idAdded 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" +} - changed
Input schema / titlePrevious value: -"EmptyInput"New value: +"TabScopedEmptyInput" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_go_forward4 fields changed- changed
Input schema / descriptionPrevious value: -"Empty input schema for tools that don't require arguments."New value: +"Empty argument shape for a tab-scoped tool." - added
Input schema / properties / tab_idAdded 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" +} - changed
Input schema / titlePrevious value: -"EmptyInput"New value: +"TabScopedEmptyInput" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_navigate5 fields changed- added
Input schema / properties / backgroundAdded 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" +} - added
Input schema / properties / new_contextAdded 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" +} - added
Input schema / properties / new_windowAdded value: +{ + "default": false, + "description": "Open the requested new tab in a separate window. Requires new_tab=true.", + "title": "New Window", + "type": "boolean" +} - added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_observe2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_pointer_drag2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_pointer_drag_element2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_pointer_move2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_refresh4 fields changed- changed
Input schema / descriptionPrevious value: -"Empty input schema for tools that don't require arguments."New value: +"Empty argument shape for a tab-scoped tool." - added
Input schema / properties / tab_idAdded 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" +} - changed
Input schema / titlePrevious value: -"EmptyInput"New value: +"TabScopedEmptyInput" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_resize2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_screenshot2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_screenshot_save2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_scroll2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_snapshot2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
shadow_find2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
shadow_find_all2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
storage_clear2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
storage_get2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
storage_set2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
wait_for_element2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
wait_for_url2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
wait_until2 fields changed- added
Input schema / properties / tab_idAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
49 tool updates
v0.8.0- Added
browser_cache_clear - Added
browser_cookies_clear - Added
browser_cookies_delete - Added
browser_cookies_set - Added
browser_headers_set - Added
browser_permission_get - Added
browser_permission_set - Added
browser_permissions_reset - Added
browser_user_agent_set - Changed
element_check6 fields changed- added
Input schema / $defsAdded 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" + } +} - added
Input schema / properties / selector / anyOfAdded value: +[ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "discriminator": { + "mapping": { + "accessibility": "#/$defs/AccessibilityTargetInput", + "selector": "#/$defs/SelectorTargetInput" + }, + "propertyName": "kind" + }, + "oneOf": [ + { + "$ref": "#/$defs/SelectorTargetInput" + }, + { + "$ref": "#/$defs/AccessibilityTargetInput" + } + ] + } +] - changed
Input schema / properties / selector / descriptionPrevious value: -"CSS/XPath/DrissionPage checkbox locator."New value: +"String locator or structured checkbox target." - removed
Input schema / properties / selector / typeRemoved value: -"string" - changed
Input schema / properties / timeout / typePrevious value: -"integer"New value: +"number" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_click5 fields changed- added
Input schema / $defsAdded 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" + } +} - added
Input schema / properties / selector / anyOfAdded value: +[ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "discriminator": { + "mapping": { + "accessibility": "#/$defs/AccessibilityTargetInput", + "selector": "#/$defs/SelectorTargetInput" + }, + "propertyName": "kind" + }, + "oneOf": [ + { + "$ref": "#/$defs/SelectorTargetInput" + }, + { + "$ref": "#/$defs/AccessibilityTargetInput" + } + ] + } +] - removed
Input schema / properties / selector / typeRemoved value: -"string" - changed
Input schema / properties / timeout / typePrevious value: -"integer"New value: +"number" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_click_and_download95 fields changed- added
Input schema / $defsAdded 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" + } +} - added
Input schema / properties / selector / anyOfAdded 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" + } + ] + } +] - changed
Input schema / properties / selector / descriptionPrevious value: -"CSS/XPath/DrissionPage selector for the download control."New value: +"Selector/accessibility target, viewport coordinate click, or keyboard input that starts one download." - removed
Input schema / properties / selector / maxLengthRemoved value: -500 - removed
Input schema / properties / selector / minLengthRemoved value: -1 - removed
Input schema / properties / selector / typeRemoved value: -"string" - removed
Output schema / $defs / ArtifactRef / properties / kind / constRemoved value: -"download" - added
Output schema / $defs / ArtifactRef / properties / kind / enumAdded value: +[ + "download", + "page_export" +] - added
Output schema / $defs / CoordinateDownloadTriggerDataAdded 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" +} - added
Output schema / $defs / ElementClickAndDownloadFailedData / oneOfAdded 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" + ] + } +] - added
Output schema / $defs / ElementClickAndDownloadFailedData / properties / exactAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Exact" +} - added
Output schema / $defs / ElementClickAndDownloadFailedData / properties / frame_selectorsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Frame Selectors" +} - added
Output schema / $defs / ElementClickAndDownloadFailedData / properties / locator / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / $defs / ElementClickAndDownloadFailedData / properties / locator / defaultAdded value: +null - removed
Output schema / $defs / ElementClickAndDownloadFailedData / properties / locator / typeRemoved value: -"string" - added
Output schema / $defs / ElementClickAndDownloadFailedData / properties / nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Name" +} - added
Output schema / $defs / ElementClickAndDownloadFailedData / properties / roleAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Role" +} - added
Output schema / $defs / ElementClickAndDownloadFailedData / properties / selector / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / $defs / ElementClickAndDownloadFailedData / properties / selector / defaultAdded value: +null - removed
Output schema / $defs / ElementClickAndDownloadFailedData / properties / selector / typeRemoved value: -"string" - added
Output schema / $defs / ElementClickAndDownloadFailedData / properties / selector_normalized / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - added
Output schema / $defs / ElementClickAndDownloadFailedData / properties / selector_normalized / defaultAdded value: +null - removed
Output schema / $defs / ElementClickAndDownloadFailedData / properties / selector_normalized / typeRemoved value: -"boolean" - added
Output schema / $defs / ElementClickAndDownloadFailedData / properties / selector_strategy / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / $defs / ElementClickAndDownloadFailedData / properties / selector_strategy / defaultAdded value: +null - removed
Output schema / $defs / ElementClickAndDownloadFailedData / properties / selector_strategy / typeRemoved value: -"string" - added
Output schema / $defs / ElementClickAndDownloadFailedData / properties / shadow_hostsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Shadow Hosts" +} - added
Output schema / $defs / ElementClickAndDownloadFailedData / properties / target_kindAdded value: +{ + "anyOf": [ + { + "enum": [ + "selector", + "accessibility" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Target Kind" +} - added
Output schema / $defs / ElementClickAndDownloadFailedData / properties / triggerAdded 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" +} - changed
Output schema / $defs / ElementClickAndDownloadFailedData / requiredPrevious value: -[ - "operation_key", - "selector", - "locator", - "selector_strategy", - "selector_normalized", - "status", - "artifact", - "receipt" -]New value: +[ + "operation_key", + "status", + "artifact", + "receipt" +] - added
Output schema / $defs / ElementClickAndDownloadIndeterminateData / oneOfAdded 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" + ] + } +] - added
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / exactAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Exact" +} - added
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / frame_selectorsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Frame Selectors" +} - added
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / locator / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / locator / defaultAdded value: +null - removed
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / locator / typeRemoved value: -"string" - added
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Name" +} - added
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / roleAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Role" +} - added
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector / defaultAdded value: +null - removed
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector / typeRemoved value: -"string" - added
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_normalized / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - added
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_normalized / defaultAdded value: +null - removed
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_normalized / typeRemoved value: -"boolean" - added
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_strategy / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_strategy / defaultAdded value: +null - removed
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_strategy / typeRemoved value: -"string" - added
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / shadow_hostsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Shadow Hosts" +} - added
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / target_kindAdded value: +{ + "anyOf": [ + { + "enum": [ + "selector", + "accessibility" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Target Kind" +} - added
Output schema / $defs / ElementClickAndDownloadIndeterminateData / properties / triggerAdded 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" +} - changed
Output schema / $defs / ElementClickAndDownloadIndeterminateData / requiredPrevious value: -[ - "operation_key", - "selector", - "locator", - "selector_strategy", - "selector_normalized", - "status", - "artifact", - "receipt" -]New value: +[ + "operation_key", + "status", + "artifact", + "receipt" +] - added
Output schema / $defs / ElementClickAndDownloadSuccessData / oneOfAdded 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" + ] + } +] - added
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / exactAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Exact" +} - added
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / frame_selectorsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Frame Selectors" +} - added
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / locator / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / locator / defaultAdded value: +null - removed
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / locator / typeRemoved value: -"string" - added
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Name" +} - added
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / roleAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Role" +} - added
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / selector / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / selector / defaultAdded value: +null - removed
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / selector / typeRemoved value: -"string" - added
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_normalized / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - added
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_normalized / defaultAdded value: +null - removed
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_normalized / typeRemoved value: -"boolean" - added
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_strategy / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_strategy / defaultAdded value: +null - removed
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_strategy / typeRemoved value: -"string" - added
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / shadow_hostsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Shadow Hosts" +} - added
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / target_kindAdded value: +{ + "anyOf": [ + { + "enum": [ + "selector", + "accessibility" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Target Kind" +} - added
Output schema / $defs / ElementClickAndDownloadSuccessData / properties / triggerAdded 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" +} - changed
Output schema / $defs / ElementClickAndDownloadSuccessData / requiredPrevious value: -[ - "operation_key", - "selector", - "locator", - "selector_strategy", - "selector_normalized", - "status", - "artifact", - "receipt" -]New value: +[ + "operation_key", + "status", + "artifact", + "receipt" +] - added
Output schema / $defs / ElementClickAndDownloadValidationFailedData / oneOfAdded 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" + ] + } +] - added
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / exactAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Exact" +} - added
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / frame_selectorsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Frame Selectors" +} - added
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / locator / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / locator / defaultAdded value: +null - removed
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / locator / typeRemoved value: -"string" - added
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Name" +} - added
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / roleAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Role" +} - added
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector / defaultAdded value: +null - removed
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector / typeRemoved value: -"string" - added
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_normalized / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - added
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_normalized / defaultAdded value: +null - removed
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_normalized / typeRemoved value: -"boolean" - added
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_strategy / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_strategy / defaultAdded value: +null - removed
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_strategy / typeRemoved value: -"string" - added
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / shadow_hostsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Shadow Hosts" +} - added
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / target_kindAdded value: +{ + "anyOf": [ + { + "enum": [ + "selector", + "accessibility" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Target Kind" +} - added
Output schema / $defs / ElementClickAndDownloadValidationFailedData / properties / triggerAdded 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" +} - changed
Output schema / $defs / ElementClickAndDownloadValidationFailedData / requiredPrevious value: -[ - "operation_key", - "selector", - "locator", - "selector_strategy", - "selector_normalized", - "status", - "artifact", - "receipt" -]New value: +[ + "operation_key", + "status", + "artifact", + "receipt" +] - added
Output schema / $defs / KeyboardDownloadTriggerDataAdded 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" +} - added
Output schema / $defs / KeyboardInputMetadataAdded 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" +}
- Added
element_click_and_upload - Changed
element_find4 fields changed- added
Input schema / $defsAdded 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" + } +} - added
Input schema / properties / selector / anyOfAdded value: +[ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "discriminator": { + "mapping": { + "accessibility": "#/$defs/AccessibilityTargetInput", + "selector": "#/$defs/SelectorTargetInput" + }, + "propertyName": "kind" + }, + "oneOf": [ + { + "$ref": "#/$defs/SelectorTargetInput" + }, + { + "$ref": "#/$defs/AccessibilityTargetInput" + } + ] + } +] - removed
Input schema / properties / selector / typeRemoved value: -"string" - changed
Input schema / properties / timeout / typePrevious value: -"integer"New value: +"number"
- Changed
element_find_all4 fields changed- added
Input schema / $defsAdded 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" + } +} - added
Input schema / properties / selector / anyOfAdded value: +[ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "discriminator": { + "mapping": { + "accessibility": "#/$defs/AccessibilityTargetInput", + "selector": "#/$defs/SelectorTargetInput" + }, + "propertyName": "kind" + }, + "oneOf": [ + { + "$ref": "#/$defs/SelectorTargetInput" + }, + { + "$ref": "#/$defs/AccessibilityTargetInput" + } + ] + } +] - removed
Input schema / properties / selector / typeRemoved value: -"string" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_get_attribute4 fields changed- added
Input schema / $defsAdded 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" + } +} - added
Input schema / properties / selector / anyOfAdded value: +[ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "discriminator": { + "mapping": { + "accessibility": "#/$defs/AccessibilityTargetInput", + "selector": "#/$defs/SelectorTargetInput" + }, + "propertyName": "kind" + }, + "oneOf": [ + { + "$ref": "#/$defs/SelectorTargetInput" + }, + { + "$ref": "#/$defs/AccessibilityTargetInput" + } + ] + } +] - removed
Input schema / properties / selector / typeRemoved value: -"string" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_get_html4 fields changed- added
Input schema / $defsAdded 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" + } +} - added
Input schema / properties / selector / anyOfAdded 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" + } + ] + } +] - removed
Input schema / properties / selector / typeRemoved value: -"string" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_get_property4 fields changed- added
Input schema / $defsAdded 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" + } +} - added
Input schema / properties / selector / anyOfAdded value: +[ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "discriminator": { + "mapping": { + "accessibility": "#/$defs/AccessibilityTargetInput", + "selector": "#/$defs/SelectorTargetInput" + }, + "propertyName": "kind" + }, + "oneOf": [ + { + "$ref": "#/$defs/SelectorTargetInput" + }, + { + "$ref": "#/$defs/AccessibilityTargetInput" + } + ] + } +] - removed
Input schema / properties / selector / typeRemoved value: -"string" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_get_text4 fields changed- added
Input schema / $defsAdded 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" + } +} - added
Input schema / properties / selector / anyOfAdded 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" + } + ] + } +] - removed
Input schema / properties / selector / typeRemoved value: -"string" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_hover6 fields changed- added
Input schema / $defsAdded 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" + } +} - added
Input schema / properties / selector / anyOfAdded value: +[ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "discriminator": { + "mapping": { + "accessibility": "#/$defs/AccessibilityTargetInput", + "selector": "#/$defs/SelectorTargetInput" + }, + "propertyName": "kind" + }, + "oneOf": [ + { + "$ref": "#/$defs/SelectorTargetInput" + }, + { + "$ref": "#/$defs/AccessibilityTargetInput" + } + ] + } +] - changed
Input schema / properties / selector / descriptionPrevious value: -"CSS/XPath/DrissionPage element locator."New value: +"String locator or structured element target." - removed
Input schema / properties / selector / typeRemoved value: -"string" - changed
Input schema / properties / timeout / typePrevious value: -"integer"New value: +"number" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_scroll_into_view6 fields changed- added
Input schema / $defsAdded 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" + } +} - added
Input schema / properties / selector / anyOfAdded value: +[ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "discriminator": { + "mapping": { + "accessibility": "#/$defs/AccessibilityTargetInput", + "selector": "#/$defs/SelectorTargetInput" + }, + "propertyName": "kind" + }, + "oneOf": [ + { + "$ref": "#/$defs/SelectorTargetInput" + }, + { + "$ref": "#/$defs/AccessibilityTargetInput" + } + ] + } +] - changed
Input schema / properties / selector / descriptionPrevious value: -"CSS/XPath/DrissionPage element locator."New value: +"String locator or structured element target." - removed
Input schema / properties / selector / typeRemoved value: -"string" - changed
Input schema / properties / timeout / typePrevious value: -"integer"New value: +"number" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_select6 fields changed- added
Input schema / $defsAdded 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" + } +} - added
Input schema / properties / selector / anyOfAdded value: +[ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "discriminator": { + "mapping": { + "accessibility": "#/$defs/AccessibilityTargetInput", + "selector": "#/$defs/SelectorTargetInput" + }, + "propertyName": "kind" + }, + "oneOf": [ + { + "$ref": "#/$defs/SelectorTargetInput" + }, + { + "$ref": "#/$defs/AccessibilityTargetInput" + } + ] + } +] - changed
Input schema / properties / selector / descriptionPrevious value: -"CSS/XPath/DrissionPage select locator."New value: +"String locator or structured select target." - removed
Input schema / properties / selector / typeRemoved value: -"string" - changed
Input schema / properties / timeout / typePrevious value: -"integer"New value: +"number" - changed
Output schema / oneOfPrevious 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" + } +]
- Added
element_state_get - Changed
element_type5 fields changed- added
Input schema / $defsAdded 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" + } +} - added
Input schema / properties / selector / anyOfAdded value: +[ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "discriminator": { + "mapping": { + "accessibility": "#/$defs/AccessibilityTargetInput", + "selector": "#/$defs/SelectorTargetInput" + }, + "propertyName": "kind" + }, + "oneOf": [ + { + "$ref": "#/$defs/SelectorTargetInput" + }, + { + "$ref": "#/$defs/AccessibilityTargetInput" + } + ] + } +] - removed
Input schema / properties / selector / typeRemoved value: -"string" - changed
Input schema / properties / timeout / typePrevious value: -"integer"New value: +"number" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_upload_file5 fields changed- added
Input schema / $defsAdded 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" + } +} - added
Input schema / properties / selector / anyOfAdded value: +[ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "discriminator": { + "mapping": { + "accessibility": "#/$defs/AccessibilityTargetInput", + "selector": "#/$defs/SelectorTargetInput" + }, + "propertyName": "kind" + }, + "oneOf": [ + { + "$ref": "#/$defs/SelectorTargetInput" + }, + { + "$ref": "#/$defs/AccessibilityTargetInput" + } + ] + } +] - removed
Input schema / properties / selector / typeRemoved value: -"string" - changed
Input schema / properties / timeout / typePrevious value: -"integer"New value: +"number" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
frame_find1 field changed- changed
Input schema / properties / timeout / typePrevious value: -"integer"New value: +"number"
- Changed
frame_snapshot1 field changed- changed
Input schema / properties / timeout / typePrevious value: -"integer"New value: +"number"
- Changed
keyboard_press2 fields changed- added
Output schema / $defsAdded 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" + } +} - changed
Output schema / oneOfPrevious 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" + } +]
- Added
network_blocked_urls_set - Added
page_accessibility_snapshot - Added
page_click_xy - Added
page_dialog_observe - Added
page_dialog_respond - Changed
page_evaluate1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Added
page_export_artifact - Added
page_get_url - Added
page_navigate_with_http_auth - Added
page_observe - Added
page_pointer_drag - Changed
page_pointer_drag_element9 fields changed- added
Input schema / $defs / ElementSourceInputAdded value: +{ + "additionalProperties": false, + "properties": { + "kind": { + "const": "element", + "title": "Kind", + "type": "string" + }, + "target": { + "$ref": "#/$defs/ElementTargetInput" + } + }, + "required": [ + "kind", + "target" + ], + "title": "ElementSourceInput", + "type": "object" +} - added
Input schema / $defs / OffsetDestinationInput / properties / dxAdded value: +{ + "description": "Horizontal delta from the freshly resolved source point.", + "maximum": 10000, + "minimum": -10000, + "title": "Dx", + "type": "number" +} - added
Input schema / $defs / OffsetDestinationInput / properties / dyAdded value: +{ + "description": "Vertical delta from the freshly resolved source point.", + "maximum": 10000, + "minimum": -10000, + "title": "Dy", + "type": "number" +} - removed
Input schema / $defs / OffsetDestinationInput / properties / xRemoved value: -{ - "maximum": 10000, - "minimum": -10000, - "title": "X", - "type": "number" -} - removed
Input schema / $defs / OffsetDestinationInput / properties / yRemoved value: -{ - "maximum": 10000, - "minimum": -10000, - "title": "Y", - "type": "number" -} - changed
Input schema / $defs / OffsetDestinationInput / requiredPrevious value: -[ - "kind", - "x", - "y" -]New value: +[ + "kind", + "dx", + "dy" +] - removed
Input schema / properties / source / $refRemoved value: -"#/$defs/ElementTargetInput" - added
Input schema / properties / source / anyOfAdded value: +[ + { + "$ref": "#/$defs/ElementTargetInput" + }, + { + "$ref": "#/$defs/ElementSourceInput" + } +] - added
Input schema / properties / source / titleAdded value: +"Source"
- Added
page_resize - Added
page_snapshot - Changed
shadow_find1 field changed- changed
Input schema / properties / timeout / typePrevious value: -"integer"New value: +"number"
- Added
shadow_find_all - Changed
storage_get2 fields changed- changed
Input schema / properties / include_values / defaultPrevious value: -trueNew value: +false - added
Input schema / properties / include_values / descriptionAdded value: +"Return storage values instead of redacting non-empty values."
- Added
tab_switch - Changed
wait_for_element5 fields changed- added
Input schema / $defsAdded 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" + } +} - added
Input schema / properties / selector / anyOfAdded value: +[ + { + "maxLength": 500, + "minLength": 1, + "type": "string" + }, + { + "discriminator": { + "mapping": { + "accessibility": "#/$defs/AccessibilityTargetInput", + "selector": "#/$defs/SelectorTargetInput" + }, + "propertyName": "kind" + }, + "oneOf": [ + { + "$ref": "#/$defs/SelectorTargetInput" + }, + { + "$ref": "#/$defs/AccessibilityTargetInput" + } + ] + } +] - removed
Input schema / properties / selector / typeRemoved value: -"string" - changed
Input schema / properties / timeout / typePrevious value: -"integer"New value: +"number" - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
wait_for_url1 field changed- changed
Input schema / properties / timeout / typePrevious value: -"integer"New value: +"number"
- Changed
wait_until3 fields changed- added
Input schema / $defsAdded 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" + } +} - added
Input schema / properties / selector / anyOfAdded 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" + } + ] + } +] - removed
Input schema / properties / selector / typeRemoved value: -"string"
31 tool updates
v0.7.2- Added
browser_cookies_get - Added
element_find - Added
element_find_all - Added
element_scroll_into_view - Added
element_select - Added
element_type - Added
element_upload_file - Added
frame_find - Added
keyboard_press - Added
network_listen_start - Added
network_listen_stop - Added
page_console_logs - Removed
page_dialog_respond - Removed
page_get_url - Added
page_go_back - Removed
page_observe - Removed
page_pointer_drag - Added
page_pointer_drag_element - Added
page_refresh - Removed
page_resize - Added
page_screenshot - Added
page_screenshot_save - Added
page_scroll - Removed
page_snapshot - Added
shadow_find - Removed
shadow_find_all - Added
tab_close - Removed
tab_switch - Added
wait_for_element - Added
wait_for_url - Added
wait_until
43 tool updates
v0.7.2- Added
element_check - Changed
element_click3 fields changed- added
Input schema / properties / buttonAdded value: +{ + "default": "left", + "description": "Native pointer button to use.", + "enum": [ + "left", + "right", + "middle" + ], + "title": "Button", + "type": "string" +} - added
Input schema / properties / click_countAdded value: +{ + "default": 1, + "description": "Native click count; 2 requests double-click semantics.", + "maximum": 2, + "minimum": 1, + "title": "Click Count", + "type": "integer" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Added
element_click_and_download - Removed
element_find - Removed
element_find_all - Changed
element_get_attribute1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_get_html1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_get_property1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_get_text1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Added
element_hover - Removed
element_type - Removed
form_inspect - Added
frame_list - Added
frame_snapshot - Added
network_listen_wait - Removed
page_click_xy - Changed
page_close1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Removed
page_console_logs - Added
page_dialog_respond - Changed
page_evaluate1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_get_url1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Removed
page_go_back - Changed
page_go_forward1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_navigate1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_observe1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Added
page_pointer_drag - Added
page_pointer_move - Removed
page_refresh - Changed
page_resize1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Removed
page_screenshot - Removed
page_screenshot_save - Changed
page_snapshot1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Added
shadow_find_all - Added
storage_clear - Added
storage_get - Added
storage_set - Removed
tab_close - Changed
tab_list1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Changed
tab_switch1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Removed
wait_for_element - Removed
wait_for_url - Changed
wait_time1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Removed
wait_until
24 tool updates
v0.5.1- Changed
element_click4 fields changed- added
Input schema / properties / observeAdded value: +{ + "default": false, + "description": "Return a compact before/after page change summary.", + "title": "Observe", + "type": "boolean" +} - added
Input schema / properties / timeout / maximumAdded value: +120 - added
Input schema / properties / timeout / minimumAdded value: +0 - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_find2 fields changed- added
Input schema / properties / timeout / maximumAdded value: +120 - added
Input schema / properties / timeout / minimumAdded value: +0
- Changed
element_find_all1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Changed
element_type4 fields changed- added
Input schema / properties / observeAdded value: +{ + "default": false, + "description": "Return a compact before/after page change summary.", + "title": "Observe", + "type": "boolean" +} - added
Input schema / properties / timeout / maximumAdded value: +120 - added
Input schema / properties / timeout / minimumAdded value: +0 - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
form_inspect1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Changed
page_close1 field changed- changed
Input schema / descriptionPrevious value: -"Empty input schema."New value: +"Empty input schema for tools that don't require arguments."
- Added
page_console_logs - Added
page_evaluate - Changed
page_get_url1 field changed- changed
Input schema / descriptionPrevious value: -"Empty input schema."New value: +"Empty input schema for tools that don't require arguments."
- Changed
page_go_back1 field changed- changed
Input schema / descriptionPrevious value: -"Empty input schema for tools that don't require parameters."New value: +"Empty input schema for tools that don't require arguments."
- Changed
page_go_forward1 field changed- changed
Input schema / descriptionPrevious value: -"Empty input schema for tools that don't require parameters."New value: +"Empty input schema for tools that don't require arguments."
- Changed
page_navigate3 fields changed- added
Input schema / properties / new_tabAdded value: +{ + "default": false, + "description": "Open the URL in a new browser tab instead of the current tab.", + "title": "New Tab", + "type": "boolean" +} - added
Input schema / properties / observeAdded value: +{ + "default": false, + "description": "Return a compact before/after page change summary.", + "title": "Observe", + "type": "boolean" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Added
page_observe - Changed
page_refresh1 field changed- changed
Input schema / descriptionPrevious value: -"Empty input schema for tools that don't require parameters."New value: +"Empty input schema for tools that don't require arguments."
- Changed
page_screenshot1 field changed- removed
Input schema / properties / pathRemoved value: -{ - "default": "", - "description": "Optional local file path to save screenshot", - "title": "Path", - "type": "string" -}
- Added
page_screenshot_save - Changed
page_snapshot1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Added
tab_close - Added
tab_list - Added
tab_switch - Changed
wait_for_element2 fields changed- added
Input schema / properties / timeout / maximumAdded value: +120 - added
Input schema / properties / timeout / minimumAdded value: +0
- Changed
wait_for_url2 fields changed- added
Input schema / properties / timeout / maximumAdded value: +120 - added
Input schema / properties / timeout / minimumAdded value: +0
- Changed
wait_time2 fields changed- added
Input schema / properties / seconds / maximumAdded value: +120 - added
Input schema / properties / seconds / minimumAdded value: +0
- Added
wait_until
22 tool updates
v0.5.0- Changed
element_click2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Changed
element_find2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Added
element_find_all - Changed
element_get_attribute2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Changed
element_get_html2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Changed
element_get_property2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Changed
element_get_text2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Changed
element_type2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Added
form_inspect - Changed
page_click_xy2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Changed
page_close2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Changed
page_get_url2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Changed
page_go_back2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Changed
page_go_forward2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Changed
page_navigate2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Changed
page_refresh2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Changed
page_resize2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Changed
page_screenshot2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Added
page_snapshot - Changed
wait_for_element2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Changed
wait_for_url2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
- Changed
wait_time2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / additionalPropertiesRemoved value: -false
19 tool updates
v0.4.1- First observed
element_click - First observed
element_find - First observed
element_get_attribute - First observed
element_get_html - First observed
element_get_property - First observed
element_get_text - First observed
element_type - First observed
page_click_xy - First observed
page_close - First observed
page_get_url - First observed
page_go_back - First observed
page_go_forward - First observed
page_navigate - First observed
page_refresh - First observed
page_resize - First observed
page_screenshot - First observed
wait_for_element - First observed
wait_for_url - First observed
wait_time
TDQS
Scored across 69 tools
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.
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.
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.
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
Related MCP Connectors
Web search, browser automation, scraping, crawling and CAPTCHA solving for AI agents.
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn 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.17MIT
- AlicenseAqualityAmaintenanceA 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.721MIT
- AlicenseNot gradedqualityCmaintenanceA 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 npm1MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that bridges Model Context Protocol with browser automation, offering 37 tools across three modes (Playwright, CDP, Chrome Extension) and an autonomous agent for web tasks.MIT