Skip to main content
Glama

ReMCP connects a computer you own or administer to ChatGPT & Codex, Cursor, Claude Code, Gemini CLI, Kiro, Cline, or another MCP client. The device agent makes an outbound connection only — no inbound port, no tunnel, no third-party desktop relay. This repository contains the public device client/runtime, portable Agent Plugin metadata, the Gemini CLI extension manifest, official MCP Registry metadata, and the host-specific OpenAI and Anthropic plugin packaging.

Packages

Package

What it is

@remcp/remcp

The device client: pairing, the outbound agent, the background service, and the usage-metrics switch.

@remcp/runtime

The first-party local runtime: 84 MCP tools for files, images, binary transfer, archives, screenshots, search, terminal/process work, native desktop UI, loopback browser CDP, diagnostics, lightweight documents, and narrowly scoped runtime preferences, with two direct dependencies.

Related MCP server: HostGate MCP

Install

Open ReMCP → Connect a machine. The page detects the computer's operating system and shows the correct one-command flow.

Windows PowerShell — no preinstalled Node.js, npm, npx, or winget required:

irm https://remcp.site/i | iex

ReMCP keeps its Windows runtime privately under %LOCALAPPDATA%\ReMCP; it does not install Node.js globally or add the private runtime directory to the system PATH.

macOS / Linux: Node.js 22.5 or newer provides the current npm/npx distribution path.

npx --yes @remcp/remcp@latest connect

The browser can also generate a one-time pairing command. Run that exact command on the computer you want to connect; it installs the runtime and registers the background service.

Pairing codes are generated in the authenticated workspace, expire automatically, and are single-use. Do not invent or reuse a code from documentation.

Commands

Command

Purpose

remcp start

Start the device agent when no managed background service is already running

remcp status

Show device, client/runtime versions, managed-agent state, update consistency and server reachability as JSON

remcp doctor

Status plus a real local-runtime handshake and filesystem diagnostics

remcp install

Install or repair the persistent user service

remcp update

Update the client and runtime, then restart the service

remcp uninstall

Stop and remove the user service

remcp uninstall --purge

Remove the service and the global packages

remcp telemetry [status|on|off]

Show or change usage metrics for the client and the runtime

remcp godmode [status|on|off]

Show or change this computer's local unrestricted mode

remcp --version

Print the installed client version

Plugins

For users, ReMCP is catalog-first:

Install from your AI host → sign in to ReMCP → use your paired computers.

You do not need to paste an MCP server URL, edit a manifest, clone this repository, or configure a local path just to use the published plugin.

Shareable install guides:

ChatGPT & Codex / OpenAI

ChatGPT and Codex share OpenAI's public plugin directory.

  1. Open https://chatgpt.com/plugins.

  2. Search for ReMCP and open the ReMCP plugin card when it is available.

  3. Choose Install plugin.

  4. If prompted, choose Connect and complete ReMCP OAuth.

  5. In ChatGPT, use @ReMCP when you want to invoke it explicitly. In Codex, use Sources → Use plugins → ReMCP.

If ReMCP is not visible yet, the listing or rollout is not available to that account. There is no manual MCP endpoint an ordinary plugin user needs to configure while waiting.

Claude Code / Anthropic

ReMCP was submitted through Claude Platform on September 18, 2026 and currently shows Submitted and pending review.

After approval:

  1. Open https://claude.com/plugins. In Claude or Claude Desktop, you can also use Customize → Plugins → + → Browse plugins.

  2. Search for ReMCP and confirm it supports Claude Code.

  3. Choose Install.

  4. Complete ReMCP authorization if Claude asks you to connect.

  5. Ask Claude Code to use ReMCP on a computer already paired to your account.

While the listing is under review, ordinary users do not need to add a marketplace, clone this repository, or paste an MCP endpoint. Developer and reviewer workflows live in the technical guide.

Start with Plugin overview →.

Cursor and the wider MCP ecosystem

ReMCP publishes host-native metadata for coding agents plus directory records for MCP discovery:

Host / directory

User path

Status

Cursor

Add https://remcp.site/mcp as a remote MCP server in Cursor settings, then authorize.

manual MCP setup

Gemini CLI

Install from the Extension Gallery when indexed, or run gemini extensions install https://github.com/getremcp/remcp.

gallery discovery enabled

VS Code

Configure the remote MCP endpoint in an MCP-capable client.

manual MCP setup

Kiro Powers

Import https://github.com/getremcp/remcp from Add Custom Power → Import power from GitHub while the curated listing is reviewed.

submitted

Cline

Restored PR #347 (original #125)

Open, awaiting external review; original fork was deleted 26 Oct 2026

Kilo Marketplace

Restored PR #498 (original #480)

Open, awaiting external review; original fork was deleted 26 Oct 2026

Docker MCP Registry

Restored PR #6171 (original #5159)

Open, awaiting external review; original fork was deleted 26 Oct 2026

MCP Find

PR #316

Submitted 24 Oct 2026; fork-safe validation pending and directory review required

MCP Server Finder

Free directory

Repo checked absent 25 Oct 2026; editorial email submission sent 25 Oct, review pending

FindMCP

Free submission portal

ReMCP submission ID 321 accepted 25 Oct 2026; review pending

Few Servers

Free editorial form

25 Oct 2026: listing/claim request emailed to editor; external review pending; not verified listed

AgenticSkills

Free MCP server submission

Accepted for weekly editorial review 25 Oct 2026; public listing not yet confirmed

MCP Harbor

Free submission portal

Docsy and ReMCP submitted 24 Oct 2026; ReMCP awaiting external review/daily indexing, not yet verified listed

Plug and Ship

Public ReMCP page

Free launch accepted 24 Oct 2026; daily board scheduled 12 Nov 2026, not yet launched

LibHunt

Public ReMCP listing

Published and verified HTTP 200 on 24 Oct 2026; free submission automatically approved

Ext Ops Panel

Public ReMCP MCP profile

Auto-indexed from official MCP Registry, verified public 25 Oct 2026; not host endorsement

Walnut World

Public ReMCP source page

GitHub-source listing published 25 Oct 2026, independently verified in Chrome; ownership unclaimed

MCPRepository

ReMCP listing

Existing listing confirmed via duplicate-detection API and HTTP 200 on 24 Oct 2026

MCP Market

Public ReMCP listing

publicly indexed; existing-listing confirmation 24 Oct 2026

Punkpeye Awesome MCP Servers

Merged PR #14685

verified merged 18 Oct 2026; public source-install catalog

AI Anytime Awesome MCP Servers

ReMCP listing PR #314

merged 24 Oct 2026; listed in the public GitHub directory

Sagargupta Awesome MCP Servers

ReMCP listing PR #214

merged 24 Oct 2026; listed in the public GitHub directory

TensorBlock Awesome MCP Servers

Merged PR #4495

accepted 25 Oct 2026 into upstream catalog; public API sync may lag

VoltAgent Official MCP Servers

PR #56

Closed by upstream maintainer 25 Oct 2026, not merged

Awesome Public MCP Servers

PR #84

submitted 25 Oct 2026; explicitly discloses mutating paired-device tools, review pending

Awesome MCP Tools

PR #21

submitted 25 Oct 2026; remote OAuth computer access tools, review pending

PenguinMiaou Awesome Claude Code Plugins

PR #11

submitted 25 Oct 2026; community review pending, not Anthropic endorsement

itgoyo Awesome Claude Code

PR #20

submitted 25 Oct 2026; community review pending, not Anthropic endorsement

Claude Plugins Radar

PR #4

submitted 25 Oct 2026; community review pending, not Anthropic endorsement

ClaudeMods

Editorial issue #35

Submitted 25 Oct 2026; bot/editor review pending

Habito Awesome MCP Servers

PR #298

submitted 25 Oct 2026; external curator review pending, no platform endorsement

DhanushNehru Awesome MCP Servers

PR #128

submitted 25 Oct 2026; external curator review pending, no platform endorsement

Awesome Productivity MCP Servers

PR #48

submitted 25 Oct 2026; external curator review pending, no platform endorsement

WunderCorp Awesome MCP

PR #155

submitted 25 Oct 2026; external curator review pending, no platform endorsement

Awesome Codex

PR #32

submitted 25 Oct 2026; awaiting independent review

Awesome AI Coding Tools

PR #8

submitted 25 Oct 2026; awaiting independent review

Awesome MCP Collection

PR #73

submitted 25 Oct 2026; awaiting independent review

Albertchamberlain Awesome-MCP

PR #117

Submitted 25 Oct 2026; independent review pending, not published

Epistates Awesome MCP DevTools

PR #24

Submitted 25 Oct 2026; independent review pending, not published

Backblaze Awesome Agent Infrastructure

PR #44

Submitted 25 Oct 2026; awaiting maintainer review

Awesome DevOps AI

PR #78

Submitted 25 Oct 2026; awaiting maintainer review

awesome-mcp.tools (adw0rd)

Existing upstream listing

Confirmed in public main 25 Oct 2026, canonical getremcp/remcp URL; no duplicate PR

TrackMCP

Submission form

Accepted 25 Oct 2026, email confirmation/review pending; not yet verified publicly listed

Best-of MCP Servers

Restored PR #575 (original #562)

Open, awaiting external review; original fork was deleted 26 Oct 2026

mcpHQ Awesome MCP Servers

Submission PR

open, awaiting maintainer review

ToolSDK MCP Registry

Merged PR #1019

merged 25 Oct 2026

MobinX Awesome MCP List

Submission PR

open, awaiting maintainer review

Ever Works Awesome MCP Servers

PR #213

Submitted 24 Oct 2026; full ReMCP detail page awaiting catalog review

Awesome Claude Code Plugins

PR #822

Submitted 24 Oct 2026; external community review pending

Awesome Gemini CLI Extensions

ReMCP PR #95

Submitted 24 Oct 2026; review pending

AlexMili Awesome MCP

Merged ReMCP PR #327

Published in upstream README; merged 24 Oct 2026, commit 158a622; verified 25 Oct

Collabnix Awesome MCP Lists

PR #265

Submitted 24 Oct 2026; pending third-party review

mctrinh Awesome MCP Servers

PR #180

Submitted 24 Oct 2026; pending review

Awesome MCP ZH

PR #839

Submitted 24 Oct 2026; Chinese-language entry pending review

Wagner Awesome DevOps MCP Servers

PR #113

submitted 24 Oct 2026; external review pending

Awesome DevOps MCP Servers

PR #381

submitted 24 Oct 2026; external review pending

MindPal Awesome Remote MCP Servers

PR #231

submitted 24 Oct 2026; awaiting remote catalog review

YuzeHao Awesome MCP Servers

PR #719

submitted 24 Oct 2026; review pending

Awesome Remote MCP Servers (jaw9c)

PR #1637

submitted 24 Oct 2026; external review pending

Brethof AI Awesome MCP Servers

ReMCP PR #54

submitted, awaiting review

Docker MCP Registry

ReMCP PR #5159

submitted, review required

CheckMCP

Free audit submission

received 24 Oct 2026; pending public audit/listing

MCP Index

Submission portal

received 24 Oct 2026; pending review

ProMCP

Free submission

accepted 24 Oct 2026; pending manual review

MCP Servers

Free submission

accepted 24 Oct 2026; pending review

Launch MCP

Submission status

pending after verified non-duplicate submission 24 Oct 2026; not yet published

MCPizy

Free ReMCP submission

Received 25 Oct 2026 (ID web_mvnk77mz_gwrdi7); independent review pending

MCPfinder

Submission portal

submitted through free tier 24 Oct 2026; approval pending

Kilo Marketplace

PR #480

submitted, awaiting independent review

MCP.Directory

Publisher submission

direct ReMCP GitHub URL submitted successfully 24 Oct 2026; approval not verified

Smithery

Open https://smithery.ai/servers/antonbaider/remcp.

published

Glama

Open the ownership-verified connector at https://glama.ai/mcp/connectors/site.remcp/re-mcp.

verified / healthy

Awesome Remote MCP Servers

Open the community directory; ReMCP is listed under Developer Tools after PR #435 was merged.

listed

Official MCP Registry

Search for io.github.getremcp/remcp; GitHub resolves the project release URL antonbaider/remcp to the transferred getremcp repository, so this Registry namespace remains the active identity.

published

The same ReMCP OAuth account and paired computers sit behind every route. Marketplace and directory surfaces change discovery; they do not create separate ReMCP backends.

Distribution manifests, direct install commands, and review links are documented in PLUGINS.md → and DISTRIBUTION.md →.

Developer / reviewer internals

Host-specific manifests, MCP configuration, validation commands, submission artifacts, and local development workflows remain documented separately:

The OpenAI files and Claude files deliberately do not overwrite each other. Release checks fail if either host-specific contract drifts from the shared ReMCP version or production endpoint.

Use ReMCP with Docsy

For source-linked developer documentation alongside local computer access, combine ReMCP with the separate Docsy AI / MCP Plugin. Docsy exposes five read-only public documentation tools (resolve-library-id, list-library-versions, query-docs, search, fetch) through https://docsy.remcp.site/mcp/registry and requires its own OAuth 2.1 authorization. ReMCP's device tools and Docsy's documentation tools remain separate services.

The local runtime

@remcp/runtime is a clean-room MCP server written for ReMCP. It is not a fork of, and shares no code with, DesktopCommanderMCP or any other MCP server.

84 granular device operations, 10 hosted production definitions. Current production advertises 8 device-facing façade tools plus 2 account/fleet tools, all model-visible. If custom widgets are explicitly re-enabled, discovery expands to 15 definitions by adding 5 app-only UI helpers. See the generated full tool reference for every current façade and its operation list.

Device runtime surface:

Area

Tools

Read

read_file, read_files (glob), read_multiple_files, read_image, read_binary, list_directory, get_file_info, hash_file, diff_files

Write / edit

write_file, write_files (bulk), write_binary, apply_patch, set_permissions, edit_block, replace_lines, replace_in_files

Organise

create_directory (bulk), move_file, copy_file, copy_paths, move_paths, move_to_trash, create_archive, extract_archive

Delete

delete_path, delete_paths

Transfer

read_binary and write_binary move any file in base64 chunks both ways; create_archive and extract_archive move whole trees

Screen

take_screenshot returns the desktop as an image

Search

start_search, get_more_search_results, stop_search, list_searches

Processes

start_process, read_process_output, wait_for_process_output, interact_with_process, force_terminate, list_sessions, list_processes, kill_process

Runtime

get_system_info, get_runtime_info, get_runtime_stats, set_config_value

Computer use

computer_snapshot, computer_action, list_windows, window_action, launch_app, ui_snapshot, ui_find, ui_action, type_text, keyboard, pointer, drag_drop, scroll, wait_for_ui, clipboard, display_inventory, screenshot_region, open_path, reveal_path, notification

Browser

browser_tabs, browser_navigate, browser_snapshot, browser_find, browser_action, browser_wait, browser_evaluate

Diagnostics

service, event_log, network, installed_apps, environment, audio, power_action, record_screen

Documents

read_document, edit_spreadsheet, edit_document, pdf_action

The hosted ReMCP endpoint currently advertises 10 model-visible tools with REMCP_CUSTOM_WIDGETS_ENABLED=false; no app-only render/save/refresh helpers or structuredContent.preview references are exposed. The compact surface routes to all 84 granular runtime operations, and 101 compatibility names remain callable for cached clients without inflating discovery for new models. If widgets are explicitly re-enabled later, the hosted catalog expands to 15 definitions and 106 compatibility names. Each online device returned by list_devices reports its live supported subset, and unavailable operations fail closed.

Tool selection for AI agents

ReMCP publishes selection-oriented descriptions and ships the same decision tree in its operator skill:

native Accessibility/UI Automation → browser DOM/CDP → OCR → coordinates

  • Start unfamiliar desktop work with computer_snapshot; use ui_snapshot/ui_find/ui_action for native apps.

  • For Chromium page content use browser_navigate action=new_tab when needed, then browser_snapshot/browser_find/browser_action/browser_wait instead of desktop coordinates.

  • Use type_text for normal Unicode text in native/focused controls, browser_action for Chromium page DOM text, and keyboard for shortcuts/navigation keys.

  • Use pointer only when semantic actions cannot express the task; prefer element ids for drag_drop. GNOME Wayland drag uses the consent-backed Remote Desktop portal rather than unreliable XTEST drag.

  • Use wait_for_ui / browser_wait instead of fixed sleeps.

  • Use screenshot_region for targeted visual proof and record_screen only for motion/timing.

  • Use structured document tools instead of automating Office when the request is about file content.

All 40 computer/browser/diagnostic/document tools declare closed top-level input schemas, parameter descriptions, structured output schemas, and MCP read-only/destructive/idempotent/open-world hints.

Why the tool list looks different from other computer-control servers. Security-sensitive configuration remains deliberately narrow, and everything else the alternatives can do has an equivalent here — usually more than one:

Not included

Why

Bundled browser/document rendering stacks

ReMCP supports lightweight DOCX/XLSX/PDF operations but deliberately uses OOXML and existing system PDF utilities instead of bundling Puppeteer, sharp, exceljs, or Chromium.

Broad configuration mutation

set_config_value can change only telemetry and context/output preferences. Access roots, blocked commands, command policy, shell, write limit and unrestricted mode stay local to the computer.

URL fetching in read_file

It is a server-side request forgery surface. The runtime reads your computer, not the internet.

What ReMCP adds beyond the usual set: image reads and screenshots that any MCP client can display, binary transfer in both directions, archive create/extract, wait_for_process_output instead of polling, line-range replacement, project-wide replace, unified diffs, checksums, trash instead of deletion, and host resource reporting.

Nothing is gated. There is no approval prompt, no "are you sure", and no mandatory dry run: a tool call executes with the full rights of the account running the agent — the same trust model as SSH. Writes replace by default and moves/copies replace the destination. The catastrophic-command guardrail defaults to block (a matching command is refused before it runs); an operator may choose warn or allow. Files are never written to a local history log, so tool arguments and output are not recorded there.

Unrestricted by design

  • No per-call approval contour. ReMCP does not add a confirmation dialog before each tool call. The local runtime's configured roots, command blocklist and command policy still apply, as do the operating-system permissions of the account running the agent. Within those boundaries, start_process can operate services, packages, databases, containers, sudo, git, and other local tools.

  • Full transfer in both directions. read_binary/write_binary move any file, create_archive and extract_archive move whole trees, and take_screenshot shows the desktop.

  • Optional hardening, explicit security boundaries. remcp godmode on lifts the roots, the blocklist and the command guardrail for one computer — and only a person at that computer can turn it on; no MCP tool accepts it. allowedRoots and blockedCommands are empty until an operator configures them. dangerousCommands defaults to block: a matching catastrophic command is refused before it runs; warn lets it run with an advisory note and allow silences even that. The runtime refuses to start — loudly — if runtime.json cannot be parsed, so configured safety boundaries are never silently dropped.

  • Crash-resistant. A bad shell, a closed stdin, or a 40 MB line cannot take the runtime down; the agent restarts it if it exits, so a device recovers instead of going quietly offline.

  • Outbound-only. Per-device revocable credential, hashed server-side, stored locally with restrictive permissions. Runtime metadata from a custom server requires an explicit --trust-runtime decision.

  • No local history. Tool arguments and outputs are never written to a log on your computer.

Usage metrics

Both the client and the runtime collect opt-out usage metrics: tool names, durations, outcomes, coarse error classes, session counts, and device health samples. They never include file paths, file contents, command strings, tool arguments, or tool output — the event schema is a whitelist, so those fields have nowhere to travel.

There is no telemetry endpoint and no third-party processor. The runtime emits MCP notifications to the agent, and the agent forwards them over the authenticated WebSocket it already holds to your ReMCP account. No install ping, no postinstall script, no remote feature flags, no A/B assignment.

remcp telemetry off      # one switch for the client and the runtime
remcp telemetry status

Development

npm install
npm run check
npm test

Both workspaces are plain ESM with no build step. The contract commands (--help, --version, --print-tools, --describe) work with no dependencies installed, so CI can diff the advertised tool surface against the published tarball.

License

MIT.

Available Tools

7 tools
control_computerControl computerA
Destructive
Inspect

Use this for semantic inspection or control of native desktop applications on this computer: windows, accessibility/UI elements, waits, displays, app launch, text/input, clipboard, open/reveal, notifications, or short screen recording. Snapshot/find/wait operations observe state; clicks, typing, window close, app launch, clipboard writes, and recording can change local application state. Prefer semantic targets before raw coordinates.

NameRequiredDescriptionDefault
operationYesConcrete local runtime operation to execute in this domain.
parametersNoArguments for the selected operation; validated against that operation’s original closed schema.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true as a blanket profile. The description adds real value by narrowing that blanket: snapshot/find/wait only observe state, while clicks, typing, window close, app launch, clipboard writes and recording mutate local application state. It does not disclose permission/consent prerequisites (e.g. portal consent) or failure modes, so not a 5.

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

Conciseness4/5

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

Three sentences, front-loaded with capability scope before the read/write distinction and the targeting rule. The opening capability list is long but each item marks a real sub-domain. No filler or hedging.

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

Completeness4/5

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

For a very broad automation tool with an output schema (so return values need not be explained) and annotations covering the safety profile, the description covers scope, mutation surface, and targeting strategy. It omits prerequisites such as accessibility permission or Wayland portal consent, and mentions 'waits', 'app launch' and 'notifications' that are not directly visible in the action enum.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema carries the detail. The one genuinely additive clause, 'prefer semantic targets before raw coordinates', is partly redundant with the target parameter's own schema description ('auto prefers native accessibility, then browser DOM/CDP, then OCR/coordinates'). Net addition over structured fields is small.

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

Purpose4/5

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

The description names a specific verb set and resource domain (semantic inspection or control of native desktop applications) and enumerates concrete capability areas: windows, accessibility/UI elements, waits, displays, app launch, text/input, clipboard, open/reveal, notifications, screen recording. That is far more than a restatement of the name. It stops short of a 5 because it never names a sibling tool, and app launch clearly overlaps run_terminal without being differentiated.

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

Usage Guidelines3/5

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

It gives within-tool guidance (prefer semantic targets before raw coordinates) and splits operations into observing vs state-changing, which helps an agent decide whether calling is safe. It gives no when-not or alternative-tool routing, despite obvious overlap with run_terminal for launching apps and view_image for screenshots. 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.

manage_documentsManage documentsA
Destructive
Inspect

Use this for structured document content: read PDF/DOCX/XLSX, edit DOCX/XLSX directly, or merge, split, extract, or inspect PDFs. DOCX/XLSX edits can replace the input when no separate output is supplied, and PDF write operations create or replace their requested output; read_document itself is read-only. Use read_file for plain line-oriented text.

NameRequiredDescriptionDefault
operationYesConcrete local runtime operation to execute in this domain.
parametersNoArguments for the selected operation; validated against that operation’s original closed schema.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint=true, readOnlyHint=false), the description discloses the exact destructive behavior: DOCX/XLSX edits can replace the input, and PDF write operations create or replace their requested output. It also reassures that read_document itself is read-only. This meaningfully adds safety context that annotations alone do not provide.

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

Conciseness5/5

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

The description is three sentences with no filler. It front-loads the primary use case, packs key behavioral caveats into the second sentence, and closes with a useful sibling pointer. Every sentence earns its place.

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

Completeness5/5

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

The tool has a complex conditional schema with two operations and nested objects, but the description covers the operation families, format support, destructive behavior, and the key alternative. An output schema exists, so return-value details need not be in the description. Nothing an agent needs to correctly invoke the tool is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining the semantics of the output-related parameters: when output is omitted, edits may modify the input, and PDF write operations overwrite the requested output. This enriches understanding of the 'output' and 'path' parameters without needing to restate the schema.

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

Purpose5/5

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

The description opens with a specific scope ('structured document content') and enumerates concrete verbs and resources: read PDF/DOCX/XLSX, edit DOCX/XLSX, and merge/split/extract/inspect PDFs. It also distinguishes itself from the sibling read_file by naming read_file for plain line-oriented text, so an agent can select the correct tool.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('Use this for structured document content') and names the alternative with its condition ('Use read_file for plain line-oriented text'). It further guides usage by clarifying when edits can replace the input versus when a separate output is supplied.

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

manage_filesManage filesA
Destructive
Inspect

Use this when the task is about files, directories, archives, or filesystem search on this computer. Choose exactly one operation; parameters must contain only that operation’s arguments and are validated against its closed schema. Write, edit, move, permission, and delete operations can change or remove local data, while read and search operations leave files unchanged. Use read_file for one known text file.

NameRequiredDescriptionDefault
operationYesConcrete local runtime operation to execute in this domain.
parametersNoArguments for the selected operation; validated against that operation’s original closed schema.

Output Schema

NameRequiredDescription
textYesHuman-readable result of the tool call.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations' destructiveHint=true, the description names which operation classes can change or remove local data and which leave files unchanged. It also discloses that parameters are validated against a closed per-operation schema. This materially improves the agent's understanding of a large, destructive-capable tool and 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.

Conciseness5/5

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

Three sentences, no filler. The use condition is front-loaded, the per-operation constraint is stated clearly, and the read/write safety split and sibling routing are compressed into the remaining sentences. Every sentence earns its place.

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

Completeness5/5

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

Despite managing 29 sub-operations, the description gives the essential orientation: domain scope, one-operation rule, destructive vs read-only behavior, and a fallback to read_file. With such a rich input schema and an output schema present, the individual operation details are already covered structurally, so nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description mostly restates what the schema already says ('parameters must contain only that operation's arguments and are validated against its closed schema'), adding no new meaning to individual parameters. The rich schema carries the parameter semantics.

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

Purpose4/5

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

The description clearly states the tool's scope: files, directories, archives, and filesystem search on this computer. It also distinguishes itself from the sibling read_file by routing single known text files there. The verb is somewhat generic ('manage'), but combined with the title and operation list it is clear enough.

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

Usage Guidelines5/5

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

The description explicitly states when to use the tool ('task is about files, directories, archives, or filesystem search'), gives an explicit alternative ('Use read_file for one known text file'), and also separates read/search operations from write/edit/delete operations. An agent can reliably decide between this tool and the read_file sibling without opening the schema.

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

manage_systemManage systemA
Destructive
Inspect

Use this for operating-system or ReMCP runtime state: system/runtime/process facts, runtime preferences, services, event logs, networking, installed apps, environment, audio, or explicit power actions. Fact, log, and inventory operations only observe state; process termination, preference/service/audio changes, restart, and shutdown can interrupt work or change the machine. Use run_terminal for general shell commands.

NameRequiredDescriptionDefault
operationYesConcrete local runtime operation to execute in this domain.
parametersNoArguments for the selected operation; validated against that operation’s original closed schema.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, and the description adds meaningful granularity on top: fact/log/inventory operations only observe state, while process termination, preference/service/audio changes, restart and shutdown can interrupt work or alter the machine. That operation-level risk split is not derivable from the annotations. It does not state permission requirements or whether kill_process is irreversible, so not a 5.

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

Conciseness4/5

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

Three tight sentences, front-loaded with scope and closed with the alternative-tool routing, with no filler. The one inefficiency is the capability list: several named items (services, event logs, audio, power actions) do not correspond to any callable operation, so that clause costs tokens without being actionable.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and the mutation-vs-observation split covers most of the risk surface for a destructive tool. The material gap is the mismatch between the advertised domains and the nine permitted operations, which leaves an agent without guidance on which operations actually exist and when each should be preferred.

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

Parameters3/5

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

Schema description coverage is 100% and the per-operation parameter descriptions (limit, pid, action enum, key/value for set_config_value) are already documented in the schema, so the baseline of 3 applies. The description adds no operation-specific argument guidance, and by advertising operations like audio or shutdown that are absent from the enum it may push an agent toward an invalid operation value.

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

Purpose3/5

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

The description enumerates domains (system/runtime/process facts, networking, installed apps, environment) so the tool's scope is recognizable, and it names run_terminal as the counterpart for general shell work. However, it also promises services, event logs, audio, restart and shutdown, none of which appear in the operation enum, so the stated purpose is broader than what the tool can actually do. It reads as a domain label plus a feature list rather than a specific verb+resource.

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

Usage Guidelines4/5

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

It gives a clear routing rule: use this for OS/runtime state, use run_terminal for general shell commands. It also separates observational operations from mutating ones, which helps an agent decide within the tool. It stops short of ruling out control_computer or the file/document siblings, which are close enough to warrant an explicit exclusion.

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

read_fileRead fileA
Read-onlyIdempotent
Inspect

Read a plain text or line-oriented file on this computer: source, config, Markdown, scripts or logs. Use read_document for PDF, DOCX, XLSX and other structured documents. Legacy .docx/.pdf extraction remains supported for compatibility. Use offset and length to page through large text files; a negative offset reads from the end.

NameRequiredDescriptionDefault
pathYesAbsolute path of the file to read. Relative paths resolve against the runtime working directory.
lengthNoMaximum number of lines to return.
offsetNoZero-based first line to read. Negative values read the last N lines.

Output Schema

NameRequiredDescription
textYesHuman-readable result of the tool call.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already disclose read-only and idempotent behavior)Skip the description. The description adds real behavioral context: it limits the tool to text-like files, explains paging semantics, and discloses the legacy docx/pdf extraction behavior. This goes beyond annotation coverage without redundancy.

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

Conciseness5/5

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

Three sentences, each with a distinct purpose: scope definition, alternative routing, and paging guidance. No fluff or repetition of schema fields. The phrasing is compact and front-loaded.

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

Completeness5/5

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

For a single-file read tool, the description covers scope, exclusions, paging, and compatibility, while the output schema and read-only annotations cover the rest. An agent has enough information to invoke it correctly and to decide when another tool is better.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining how offset and length should be used together to page through large files and clarifying the negative-offset behavior. This is meaningful, though the schema already documents each parameter.

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

Purpose5/5

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

States a specific action (read), a specific resource type (plain text or line-oriented file), and concrete examples (source, config, Markdown, scripts, logs). Explicitly distinguishes from read_document for PDF/DOCX/XLSX, so an agent can select it among several sibling read tools.

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

Usage Guidelines5/5

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

Provides explicit routing guidance: use read_document for structured documentsainer and notes legacy .docx/.pdf support for compatibility. Also gives concrete usage advice for large files with offset/length paging and negative offsets.

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

run_terminalRun terminal operationsA
Destructive
Inspect

Use this when the task needs a shell command or an existing ReMCP terminal session: start, read, wait, interact, stop, or list sessions. Choose exactly one operation; parameters are validated against that operation’s closed schema. Starting or interacting with commands can change local or external state, and force termination can lose unsaved process work; reading, waiting, and listing do not mutate the session.

NameRequiredDescriptionDefault
operationYesConcrete local runtime operation to execute in this domain.
parametersNoArguments for the selected operation; validated against that operation’s original closed schema.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Beyond annotations, it discloses operation-specific risk: starting or interacting can change local/external state, force termination can lose unsaved process work, while reading/waiting/listing do not mutate the session. This adds useful nuance, though it does not cover permissions, rate limits, or session lifetime details.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the use case and operation list, followed by validation and safety notes. Every sentence contributes useful information without repetition or filler.

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

Completeness5/5

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

For a complex multiplexed terminal tool, the description gives the necessary mental model: when to use it, the available operations, single-operation selection, schema validation, and per-operation risk. Return values are covered by the output schema, and parameter details are covered by the rich input schema.

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

Parameters3/5

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

Schema description coverage is 100%, and the conditional schemas document each operation's parameters in detail. The description only adds the high-level rule that exactly one operation must be selected and parameters are validated against a closed schema, so the schema carries most parameter semantics.

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

Purpose5/5

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

The description states a specific resource and action domain: running shell commands and managing existing ReMCP terminal sessions. It enumerates the six concrete operations, making the tool's scope unambiguous and distinguishable from general system/computer/file tools.

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

Usage Guidelines4/5

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

It explicitly says to use this tool when a shell command or existing terminal session is needed, and it instructs the agent to choose exactly one operation. However, it does not name alternative sibling tools or state when not to use this tool.

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

view_imageView image or screenshotAInspect

Use this when the result must be pixels from this computer: read an existing image or capture the desktop, one window, monitor, or region. These operations return pixels without interacting with the visible UI. Use control_computer when semantic structure or an action is enough.

NameRequiredDescriptionDefault
operationYesConcrete local runtime operation to execute in this domain.
parametersNoArguments for the selected operation; validated against that operation’s original closed schema.

Output Schema

NameRequiredDescription
textYesHuman-readable result of the tool call.

TDQS

A4/5.0
Behavior3/5

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

The description discloses a key behavioral trait: 'These operations return pixels without interacting with the visible UI', which is useful beyond the annotations. However, it claims capture of 'one window, monitor, or region' while the input schema for take_screenshot only exposes keep and directory parameters, leaving a behavioral promise the schema does not support. Annotations are all false and provide no additional coverage.

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

Conciseness5/5

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

Two sentences, front-loaded with the key selection criterion ('when the result must be pixels'), and zero filler. The alternative and exclusion are stated efficiently in the second sentence.

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

Completeness3/5

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

The discriminated-union schema and output schema provide good structural coverage, and the description supplies overall context. However, the description overpromises window/monitor/region capture that is not reflected in the schema, creating a serious mismatch an agent must resolve before calling the tool correctly. This gap makes the definition not fully complete for its complexity.

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

Parameters2/5

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

Schema description coverage is 100%, so the baseline should be 3cars, but the description actively adds misleading meaning by mentioning 'one window, monitor, or region' capture when no schema parameter supports selecting those targets. It does not clarify how the operation discriminates between read_image and take_screenshot beyond the fixed operation enum, and the unsupported target claims could cause an agent to pass invalid parameters.

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

Purpose5/5

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

The description states a specific purpose: 'Use this when the result must be pixels from this computer', and enumerates the exact operations (read an existing image or capture desktop/window/monitor/region). It distinguishes itself from siblings by emphasizing pixels and the alternative control_computer for semantic structure or actions.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance ('when the result must be pixels') and names the clear alternative ('Use control_computer when semantic structure or an action is enough'). It also adds context that these operations do not interact with the visible UI, helping an agent choose correctly.

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

Tool Schema Changelog

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

  1. 1 tool updatev0.2.194
    • Changedrun_terminal2 fields changed
      • changedInput schema / allOf
        Previous value: -[
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "start_process"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "command": {
        -              "description": "Shell command to run.",
        -              "type": "string"
        -            },
        -            "timeout_ms": {
        -              "description": "How long to wait for initial output before returning, in milliseconds. Default 1000.",
        -              "type": "number"
        -            }
        -          },
        -          "required": [
        -            "command"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "read_process_output"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "length": {
        -              "description": "Maximum number of lines to return.",
        -              "type": "number"
        -            },
        -            "offset": {
        -              "description": "Zero-based line number to start from, counted across everything the session has produced; a negative value reads the last N lines. Omit for new output. Lines evicted by the buffer cap are no longer available.",
        -              "type": "number"
        -            },
        -            "pid": {
        -              "description": "Session pid returned by start_process.",
        -              "type": "number"
        -            },
        -            "timeout_ms": {
        -              "description": "How long to wait for new output when no offset is given, in milliseconds.",
        -              "type": "number"
        -            }
        -          },
        -          "required": [
        -            "pid"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "interact_with_process"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "input": {
        -              "description": "Line of input to send; a newline is appended.",
        -              "type": "string"
        -            },
        -            "pid": {
        -              "description": "Session pid returned by start_process.",
        -              "type": "number"
        -            },
        -            "timeout_ms": {
        -              "description": "How long to wait for the response, in milliseconds. Default 1000.",
        -              "type": "number"
        -            }
        -          },
        -          "required": [
        -            "pid",
        -            "input"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "wait_for_process_output"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "pattern": {
        -              "description": "Regular expression or literal text to wait for.",
        -              "type": "string"
        -            },
        -            "pid": {
        -              "description": "Session pid returned by start_process.",
        -              "type": "number"
        -            },
        -            "timeout_ms": {
        -              "description": "How long to wait before returning the output collected so far, in milliseconds. Default 10000.",
        -              "type": "number"
        -            }
        -          },
        -          "required": [
        -            "pid",
        -            "pattern"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "force_terminate"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "pid": {
        -              "description": "Session pid returned by start_process.",
        -              "type": "number"
        -            }
        -          },
        -          "required": [
        -            "pid"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "list_sessions"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {},
        -          "type": "object"
        -        }
        -      }
        -    }
        -  }
        -]New value: +[
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "start_process"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "command": {
        +              "description": "Shell command to run.",
        +              "type": "string"
        +            },
        +            "timeout_ms": {
        +              "description": "How long to wait for initial output before returning, in milliseconds. Default 1000.",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "command"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "read_process_output"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "length": {
        +              "description": "Maximum number of lines to return per call (default 200). Without offset, unreturned lines remain available; use hasMore to fetch the next page.",
        +              "type": "number"
        +            },
        +            "offset": {
        +              "description": "Zero-based line number to start from, counted across everything the session has produced; a negative value reads the last N lines. Omit for new output. Lines evicted by the buffer cap are no longer available.",
        +              "type": "number"
        +            },
        +            "pid": {
        +              "description": "Session pid returned by start_process.",
        +              "type": "number"
        +            },
        +            "timeout_ms": {
        +              "description": "With no offset, wait up to this many milliseconds for output/exit; 0 returns immediately (default). Use 1000–2000 to avoid repeated remote polls when output is expected.",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "pid"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "interact_with_process"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "input": {
        +              "description": "Line of input to send; a newline is appended.",
        +              "type": "string"
        +            },
        +            "pid": {
        +              "description": "Session pid returned by start_process.",
        +              "type": "number"
        +            },
        +            "timeout_ms": {
        +              "description": "How long to wait for the response, in milliseconds. Default 1000.",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "pid",
        +            "input"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "wait_for_process_output"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "pattern": {
        +              "description": "Regular expression or literal text to wait for.",
        +              "type": "string"
        +            },
        +            "pid": {
        +              "description": "Session pid returned by start_process.",
        +              "type": "number"
        +            },
        +            "timeout_ms": {
        +              "description": "How long to wait before returning the output collected so far, in milliseconds. Default 10000.",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "pid",
        +            "pattern"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "force_terminate"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "pid": {
        +              "description": "Session pid returned by start_process.",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "pid"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "list_sessions"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {},
        +          "type": "object"
        +        }
        +      }
        +    }
        +  }
        +]
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "command": {
        -        "type": "string"
        -      },
        -      "exitCode": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "exited": {
        -        "type": "boolean"
        -      },
        -      "lines": {
        -        "description": "Total output lines produced by the session.",
        -        "type": "number"
        -      },
        -      "output": {
        -        "type": "string"
        -      },
        -      "partial": {
        -        "type": "string"
        -      },
        -      "pid": {
        -        "description": "Process/session id used by follow-up terminal tools.",
        -        "type": "number"
        -      },
        -      "runtimeMs": {
        -        "type": "number"
        -      },
        -      "signal": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "status": {
        -        "description": "running or exited, with an exit code/signal when known.",
        -        "type": "string"
        -      },
        -      "warning": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "pid",
        -      "status",
        -      "runtimeMs",
        -      "lines",
        -      "exited",
        -      "exitCode",
        -      "signal",
        -      "command",
        -      "output"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "exitCode": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "exited": {
        -        "type": "boolean"
        -      },
        -      "explicitOffset": {
        -        "type": "boolean"
        -      },
        -      "lines": {
        -        "description": "Total output lines produced by the session.",
        -        "type": "number"
        -      },
        -      "output": {
        -        "type": "string"
        -      },
        -      "pid": {
        -        "description": "Process/session id used by follow-up terminal tools.",
        -        "type": "number"
        -      },
        -      "range": {
        -        "type": "string"
        -      },
        -      "runtimeMs": {
        -        "type": "number"
        -      },
        -      "signal": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "status": {
        -        "description": "running or exited, with an exit code/signal when known.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "pid",
        -      "status",
        -      "runtimeMs",
        -      "lines",
        -      "exited",
        -      "exitCode",
        -      "signal",
        -      "range",
        -      "output",
        -      "explicitOffset"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "exitCode": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "exited": {
        -        "type": "boolean"
        -      },
        -      "lines": {
        -        "description": "Total output lines produced by the session.",
        -        "type": "number"
        -      },
        -      "output": {
        -        "type": "string"
        -      },
        -      "pid": {
        -        "description": "Process/session id used by follow-up terminal tools.",
        -        "type": "number"
        -      },
        -      "runtimeMs": {
        -        "type": "number"
        -      },
        -      "signal": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "status": {
        -        "description": "running or exited, with an exit code/signal when known.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "pid",
        -      "status",
        -      "runtimeMs",
        -      "lines",
        -      "exited",
        -      "exitCode",
        -      "signal",
        -      "output"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "bufferedMatch": {
        -        "type": "boolean"
        -      },
        -      "exitCode": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "exited": {
        -        "type": "boolean"
        -      },
        -      "lines": {
        -        "description": "Total output lines produced by the session.",
        -        "type": "number"
        -      },
        -      "matched": {
        -        "type": "boolean"
        -      },
        -      "output": {
        -        "type": "string"
        -      },
        -      "pattern": {
        -        "type": "string"
        -      },
        -      "pid": {
        -        "description": "Process/session id used by follow-up terminal tools.",
        -        "type": "number"
        -      },
        -      "runtimeMs": {
        -        "type": "number"
        -      },
        -      "signal": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "status": {
        -        "description": "running or exited, with an exit code/signal when known.",
        -        "type": "string"
        -      },
        -      "timeoutMs": {
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "pid",
        -      "status",
        -      "runtimeMs",
        -      "lines",
        -      "exited",
        -      "exitCode",
        -      "signal",
        -      "pattern",
        -      "matched",
        -      "bufferedMatch",
        -      "timeoutMs",
        -      "output"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "alreadyExited": {
        -        "type": "boolean"
        -      },
        -      "escalated": {
        -        "type": "boolean"
        -      },
        -      "exitCode": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "exited": {
        -        "type": "boolean"
        -      },
        -      "lines": {
        -        "description": "Total output lines produced by the session.",
        -        "type": "number"
        -      },
        -      "pid": {
        -        "description": "Process/session id used by follow-up terminal tools.",
        -        "type": "number"
        -      },
        -      "runtimeMs": {
        -        "type": "number"
        -      },
        -      "signal": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "status": {
        -        "description": "running or exited, with an exit code/signal when known.",
        -        "type": "string"
        -      },
        -      "terminated": {
        -        "type": "boolean"
        -      }
        -    },
        -    "required": [
        -      "pid",
        -      "status",
        -      "runtimeMs",
        -      "lines",
        -      "exited",
        -      "exitCode",
        -      "signal",
        -      "terminated",
        -      "alreadyExited",
        -      "escalated"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "sessions": {
        -        "items": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "blocked": {
        -              "type": "string"
        -            },
        -            "command": {
        -              "type": "string"
        -            },
        -            "exitCode": {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            },
        -            "exited": {
        -              "type": "boolean"
        -            },
        -            "lines": {
        -              "description": "Total output lines produced by the session.",
        -              "type": "number"
        -            },
        -            "pid": {
        -              "description": "Process/session id used by follow-up terminal tools.",
        -              "type": "number"
        -            },
        -            "runtimeMs": {
        -              "type": "number"
        -            },
        -            "signal": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            },
        -            "status": {
        -              "description": "running or exited, with an exit code/signal when known.",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "pid",
        -            "status",
        -            "runtimeMs",
        -            "lines",
        -            "exited",
        -            "exitCode",
        -            "signal",
        -            "blocked",
        -            "command"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "sessions"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "command": {
        +        "type": "string"
        +      },
        +      "exitCode": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "exited": {
        +        "type": "boolean"
        +      },
        +      "lines": {
        +        "description": "Total output lines produced by the session.",
        +        "type": "number"
        +      },
        +      "output": {
        +        "type": "string"
        +      },
        +      "partial": {
        +        "type": "string"
        +      },
        +      "pid": {
        +        "description": "Process/session id used by follow-up terminal tools.",
        +        "type": "number"
        +      },
        +      "runtimeMs": {
        +        "type": "number"
        +      },
        +      "signal": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "status": {
        +        "description": "running or exited, with an exit code/signal when known.",
        +        "type": "string"
        +      },
        +      "warning": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "pid",
        +      "status",
        +      "runtimeMs",
        +      "lines",
        +      "exited",
        +      "exitCode",
        +      "signal",
        +      "command",
        +      "output"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "exitCode": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "exited": {
        +        "type": "boolean"
        +      },
        +      "explicitOffset": {
        +        "type": "boolean"
        +      },
        +      "hasMore": {
        +        "type": "boolean"
        +      },
        +      "lines": {
        +        "description": "Total output lines produced by the session.",
        +        "type": "number"
        +      },
        +      "output": {
        +        "type": "string"
        +      },
        +      "pid": {
        +        "description": "Process/session id used by follow-up terminal tools.",
        +        "type": "number"
        +      },
        +      "range": {
        +        "type": "string"
        +      },
        +      "runtimeMs": {
        +        "type": "number"
        +      },
        +      "signal": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "status": {
        +        "description": "running or exited, with an exit code/signal when known.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "pid",
        +      "status",
        +      "runtimeMs",
        +      "lines",
        +      "exited",
        +      "exitCode",
        +      "signal",
        +      "range",
        +      "output",
        +      "explicitOffset",
        +      "hasMore"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "exitCode": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "exited": {
        +        "type": "boolean"
        +      },
        +      "lines": {
        +        "description": "Total output lines produced by the session.",
        +        "type": "number"
        +      },
        +      "output": {
        +        "type": "string"
        +      },
        +      "pid": {
        +        "description": "Process/session id used by follow-up terminal tools.",
        +        "type": "number"
        +      },
        +      "runtimeMs": {
        +        "type": "number"
        +      },
        +      "signal": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "status": {
        +        "description": "running or exited, with an exit code/signal when known.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "pid",
        +      "status",
        +      "runtimeMs",
        +      "lines",
        +      "exited",
        +      "exitCode",
        +      "signal",
        +      "output"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "bufferedMatch": {
        +        "type": "boolean"
        +      },
        +      "exitCode": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "exited": {
        +        "type": "boolean"
        +      },
        +      "lines": {
        +        "description": "Total output lines produced by the session.",
        +        "type": "number"
        +      },
        +      "matched": {
        +        "type": "boolean"
        +      },
        +      "output": {
        +        "type": "string"
        +      },
        +      "pattern": {
        +        "type": "string"
        +      },
        +      "pid": {
        +        "description": "Process/session id used by follow-up terminal tools.",
        +        "type": "number"
        +      },
        +      "runtimeMs": {
        +        "type": "number"
        +      },
        +      "signal": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "status": {
        +        "description": "running or exited, with an exit code/signal when known.",
        +        "type": "string"
        +      },
        +      "timeoutMs": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "pid",
        +      "status",
        +      "runtimeMs",
        +      "lines",
        +      "exited",
        +      "exitCode",
        +      "signal",
        +      "pattern",
        +      "matched",
        +      "bufferedMatch",
        +      "timeoutMs",
        +      "output"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "alreadyExited": {
        +        "type": "boolean"
        +      },
        +      "escalated": {
        +        "type": "boolean"
        +      },
        +      "exitCode": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "exited": {
        +        "type": "boolean"
        +      },
        +      "lines": {
        +        "description": "Total output lines produced by the session.",
        +        "type": "number"
        +      },
        +      "pid": {
        +        "description": "Process/session id used by follow-up terminal tools.",
        +        "type": "number"
        +      },
        +      "runtimeMs": {
        +        "type": "number"
        +      },
        +      "signal": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "status": {
        +        "description": "running or exited, with an exit code/signal when known.",
        +        "type": "string"
        +      },
        +      "terminated": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "pid",
        +      "status",
        +      "runtimeMs",
        +      "lines",
        +      "exited",
        +      "exitCode",
        +      "signal",
        +      "terminated",
        +      "alreadyExited",
        +      "escalated"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "sessions": {
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "blocked": {
        +              "type": "string"
        +            },
        +            "command": {
        +              "type": "string"
        +            },
        +            "exitCode": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "exited": {
        +              "type": "boolean"
        +            },
        +            "lines": {
        +              "description": "Total output lines produced by the session.",
        +              "type": "number"
        +            },
        +            "pid": {
        +              "description": "Process/session id used by follow-up terminal tools.",
        +              "type": "number"
        +            },
        +            "runtimeMs": {
        +              "type": "number"
        +            },
        +            "signal": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "status": {
        +              "description": "running or exited, with an exit code/signal when known.",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "pid",
        +            "status",
        +            "runtimeMs",
        +            "lines",
        +            "exited",
        +            "exitCode",
        +            "signal",
        +            "blocked",
        +            "command"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "sessions"
        +    ],
        +    "type": "object"
        +  }
        +]
  2. 1 tool updatev0.2.164
    • Changedcontrol_computer2 fields changed
      • changedInput schema / allOf
        Previous value: -[
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "computer_snapshot"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "browser_max_nodes": {
        -              "description": "Maximum browser accessibility nodes; default 500, maximum 2000.",
        -              "type": "number"
        -            },
        -            "grid_columns": {
        -              "description": "Optional reference-grid column count returned as visual metadata; 0..20.",
        -              "type": "number"
        -            },
        -            "grid_rows": {
        -              "description": "Optional reference-grid row count returned as visual metadata; 0..20.",
        -              "type": "number"
        -            },
        -            "include_browser": {
        -              "description": "Include CDP browser accessibility when available. Default auto: only when the active app looks Chromium-based.",
        -              "type": "boolean"
        -            },
        -            "include_ocr": {
        -              "description": "Run optional local OCR. Default auto: only when native accessibility and browser DOM are unavailable. Requires tesseract on PATH.",
        -              "type": "boolean"
        -            },
        -            "include_screenshot": {
        -              "description": "Include real rendered desktop pixels; default true.",
        -              "type": "boolean"
        -            },
        -            "include_ui": {
        -              "description": "Include native accessibility tree; default true. False is the fast screenshot-only path.",
        -              "type": "boolean"
        -            },
        -            "max_ui_depth": {
        -              "description": "Maximum native accessibility depth; default 12.",
        -              "type": "number"
        -            },
        -            "max_ui_nodes": {
        -              "description": "Maximum native accessibility nodes; default 800.",
        -              "type": "number"
        -            },
        -            "ocr_language": {
        -              "description": "Tesseract language code, default eng; multiple languages may use eng+deu.",
        -              "type": "string"
        -            },
        -            "ocr_max_words": {
        -              "description": "Maximum OCR word boxes returned; default 2000, maximum 10000.",
        -              "type": "number"
        -            },
        -            "ocr_psm": {
        -              "description": "Tesseract page segmentation mode, 3..13; default 11.",
        -              "type": "number"
        -            },
        -            "ocr_timeout_ms": {
        -              "description": "OCR timeout, default 30000 ms, maximum 120000 ms.",
        -              "type": "number"
        -            },
        -            "screenshot_monitor": {
        -              "description": "Monitor name substring or \"primary\".",
        -              "type": "string"
        -            },
        -            "screenshot_monitor_index": {
        -              "description": "Zero-based monitor index.",
        -              "type": "number"
        -            },
        -            "screenshot_padding": {
        -              "description": "Pixels of context around a targeted screenshot; 0..200.",
        -              "type": "number"
        -            },
        -            "screenshot_region": {
        -              "description": "Virtual-desktop [left,top,right,bottom] region; takes precedence over full desktop.",
        -              "items": {
        -                "type": "number"
        -              },
        -              "maxItems": 4,
        -              "minItems": 4,
        -              "type": "array"
        -            },
        -            "screenshot_window_id": {
        -              "description": "Capture the window returned by list_windows instead of the whole desktop.",
        -              "type": "string"
        -            },
        -            "semantic_tree": {
        -              "description": "Include compact semantic hierarchy text alongside nodes; default true.",
        -              "type": "boolean"
        -            },
        -            "ui_browser_dom": {
        -              "description": "Prefer the native browser accessibility document subtree when the OS exposes one; on Windows this also enables the Firefox MSAA/IAccessible fallback.",
        -              "type": "boolean"
        -            },
        -            "ui_scope": {
        -              "description": "Accessibility scope for computer_snapshot. Default active keeps the compact snapshot fast; desktop requests all accessible applications/windows.",
        -              "enum": [
        -                "active",
        -                "desktop"
        -              ],
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "computer_action"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "if": {
        -                "properties": {
        -                  "target": {
        -                    "const": "window"
        -                  }
        -                },
        -                "required": [
        -                  "target"
        -                ]
        -              },
        -              "then": {
        -                "anyOf": [
        -                  {
        -                    "required": [
        -                      "window_id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "pid"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "app"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "window_title"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "title"
        -                    ]
        -                  }
        -                ],
        -                "properties": {
        -                  "action": {
        -                    "enum": [
        -                      "type",
        -                      "focus",
        -                      "scroll",
        -                      "drag"
        -                    ]
        -                  }
        -                }
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "click"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "anyOf": [
        -                  {
        -                    "required": [
        -                      "id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "label"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "name"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "role"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "automation_id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "selector"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "browser_text"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "name"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "ocr_text"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "x",
        -                      "y"
        -                    ]
        -                  }
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "enum": [
        -                      "invoke",
        -                      "set_value",
        -                      "select",
        -                      "toggle",
        -                      "expand",
        -                      "collapse",
        -                      "scroll_into_view",
        -                      "set_range_value",
        -                      "add_to_selection",
        -                      "remove_from_selection"
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "anyOf": [
        -                  {
        -                    "required": [
        -                      "id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "label"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "name"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "role"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "automation_id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "selector"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "browser_text"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "name"
        -                    ]
        -                  }
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "focus"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "anyOf": [
        -                  {
        -                    "required": [
        -                      "id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "label"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "name"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "role"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "automation_id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "selector"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "browser_text"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "name"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "window_id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "pid"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "app"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "window_title"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "title"
        -                    ]
        -                  }
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "type"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "allOf": [
        -                  {
        -                    "anyOf": [
        -                      {
        -                        "required": [
        -                          "id"
        -                        ]
        -                      },
        -                      {
        -                        "required": [
        -                          "label"
        -                        ]
        -                      },
        -                      {
        -                        "required": [
        -                          "name"
        -                        ]
        -                      },
        -                      {
        -                        "required": [
        -                          "role"
        -                        ]
        -                      },
        -                      {
        -                        "required": [
        -                          "automation_id"
        -                        ]
        -                      },
        -                      {
        -                        "required": [
        -                          "selector"
        -                        ]
        -                      },
        -                      {
        -                        "required": [
        -                          "browser_text"
        -                        ]
        -                      },
        -                      {
        -                        "required": [
        -                          "name"
        -                        ]
        -                      },
        -                      {
        -                        "required": [
        -                          "window_id"
        -                        ]
        -                      },
        -                      {
        -                        "required": [
        -                          "pid"
        -                        ]
        -                      },
        -                      {
        -                        "required": [
        -                          "app"
        -                        ]
        -                      },
        -                      {
        -                        "required": [
        -                          "window_title"
        -                        ]
        -                      },
        -                      {
        -                        "required": [
        -                          "title"
        -                        ]
        -                      }
        -                    ]
        -                  },
        -                  {
        -                    "if": {
        -                      "properties": {
        -                        "target": {
        -                          "enum": [
        -                            "ui",
        -                            "ui_element"
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "target"
        -                      ]
        -                    },
        -                    "then": {
        -                      "anyOf": [
        -                        {
        -                          "required": [
        -                            "id"
        -                          ]
        -                        },
        -                        {
        -                          "required": [
        -                            "label"
        -                          ]
        -                        },
        -                        {
        -                          "required": [
        -                            "name"
        -                          ]
        -                        },
        -                        {
        -                          "required": [
        -                            "role"
        -                          ]
        -                        },
        -                        {
        -                          "required": [
        -                            "automation_id"
        -                          ]
        -                        }
        -                      ]
        -                    }
        -                  },
        -                  {
        -                    "if": {
        -                      "properties": {
        -                        "target": {
        -                          "const": "browser"
        -                        }
        -                      },
        -                      "required": [
        -                        "target"
        -                      ]
        -                    },
        -                    "then": {
        -                      "anyOf": [
        -                        {
        -                          "required": [
        -                            "selector"
        -                          ]
        -                        },
        -                        {
        -                          "required": [
        -                            "browser_text"
        -                          ]
        -                        },
        -                        {
        -                          "required": [
        -                            "name"
        -                          ]
        -                        }
        -                      ]
        -                    }
        -                  }
        -                ],
        -                "properties": {
        -                  "target": {
        -                    "enum": [
        -                      "auto",
        -                      "ui",
        -                      "ui_element",
        -                      "browser",
        -                      "window"
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "text"
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "scroll"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "allOf": [
        -                  {
        -                    "anyOf": [
        -                      {
        -                        "required": [
        -                          "delta_x"
        -                        ]
        -                      },
        -                      {
        -                        "required": [
        -                          "delta_y"
        -                        ]
        -                      },
        -                      {
        -                        "required": [
        -                          "delta"
        -                        ]
        -                      },
        -                      {
        -                        "required": [
        -                          "direction"
        -                        ]
        -                      }
        -                    ]
        -                  },
        -                  {
        -                    "if": {
        -                      "properties": {
        -                        "target": {
        -                          "enum": [
        -                            "ui",
        -                            "ui_element"
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "target"
        -                      ]
        -                    },
        -                    "then": {
        -                      "anyOf": [
        -                        {
        -                          "required": [
        -                            "id"
        -                          ]
        -                        },
        -                        {
        -                          "required": [
        -                            "label"
        -                          ]
        -                        },
        -                        {
        -                          "required": [
        -                            "name"
        -                          ]
        -                        },
        -                        {
        -                          "required": [
        -                            "role"
        -                          ]
        -                        },
        -                        {
        -                          "required": [
        -                            "automation_id"
        -                          ]
        -                        }
        -                      ]
        -                    }
        -                  },
        -                  {
        -                    "if": {
        -                      "properties": {
        -                        "target": {
        -                          "const": "coordinates"
        -                        }
        -                      },
        -                      "required": [
        -                        "target"
        -                      ]
        -                    },
        -                    "then": {
        -                      "required": [
        -                        "x",
        -                        "y"
        -                      ]
        -                    }
        -                  }
        -                ],
        -                "properties": {
        -                  "target": {
        -                    "enum": [
        -                      "auto",
        -                      "ui",
        -                      "ui_element",
        -                      "browser",
        -                      "coordinates",
        -                      "window"
        -                    ]
        -                  }
        -                }
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "drag"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "allOf": [
        -                  {
        -                    "anyOf": [
        -                      {
        -                        "required": [
        -                          "from_id"
        -                        ]
        -                      },
        -                      {
        -                        "required": [
        -                          "from_x",
        -                          "from_y"
        -                        ]
        -                      }
        -                    ]
        -                  },
        -                  {
        -                    "anyOf": [
        -                      {
        -                        "required": [
        -                          "to_id"
        -                        ]
        -                      },
        -                      {
        -                        "required": [
        -                          "to_x",
        -                          "to_y"
        -                        ]
        -                      }
        -                    ]
        -                  },
        -                  {
        -                    "if": {
        -                      "properties": {
        -                        "target": {
        -                          "enum": [
        -                            "ui",
        -                            "ui_element"
        -                          ]
        -                        }
        -                      },
        -                      "required": [
        -                        "target"
        -                      ]
        -                    },
        -                    "then": {
        -                      "required": [
        -                        "from_id",
        -                        "to_id"
        -                      ]
        -                    }
        -                  },
        -                  {
        -                    "if": {
        -                      "properties": {
        -                        "target": {
        -                          "const": "coordinates"
        -                        }
        -                      },
        -                      "required": [
        -                        "target"
        -                      ]
        -                    },
        -                    "then": {
        -                      "required": [
        -                        "from_x",
        -                        "from_y",
        -                        "to_x",
        -                        "to_y"
        -                      ]
        -                    }
        -                  }
        -                ],
        -                "properties": {
        -                  "target": {
        -                    "enum": [
        -                      "auto",
        -                      "ui",
        -                      "ui_element",
        -                      "coordinates",
        -                      "window"
        -                    ]
        -                  }
        -                }
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "enum": [
        -                      "set_value",
        -                      "set_range_value"
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "value"
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "multi_select"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "targets"
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "multi_edit"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "edits"
        -                ]
        -              }
        -            }
        -          ],
        -          "properties": {
        -            "action": {
        -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        -              "enum": [
        -                "click",
        -                "type",
        -                "invoke",
        -                "focus",
        -                "select",
        -                "scroll",
        -                "drag",
        -                "set_value",
        -                "toggle",
        -                "expand",
        -                "collapse",
        -                "scroll_into_view",
        -                "set_range_value",
        -                "add_to_selection",
        -                "remove_from_selection",
        -                "multi_select",
        -                "multi_edit"
        -              ],
        -              "type": "string"
        -            },
        -            "app": {
        -              "description": "Limit matching to an application/process name substring when available.",
        -              "type": "string"
        -            },
        -            "automation_id": {
        -              "description": "Windows AutomationId when available.",
        -              "type": "string"
        -            },
        -            "backend": {
        -              "description": "Input backend preference. auto uses proven local backends and already-authorized portal input; portal explicitly requests XDG RemoteDesktop consent on Wayland; x11 forces XWayland/xdotool only for operations where read-back testing shows it is reliable. GNOME Wayland keyboard/text deliberately reject x11.",
        -              "enum": [
        -                "auto",
        -                "x11",
        -                "portal"
        -              ],
        -              "type": "string"
        -            },
        -            "browser_text": {
        -              "description": "Visible browser text used only to locate a DOM target; for action=type, text remains the value to enter.",
        -              "type": "string"
        -            },
        -            "button": {
        -              "description": "Pointer button to use for click/down/up or drag gestures.",
        -              "enum": [
        -                "left",
        -                "right",
        -                "middle"
        -              ],
        -              "type": "string"
        -            },
        -            "clear": {
        -              "description": "For action=type, clear the current semantic/browser value before inserting text when supported.",
        -              "type": "boolean"
        -            },
        -            "delta": {
        -              "description": "Alias for delta_y.",
        -              "type": "number"
        -            },
        -            "delta_x": {
        -              "description": "Horizontal scroll delta; positive means right.",
        -              "type": "number"
        -            },
        -            "delta_y": {
        -              "description": "Vertical scroll delta; positive means down.",
        -              "type": "number"
        -            },
        -            "direction": {
        -              "description": "Human-readable scroll direction used with wheel_times instead of explicit deltas.",
        -              "enum": [
        -                "up",
        -                "down",
        -                "left",
        -                "right"
        -              ],
        -              "type": "string"
        -            },
        -            "duration_ms": {
        -              "description": "Drag movement duration.",
        -              "type": "number"
        -            },
        -            "edits": {
        -              "description": "Native semantic target + text entries for action=multi_edit.",
        -              "items": {
        -                "additionalProperties": false,
        -                "properties": {
        -                  "app": {
        -                    "description": "Limit matching to an application/process name substring when available.",
        -                    "type": "string"
        -                  },
        -                  "automation_id": {
        -                    "description": "Windows AutomationId when available.",
        -                    "type": "string"
        -                  },
        -                  "clear": {
        -                    "description": "Clear the current value before entering text; default true.",
        -                    "type": "boolean"
        -                  },
        -                  "id": {
        -                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        -                    "type": "string"
        -                  },
        -                  "label": {
        -                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        -                    "type": "number"
        -                  },
        -                  "method": {
        -                    "description": "Text-entry strategy; auto is recommended.",
        -                    "enum": [
        -                      "auto",
        -                      "accessibility",
        -                      "clipboard",
        -                      "keys"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "description": "Accessible name/title substring.",
        -                    "type": "string"
        -                  },
        -                  "pid": {
        -                    "description": "Limit matching to one owning process id when available.",
        -                    "type": "number"
        -                  },
        -                  "role": {
        -                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        -                    "type": "string"
        -                  },
        -                  "text": {
        -                    "description": "Replacement text for this semantic edit.",
        -                    "type": "string"
        -                  },
        -                  "window_title": {
        -                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "text"
        -                ],
        -                "type": "object"
        -              },
        -              "maxItems": 100,
        -              "minItems": 1,
        -              "type": "array"
        -            },
        -            "endpoint": {
        -              "description": "Loopback Chrome DevTools endpoint for a browser fallback.",
        -              "type": "string"
        -            },
        -            "from_id": {
        -              "description": "Source semantic UI element id for action=drag.",
        -              "type": "string"
        -            },
        -            "from_x": {
        -              "description": "Drag source X coordinate.",
        -              "type": "number"
        -            },
        -            "from_y": {
        -              "description": "Drag source Y coordinate.",
        -              "type": "number"
        -            },
        -            "hold_ms": {
        -              "description": "Delay after pointer down before moving during action=drag.",
        -              "type": "number"
        -            },
        -            "id": {
        -              "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        -              "type": "string"
        -            },
        -            "label": {
        -              "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        -              "type": "number"
        -            },
        -            "name": {
        -              "description": "Accessible name/title substring.",
        -              "type": "string"
        -            },
        -            "ocr_language": {
        -              "description": "Tesseract language code, default eng.",
        -              "type": "string"
        -            },
        -            "ocr_psm": {
        -              "description": "Tesseract page segmentation mode, default 11.",
        -              "type": "number"
        -            },
        -            "ocr_region": {
        -              "description": "Optional virtual-desktop [left,top,right,bottom] region to OCR. Prefer bounds from list_windows or computer_snapshot.",
        -              "items": {
        -                "type": "number"
        -              },
        -              "maxItems": 4,
        -              "minItems": 4,
        -              "type": "array"
        -            },
        -            "ocr_text": {
        -              "description": "Visible text to find in rendered pixels for the OCR click fallback.",
        -              "type": "string"
        -            },
        -            "ocr_timeout_ms": {
        -              "description": "OCR timeout in milliseconds.",
        -              "type": "number"
        -            },
        -            "option": {
        -              "description": "Option value for browser select.",
        -              "type": "string"
        -            },
        -            "pid": {
        -              "description": "Limit matching to one owning process id when available.",
        -              "type": "number"
        -            },
        -            "replace_selection": {
        -              "description": "For multi_select, select the first item before adding the rest; default true.",
        -              "type": "boolean"
        -            },
        -            "role": {
        -              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        -              "type": "string"
        -            },
        -            "selector": {
        -              "description": "CSS selector when the fallback target is a browser element.",
        -              "type": "string"
        -            },
        -            "target": {
        -              "description": "Optional target type. auto prefers native accessibility, then browser DOM/CDP, then OCR/coordinates where supported. Use window for explicit top-level window focus/text/scroll targeting.",
        -              "enum": [
        -                "auto",
        -                "ui",
        -                "ui_element",
        -                "browser",
        -                "ocr",
        -                "coordinates",
        -                "window"
        -              ],
        -              "type": "string"
        -            },
        -            "target_id": {
        -              "description": "Browser page target id returned by browser_tabs.",
        -              "type": "string"
        -            },
        -            "targets": {
        -              "description": "Native semantic targets for action=multi_select.",
        -              "items": {
        -                "additionalProperties": false,
        -                "properties": {
        -                  "app": {
        -                    "description": "Limit matching to an application/process name substring when available.",
        -                    "type": "string"
        -                  },
        -                  "automation_id": {
        -                    "description": "Windows AutomationId when available.",
        -                    "type": "string"
        -                  },
        -                  "id": {
        -                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        -                    "type": "string"
        -                  },
        -                  "label": {
        -                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        -                    "type": "number"
        -                  },
        -                  "name": {
        -                    "description": "Accessible name/title substring.",
        -                    "type": "string"
        -                  },
        -                  "pid": {
        -                    "description": "Limit matching to one owning process id when available.",
        -                    "type": "number"
        -                  },
        -                  "role": {
        -                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        -                    "type": "string"
        -                  },
        -                  "window_title": {
        -                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        -                    "type": "string"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "maxItems": 100,
        -              "minItems": 1,
        -              "type": "array"
        -            },
        -            "text": {
        -              "description": "Unicode text to enter for action=type, or text used by multi_edit.",
        -              "type": "string"
        -            },
        -            "title": {
        -              "description": "Optional browser page title substring or top-level window title when target=window.",
        -              "type": "string"
        -            },
        -            "to_id": {
        -              "description": "Destination semantic UI element id for action=drag.",
        -              "type": "string"
        -            },
        -            "to_x": {
        -              "description": "Drag destination X coordinate.",
        -              "type": "number"
        -            },
        -            "to_y": {
        -              "description": "Drag destination Y coordinate.",
        -              "type": "number"
        -            },
        -            "url_contains": {
        -              "description": "Browser URL substring used to select a page.",
        -              "type": "string"
        -            },
        -            "value": {
        -              "description": "New value for set_value, set_range_value, or select.",
        -              "type": "string"
        -            },
        -            "wheel_times": {
        -              "description": "Number of 120-unit wheel steps for direction; 1..50.",
        -              "type": "number"
        -            },
        -            "window_id": {
        -              "description": "Top-level window id returned by list_windows when target=window.",
        -              "type": "string"
        -            },
        -            "window_title": {
        -              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        -              "type": "string"
        -            },
        -            "x": {
        -              "description": "Virtual-desktop X coordinate used by click/scroll coordinate targeting.",
        -              "type": "number"
        -            },
        -            "y": {
        -              "description": "Virtual-desktop Y coordinate used by click/scroll coordinate targeting.",
        -              "type": "number"
        -            }
        -          },
        -          "required": [
        -            "action"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  }
        -]New value: +[
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "computer_snapshot"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "browser_max_nodes": {
        +              "description": "Maximum browser accessibility nodes; default 500, maximum 2000.",
        +              "type": "number"
        +            },
        +            "browser_readiness": {
        +              "description": "Opt-in bounded CDP readiness status: disabled, blocked endpoint, unavailable, invalid response, no tabs, or ready. No tab URLs or titles; never launches Chrome. Default false.",
        +              "type": "boolean"
        +            },
        +            "grid_columns": {
        +              "description": "Optional reference-grid column count returned as visual metadata; 0..20.",
        +              "type": "number"
        +            },
        +            "grid_rows": {
        +              "description": "Optional reference-grid row count returned as visual metadata; 0..20.",
        +              "type": "number"
        +            },
        +            "include_browser": {
        +              "description": "Include CDP browser accessibility when available. Default auto: only when the active app looks Chromium-based.",
        +              "type": "boolean"
        +            },
        +            "include_ocr": {
        +              "description": "Run optional local OCR. Default auto: only when native accessibility and browser DOM are unavailable. Requires tesseract on PATH.",
        +              "type": "boolean"
        +            },
        +            "include_screenshot": {
        +              "description": "Include real rendered desktop pixels; default true.",
        +              "type": "boolean"
        +            },
        +            "include_ui": {
        +              "description": "Include native accessibility tree; default true. False is the fast screenshot-only path.",
        +              "type": "boolean"
        +            },
        +            "max_ui_depth": {
        +              "description": "Maximum native accessibility depth; default 12.",
        +              "type": "number"
        +            },
        +            "max_ui_nodes": {
        +              "description": "Maximum native accessibility nodes; default 800.",
        +              "type": "number"
        +            },
        +            "ocr_language": {
        +              "description": "Tesseract language code, default eng; multiple languages may use eng+deu.",
        +              "type": "string"
        +            },
        +            "ocr_max_words": {
        +              "description": "Maximum OCR word boxes returned; default 2000, maximum 10000.",
        +              "type": "number"
        +            },
        +            "ocr_psm": {
        +              "description": "Tesseract page segmentation mode, 3..13; default 11.",
        +              "type": "number"
        +            },
        +            "ocr_timeout_ms": {
        +              "description": "OCR timeout, default 30000 ms, maximum 120000 ms.",
        +              "type": "number"
        +            },
        +            "screenshot_monitor": {
        +              "description": "Monitor name substring or \"primary\".",
        +              "type": "string"
        +            },
        +            "screenshot_monitor_index": {
        +              "description": "Zero-based monitor index.",
        +              "type": "number"
        +            },
        +            "screenshot_padding": {
        +              "description": "Pixels of context around a targeted screenshot; 0..200.",
        +              "type": "number"
        +            },
        +            "screenshot_region": {
        +              "description": "Virtual-desktop [left,top,right,bottom] region; takes precedence over full desktop.",
        +              "items": {
        +                "type": "number"
        +              },
        +              "maxItems": 4,
        +              "minItems": 4,
        +              "type": "array"
        +            },
        +            "screenshot_window_id": {
        +              "description": "Capture the window returned by list_windows instead of the whole desktop.",
        +              "type": "string"
        +            },
        +            "semantic_tree": {
        +              "description": "Include compact semantic hierarchy text alongside nodes; default true.",
        +              "type": "boolean"
        +            },
        +            "ui_browser_dom": {
        +              "description": "Prefer the native browser accessibility document subtree when the OS exposes one; on Windows this also enables the Firefox MSAA/IAccessible fallback.",
        +              "type": "boolean"
        +            },
        +            "ui_scope": {
        +              "description": "Accessibility scope for computer_snapshot. Default active keeps the compact snapshot fast; desktop requests all accessible applications/windows.",
        +              "enum": [
        +                "active",
        +                "desktop"
        +              ],
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "computer_action"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "if": {
        +                "properties": {
        +                  "target": {
        +                    "const": "window"
        +                  }
        +                },
        +                "required": [
        +                  "target"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "window_id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "pid"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "app"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "window_title"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "title"
        +                    ]
        +                  }
        +                ],
        +                "properties": {
        +                  "action": {
        +                    "enum": [
        +                      "type",
        +                      "focus",
        +                      "scroll",
        +                      "drag"
        +                    ]
        +                  }
        +                }
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "click"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "label"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "role"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "automation_id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "selector"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "browser_text"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "ocr_text"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "x",
        +                      "y"
        +                    ]
        +                  }
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "enum": [
        +                      "invoke",
        +                      "set_value",
        +                      "select",
        +                      "toggle",
        +                      "expand",
        +                      "collapse",
        +                      "scroll_into_view",
        +                      "set_range_value",
        +                      "add_to_selection",
        +                      "remove_from_selection"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "label"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "role"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "automation_id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "selector"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "browser_text"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  }
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "focus"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "label"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "role"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "automation_id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "selector"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "browser_text"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "window_id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "pid"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "app"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "window_title"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "title"
        +                    ]
        +                  }
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "type"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "allOf": [
        +                  {
        +                    "anyOf": [
        +                      {
        +                        "required": [
        +                          "id"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "label"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "name"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "role"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "automation_id"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "selector"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "browser_text"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "name"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "window_id"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "pid"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "app"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "window_title"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "title"
        +                        ]
        +                      }
        +                    ]
        +                  },
        +                  {
        +                    "if": {
        +                      "properties": {
        +                        "target": {
        +                          "enum": [
        +                            "ui",
        +                            "ui_element"
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "target"
        +                      ]
        +                    },
        +                    "then": {
        +                      "anyOf": [
        +                        {
        +                          "required": [
        +                            "id"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "label"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "name"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "role"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "automation_id"
        +                          ]
        +                        }
        +                      ]
        +                    }
        +                  },
        +                  {
        +                    "if": {
        +                      "properties": {
        +                        "target": {
        +                          "const": "browser"
        +                        }
        +                      },
        +                      "required": [
        +                        "target"
        +                      ]
        +                    },
        +                    "then": {
        +                      "anyOf": [
        +                        {
        +                          "required": [
        +                            "selector"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "browser_text"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "name"
        +                          ]
        +                        }
        +                      ]
        +                    }
        +                  }
        +                ],
        +                "properties": {
        +                  "target": {
        +                    "enum": [
        +                      "auto",
        +                      "ui",
        +                      "ui_element",
        +                      "browser",
        +                      "window"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "text"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "scroll"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "allOf": [
        +                  {
        +                    "anyOf": [
        +                      {
        +                        "required": [
        +                          "delta_x"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "delta_y"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "delta"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "direction"
        +                        ]
        +                      }
        +                    ]
        +                  },
        +                  {
        +                    "if": {
        +                      "properties": {
        +                        "target": {
        +                          "enum": [
        +                            "ui",
        +                            "ui_element"
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "target"
        +                      ]
        +                    },
        +                    "then": {
        +                      "anyOf": [
        +                        {
        +                          "required": [
        +                            "id"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "label"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "name"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "role"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "automation_id"
        +                          ]
        +                        }
        +                      ]
        +                    }
        +                  },
        +                  {
        +                    "if": {
        +                      "properties": {
        +                        "target": {
        +                          "const": "coordinates"
        +                        }
        +                      },
        +                      "required": [
        +                        "target"
        +                      ]
        +                    },
        +                    "then": {
        +                      "required": [
        +                        "x",
        +                        "y"
        +                      ]
        +                    }
        +                  }
        +                ],
        +                "properties": {
        +                  "target": {
        +                    "enum": [
        +                      "auto",
        +                      "ui",
        +                      "ui_element",
        +                      "browser",
        +                      "coordinates",
        +                      "window"
        +                    ]
        +                  }
        +                }
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "drag"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "allOf": [
        +                  {
        +                    "anyOf": [
        +                      {
        +                        "required": [
        +                          "from_id"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "from_x",
        +                          "from_y"
        +                        ]
        +                      }
        +                    ]
        +                  },
        +                  {
        +                    "anyOf": [
        +                      {
        +                        "required": [
        +                          "to_id"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "to_x",
        +                          "to_y"
        +                        ]
        +                      }
        +                    ]
        +                  },
        +                  {
        +                    "if": {
        +                      "properties": {
        +                        "target": {
        +                          "enum": [
        +                            "ui",
        +                            "ui_element"
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "target"
        +                      ]
        +                    },
        +                    "then": {
        +                      "required": [
        +                        "from_id",
        +                        "to_id"
        +                      ]
        +                    }
        +                  },
        +                  {
        +                    "if": {
        +                      "properties": {
        +                        "target": {
        +                          "const": "coordinates"
        +                        }
        +                      },
        +                      "required": [
        +                        "target"
        +                      ]
        +                    },
        +                    "then": {
        +                      "required": [
        +                        "from_x",
        +                        "from_y",
        +                        "to_x",
        +                        "to_y"
        +                      ]
        +                    }
        +                  }
        +                ],
        +                "properties": {
        +                  "target": {
        +                    "enum": [
        +                      "auto",
        +                      "ui",
        +                      "ui_element",
        +                      "coordinates",
        +                      "window"
        +                    ]
        +                  }
        +                }
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "enum": [
        +                      "set_value",
        +                      "set_range_value"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "value"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "multi_select"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "targets"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "multi_edit"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "edits"
        +                ]
        +              }
        +            }
        +          ],
        +          "properties": {
        +            "action": {
        +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        +              "enum": [
        +                "click",
        +                "type",
        +                "invoke",
        +                "focus",
        +                "select",
        +                "scroll",
        +                "drag",
        +                "set_value",
        +                "toggle",
        +                "expand",
        +                "collapse",
        +                "scroll_into_view",
        +                "set_range_value",
        +                "add_to_selection",
        +                "remove_from_selection",
        +                "multi_select",
        +                "multi_edit"
        +              ],
        +              "type": "string"
        +            },
        +            "app": {
        +              "description": "Limit matching to an application/process name substring when available.",
        +              "type": "string"
        +            },
        +            "automation_id": {
        +              "description": "Windows AutomationId when available.",
        +              "type": "string"
        +            },
        +            "backend": {
        +              "description": "Input backend preference. auto uses proven local backends and already-authorized portal input; portal explicitly requests XDG RemoteDesktop consent on Wayland; x11 forces XWayland/xdotool only for operations where read-back testing shows it is reliable. GNOME Wayland keyboard/text deliberately reject x11.",
        +              "enum": [
        +                "auto",
        +                "x11",
        +                "portal"
        +              ],
        +              "type": "string"
        +            },
        +            "browser_text": {
        +              "description": "Visible browser text used only to locate a DOM target; for action=type, text remains the value to enter.",
        +              "type": "string"
        +            },
        +            "button": {
        +              "description": "Pointer button to use for click/down/up or drag gestures.",
        +              "enum": [
        +                "left",
        +                "right",
        +                "middle"
        +              ],
        +              "type": "string"
        +            },
        +            "clear": {
        +              "description": "For action=type, clear the current semantic/browser value before inserting text when supported.",
        +              "type": "boolean"
        +            },
        +            "delta": {
        +              "description": "Alias for delta_y.",
        +              "type": "number"
        +            },
        +            "delta_x": {
        +              "description": "Horizontal scroll delta; positive means right.",
        +              "type": "number"
        +            },
        +            "delta_y": {
        +              "description": "Vertical scroll delta; positive means down.",
        +              "type": "number"
        +            },
        +            "direction": {
        +              "description": "Human-readable scroll direction used with wheel_times instead of explicit deltas.",
        +              "enum": [
        +                "up",
        +                "down",
        +                "left",
        +                "right"
        +              ],
        +              "type": "string"
        +            },
        +            "duration_ms": {
        +              "description": "Drag movement duration.",
        +              "type": "number"
        +            },
        +            "edits": {
        +              "description": "Native semantic target + text entries for action=multi_edit.",
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "app": {
        +                    "description": "Limit matching to an application/process name substring when available.",
        +                    "type": "string"
        +                  },
        +                  "automation_id": {
        +                    "description": "Windows AutomationId when available.",
        +                    "type": "string"
        +                  },
        +                  "clear": {
        +                    "description": "Clear the current value before entering text; default true.",
        +                    "type": "boolean"
        +                  },
        +                  "id": {
        +                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        +                    "type": "string"
        +                  },
        +                  "label": {
        +                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        +                    "type": "number"
        +                  },
        +                  "method": {
        +                    "description": "Text-entry strategy; auto is recommended.",
        +                    "enum": [
        +                      "auto",
        +                      "accessibility",
        +                      "clipboard",
        +                      "keys"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "description": "Accessible name/title substring.",
        +                    "type": "string"
        +                  },
        +                  "pid": {
        +                    "description": "Limit matching to one owning process id when available.",
        +                    "type": "number"
        +                  },
        +                  "role": {
        +                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        +                    "type": "string"
        +                  },
        +                  "text": {
        +                    "description": "Replacement text for this semantic edit.",
        +                    "type": "string"
        +                  },
        +                  "window_title": {
        +                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "text"
        +                ],
        +                "type": "object"
        +              },
        +              "maxItems": 100,
        +              "minItems": 1,
        +              "type": "array"
        +            },
        +            "endpoint": {
        +              "description": "Loopback Chrome DevTools endpoint for a browser fallback.",
        +              "type": "string"
        +            },
        +            "from_id": {
        +              "description": "Source semantic UI element id for action=drag.",
        +              "type": "string"
        +            },
        +            "from_x": {
        +              "description": "Drag source X coordinate.",
        +              "type": "number"
        +            },
        +            "from_y": {
        +              "description": "Drag source Y coordinate.",
        +              "type": "number"
        +            },
        +            "hold_ms": {
        +              "description": "Delay after pointer down before moving during action=drag.",
        +              "type": "number"
        +            },
        +            "id": {
        +              "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        +              "type": "string"
        +            },
        +            "label": {
        +              "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        +              "type": "number"
        +            },
        +            "name": {
        +              "description": "Accessible name/title substring.",
        +              "type": "string"
        +            },
        +            "ocr_language": {
        +              "description": "Tesseract language code, default eng.",
        +              "type": "string"
        +            },
        +            "ocr_psm": {
        +              "description": "Tesseract page segmentation mode, default 11.",
        +              "type": "number"
        +            },
        +            "ocr_region": {
        +              "description": "Optional virtual-desktop [left,top,right,bottom] region to OCR. Prefer bounds from list_windows or computer_snapshot.",
        +              "items": {
        +                "type": "number"
        +              },
        +              "maxItems": 4,
        +              "minItems": 4,
        +              "type": "array"
        +            },
        +            "ocr_text": {
        +              "description": "Visible text to find in rendered pixels for the OCR click fallback.",
        +              "type": "string"
        +            },
        +            "ocr_timeout_ms": {
        +              "description": "OCR timeout in milliseconds.",
        +              "type": "number"
        +            },
        +            "option": {
        +              "description": "Option value for browser select.",
        +              "type": "string"
        +            },
        +            "pid": {
        +              "description": "Limit matching to one owning process id when available.",
        +              "type": "number"
        +            },
        +            "replace_selection": {
        +              "description": "For multi_select, select the first item before adding the rest; default true.",
        +              "type": "boolean"
        +            },
        +            "role": {
        +              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        +              "type": "string"
        +            },
        +            "selector": {
        +              "description": "CSS selector when the fallback target is a browser element.",
        +              "type": "string"
        +            },
        +            "target": {
        +              "description": "Optional target type. auto prefers native accessibility, then browser DOM/CDP, then OCR/coordinates where supported. Use window for explicit top-level window focus/text/scroll targeting.",
        +              "enum": [
        +                "auto",
        +                "ui",
        +                "ui_element",
        +                "browser",
        +                "ocr",
        +                "coordinates",
        +                "window"
        +              ],
        +              "type": "string"
        +            },
        +            "target_id": {
        +              "description": "Browser page target id returned by browser_tabs.",
        +              "type": "string"
        +            },
        +            "targets": {
        +              "description": "Native semantic targets for action=multi_select.",
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "app": {
        +                    "description": "Limit matching to an application/process name substring when available.",
        +                    "type": "string"
        +                  },
        +                  "automation_id": {
        +                    "description": "Windows AutomationId when available.",
        +                    "type": "string"
        +                  },
        +                  "id": {
        +                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        +                    "type": "string"
        +                  },
        +                  "label": {
        +                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        +                    "type": "number"
        +                  },
        +                  "name": {
        +                    "description": "Accessible name/title substring.",
        +                    "type": "string"
        +                  },
        +                  "pid": {
        +                    "description": "Limit matching to one owning process id when available.",
        +                    "type": "number"
        +                  },
        +                  "role": {
        +                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        +                    "type": "string"
        +                  },
        +                  "window_title": {
        +                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        +                    "type": "string"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "maxItems": 100,
        +              "minItems": 1,
        +              "type": "array"
        +            },
        +            "text": {
        +              "description": "Unicode text to enter for action=type, or text used by multi_edit.",
        +              "type": "string"
        +            },
        +            "title": {
        +              "description": "Optional browser page title substring or top-level window title when target=window.",
        +              "type": "string"
        +            },
        +            "to_id": {
        +              "description": "Destination semantic UI element id for action=drag.",
        +              "type": "string"
        +            },
        +            "to_x": {
        +              "description": "Drag destination X coordinate.",
        +              "type": "number"
        +            },
        +            "to_y": {
        +              "description": "Drag destination Y coordinate.",
        +              "type": "number"
        +            },
        +            "url_contains": {
        +              "description": "Browser URL substring used to select a page.",
        +              "type": "string"
        +            },
        +            "value": {
        +              "description": "New value for set_value, set_range_value, or select.",
        +              "type": "string"
        +            },
        +            "wheel_times": {
        +              "description": "Number of 120-unit wheel steps for direction; 1..50.",
        +              "type": "number"
        +            },
        +            "window_id": {
        +              "description": "Top-level window id returned by list_windows when target=window.",
        +              "type": "string"
        +            },
        +            "window_title": {
        +              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        +              "type": "string"
        +            },
        +            "x": {
        +              "description": "Virtual-desktop X coordinate used by click/scroll coordinate targeting.",
        +              "type": "number"
        +            },
        +            "y": {
        +              "description": "Virtual-desktop Y coordinate used by click/scroll coordinate targeting.",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "action"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  }
        +]
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "description": "Computer snapshot structured result for computer_snapshot. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        -    "properties": {
        -      "active_window": {
        -        "additionalProperties": true,
        -        "description": "Active top-level window when known; null when accessibility state cannot be joined to top-level window enumeration.",
        -        "type": [
        -          "object",
        -          "null"
        -        ]
        -      },
        -      "browser": {
        -        "additionalProperties": true,
        -        "description": "Optional browser DOM/CDP snapshot.",
        -        "type": "object"
        -      },
        -      "bytes": {
        -        "description": "Serialized structured-result size when truncation metadata is returned.",
        -        "type": "number"
        -      },
        -      "clipboard": {
        -        "additionalProperties": true,
        -        "description": "Clipboard metadata only unless clipboard content was explicitly requested.",
        -        "type": "object"
        -      },
        -      "cursor": {
        -        "additionalProperties": true,
        -        "description": "Pointer position when available.",
        -        "type": "object"
        -      },
        -      "data": {
        -        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        -      },
        -      "device": {
        -        "additionalProperties": true,
        -        "description": "Device/platform metadata for the captured computer state.",
        -        "type": "object"
        -      },
        -      "displays": {
        -        "description": "Display inventory used for virtual-desktop geometry.",
        -        "items": {
        -          "additionalProperties": true,
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "errors": {
        -        "description": "Non-fatal sub-capture errors.",
        -        "items": {
        -          "additionalProperties": true,
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "fallback_chain": {
        -        "additionalProperties": true,
        -        "description": "Which semantic/DOM/OCR/coordinate layers were requested and available.",
        -        "type": "object"
        -      },
        -      "ocr": {
        -        "additionalProperties": true,
        -        "description": "Optional OCR words/metadata.",
        -        "type": "object"
        -      },
        -      "preview": {
        -        "description": "Bounded JSON preview when the full structured mirror is too large.",
        -        "type": "string"
        -      },
        -      "text": {
        -        "description": "Human-readable structured mirror for text-only results.",
        -        "type": "string"
        -      },
        -      "truncated": {
        -        "description": "True when the structured mirror was bounded because the result was large.",
        -        "type": "boolean"
        -      },
        -      "ui": {
        -        "additionalProperties": true,
        -        "description": "Native accessibility snapshot and semantic tree.",
        -        "type": "object"
        -      },
        -      "windows": {
        -        "description": "Top-level windows with stable ids/PIDs/bounds when available.",
        -        "items": {
        -          "additionalProperties": true,
        -          "type": "object"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": true,
        -    "description": "Computer action structured result for computer_action. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        -    "properties": {
        -      "action": {
        -        "type": "string"
        -      },
        -      "bytes": {
        -        "description": "Serialized structured-result size when truncation metadata is returned.",
        -        "type": "number"
        -      },
        -      "capped": {
        -        "type": "boolean"
        -      },
        -      "completed": {
        -        "type": "number"
        -      },
        -      "count": {
        -        "type": "number"
        -      },
        -      "data": {
        -        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        -      },
        -      "ok": {
        -        "type": "boolean"
        -      },
        -      "preview": {
        -        "description": "Bounded JSON preview when the full structured mirror is too large.",
        -        "type": "string"
        -      },
        -      "results": {
        -        "items": {
        -          "additionalProperties": true,
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "stopped_at": {
        -        "type": "number"
        -      },
        -      "text": {
        -        "description": "Human-readable structured mirror for text-only results.",
        -        "type": "string"
        -      },
        -      "truncated": {
        -        "description": "True when the structured mirror was bounded because the result was large.",
        -        "type": "boolean"
        -      },
        -      "waited_ms": {
        -        "type": "number"
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "description": "Computer snapshot structured result for computer_snapshot. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        +    "properties": {
        +      "active_window": {
        +        "additionalProperties": true,
        +        "description": "Active top-level window when known; null when accessibility state cannot be joined to top-level window enumeration.",
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "browser": {
        +        "additionalProperties": true,
        +        "description": "Optional browser DOM/CDP snapshot.",
        +        "type": "object"
        +      },
        +      "browser_readiness": {
        +        "additionalProperties": true,
        +        "description": "Optional bounded local CDP readiness status and fallback hint; no tab titles or URLs.",
        +        "type": "object"
        +      },
        +      "bytes": {
        +        "description": "Serialized structured-result size when truncation metadata is returned.",
        +        "type": "number"
        +      },
        +      "clipboard": {
        +        "additionalProperties": true,
        +        "description": "Clipboard metadata only unless clipboard content was explicitly requested.",
        +        "type": "object"
        +      },
        +      "cursor": {
        +        "additionalProperties": true,
        +        "description": "Pointer position when available.",
        +        "type": "object"
        +      },
        +      "data": {
        +        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        +      },
        +      "device": {
        +        "additionalProperties": true,
        +        "description": "Device/platform metadata for the captured computer state.",
        +        "type": "object"
        +      },
        +      "displays": {
        +        "description": "Display inventory used for virtual-desktop geometry.",
        +        "items": {
        +          "additionalProperties": true,
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "errors": {
        +        "description": "Non-fatal sub-capture errors.",
        +        "items": {
        +          "additionalProperties": true,
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "fallback_chain": {
        +        "additionalProperties": true,
        +        "description": "Which semantic/DOM/OCR/coordinate layers were requested and available.",
        +        "type": "object"
        +      },
        +      "ocr": {
        +        "additionalProperties": true,
        +        "description": "Optional OCR words/metadata.",
        +        "type": "object"
        +      },
        +      "preview": {
        +        "description": "Bounded JSON preview when the full structured mirror is too large.",
        +        "type": "string"
        +      },
        +      "text": {
        +        "description": "Human-readable structured mirror for text-only results.",
        +        "type": "string"
        +      },
        +      "truncated": {
        +        "description": "True when the structured mirror was bounded because the result was large.",
        +        "type": "boolean"
        +      },
        +      "ui": {
        +        "additionalProperties": true,
        +        "description": "Native accessibility snapshot and semantic tree.",
        +        "type": "object"
        +      },
        +      "windows": {
        +        "description": "Top-level windows with stable ids/PIDs/bounds when available.",
        +        "items": {
        +          "additionalProperties": true,
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "description": "Computer action structured result for computer_action. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        +    "properties": {
        +      "action": {
        +        "type": "string"
        +      },
        +      "bytes": {
        +        "description": "Serialized structured-result size when truncation metadata is returned.",
        +        "type": "number"
        +      },
        +      "capped": {
        +        "type": "boolean"
        +      },
        +      "completed": {
        +        "type": "number"
        +      },
        +      "count": {
        +        "type": "number"
        +      },
        +      "data": {
        +        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        +      },
        +      "ok": {
        +        "type": "boolean"
        +      },
        +      "preview": {
        +        "description": "Bounded JSON preview when the full structured mirror is too large.",
        +        "type": "string"
        +      },
        +      "results": {
        +        "items": {
        +          "additionalProperties": true,
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "stopped_at": {
        +        "type": "number"
        +      },
        +      "text": {
        +        "description": "Human-readable structured mirror for text-only results.",
        +        "type": "string"
        +      },
        +      "truncated": {
        +        "description": "True when the structured mirror was bounded because the result was large.",
        +        "type": "boolean"
        +      },
        +      "waited_ms": {
        +        "type": "number"
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
  3. 2 tool updatesv0.2.141
    • Changedcontrol_computer1 field changed
      • changedInput schema / allOf
        Previous value: -[
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "computer_snapshot"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "browser_max_nodes": {
        -              "description": "Maximum browser accessibility nodes; default 500, maximum 2000.",
        -              "type": "number"
        -            },
        -            "grid_columns": {
        -              "description": "Optional reference-grid column count returned as visual metadata; 0..20.",
        -              "type": "number"
        -            },
        -            "grid_rows": {
        -              "description": "Optional reference-grid row count returned as visual metadata; 0..20.",
        -              "type": "number"
        -            },
        -            "include_browser": {
        -              "description": "Include CDP browser accessibility when available. Default auto: only when the active app looks Chromium-based.",
        -              "type": "boolean"
        -            },
        -            "include_ocr": {
        -              "description": "Run optional local OCR. Default auto: only when native accessibility and browser DOM are unavailable. Requires tesseract on PATH.",
        -              "type": "boolean"
        -            },
        -            "include_screenshot": {
        -              "description": "Include real rendered desktop pixels; default true.",
        -              "type": "boolean"
        -            },
        -            "include_ui": {
        -              "description": "Include native accessibility tree; default true. False is the fast screenshot-only path.",
        -              "type": "boolean"
        -            },
        -            "max_ui_depth": {
        -              "description": "Maximum native accessibility depth; default 12.",
        -              "type": "number"
        -            },
        -            "max_ui_nodes": {
        -              "description": "Maximum native accessibility nodes; default 800.",
        -              "type": "number"
        -            },
        -            "ocr_language": {
        -              "description": "Tesseract language code, default eng; multiple languages may use eng+deu.",
        -              "type": "string"
        -            },
        -            "ocr_max_words": {
        -              "description": "Maximum OCR word boxes returned; default 2000, maximum 10000.",
        -              "type": "number"
        -            },
        -            "ocr_psm": {
        -              "description": "Tesseract page segmentation mode, 3..13; default 11.",
        -              "type": "number"
        -            },
        -            "ocr_timeout_ms": {
        -              "description": "OCR timeout, default 30000 ms, maximum 120000 ms.",
        -              "type": "number"
        -            },
        -            "screenshot_monitor": {
        -              "description": "Monitor name substring or \"primary\".",
        -              "type": "string"
        -            },
        -            "screenshot_monitor_index": {
        -              "description": "Zero-based monitor index.",
        -              "type": "number"
        -            },
        -            "screenshot_padding": {
        -              "description": "Pixels of context around a targeted screenshot; 0..200.",
        -              "type": "number"
        -            },
        -            "screenshot_region": {
        -              "description": "Virtual-desktop [left,top,right,bottom] region; takes precedence over full desktop.",
        -              "items": {
        -                "type": "number"
        -              },
        -              "maxItems": 4,
        -              "minItems": 4,
        -              "type": "array"
        -            },
        -            "screenshot_window_id": {
        -              "description": "Capture the window returned by list_windows instead of the whole desktop.",
        -              "type": "string"
        -            },
        -            "semantic_tree": {
        -              "description": "Include compact semantic hierarchy text alongside nodes; default true.",
        -              "type": "boolean"
        -            },
        -            "ui_browser_dom": {
        -              "description": "Prefer the native browser accessibility document subtree when the OS exposes one; on Windows this also enables the Firefox MSAA/IAccessible fallback.",
        -              "type": "boolean"
        -            },
        -            "ui_scope": {
        -              "description": "Accessibility scope for computer_snapshot. Default active keeps the compact snapshot fast; desktop requests all accessible applications/windows.",
        -              "enum": [
        -                "active",
        -                "desktop"
        -              ],
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "computer_action"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "click"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "anyOf": [
        -                  {
        -                    "required": [
        -                      "id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "label"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "name"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "role"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "automation_id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "selector"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "browser_text"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "ocr_text"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "x",
        -                      "y"
        -                    ]
        -                  }
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "enum": [
        -                      "invoke",
        -                      "set_value",
        -                      "select",
        -                      "toggle",
        -                      "expand",
        -                      "collapse",
        -                      "scroll_into_view",
        -                      "set_range_value",
        -                      "add_to_selection",
        -                      "remove_from_selection"
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "anyOf": [
        -                  {
        -                    "required": [
        -                      "id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "label"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "name"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "role"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "automation_id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "selector"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "browser_text"
        -                    ]
        -                  }
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "focus"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "anyOf": [
        -                  {
        -                    "required": [
        -                      "id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "label"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "name"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "role"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "automation_id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "selector"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "browser_text"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "pid"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "app"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "window_title"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "title"
        -                    ]
        -                  }
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "enum": [
        -                      "set_value",
        -                      "set_range_value"
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "value"
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "multi_select"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "targets"
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "multi_edit"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "edits"
        -                ]
        -              }
        -            }
        -          ],
        -          "properties": {
        -            "action": {
        -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        -              "enum": [
        -                "click",
        -                "invoke",
        -                "focus",
        -                "set_value",
        -                "select",
        -                "toggle",
        -                "expand",
        -                "collapse",
        -                "scroll_into_view",
        -                "set_range_value",
        -                "add_to_selection",
        -                "remove_from_selection",
        -                "multi_select",
        -                "multi_edit"
        -              ],
        -              "type": "string"
        -            },
        -            "app": {
        -              "description": "Limit matching to an application/process name substring when available.",
        -              "type": "string"
        -            },
        -            "automation_id": {
        -              "description": "Windows AutomationId when available.",
        -              "type": "string"
        -            },
        -            "backend": {
        -              "description": "Input backend preference. auto uses proven local backends and already-authorized portal input; portal explicitly requests XDG RemoteDesktop consent on Wayland; x11 forces XWayland/xdotool only for operations where read-back testing shows it is reliable. GNOME Wayland keyboard/text deliberately reject x11.",
        -              "enum": [
        -                "auto",
        -                "x11",
        -                "portal"
        -              ],
        -              "type": "string"
        -            },
        -            "browser_text": {
        -              "description": "Visible browser text used to locate a DOM fallback target.",
        -              "type": "string"
        -            },
        -            "edits": {
        -              "description": "Native semantic target + text entries for action=multi_edit.",
        -              "items": {
        -                "additionalProperties": false,
        -                "properties": {
        -                  "app": {
        -                    "description": "Limit matching to an application/process name substring when available.",
        -                    "type": "string"
        -                  },
        -                  "automation_id": {
        -                    "description": "Windows AutomationId when available.",
        -                    "type": "string"
        -                  },
        -                  "clear": {
        -                    "description": "Clear the current value before entering text; default true.",
        -                    "type": "boolean"
        -                  },
        -                  "id": {
        -                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        -                    "type": "string"
        -                  },
        -                  "label": {
        -                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        -                    "type": "number"
        -                  },
        -                  "method": {
        -                    "description": "Text-entry strategy; auto is recommended.",
        -                    "enum": [
        -                      "auto",
        -                      "accessibility",
        -                      "clipboard",
        -                      "keys"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "description": "Accessible name/title substring.",
        -                    "type": "string"
        -                  },
        -                  "pid": {
        -                    "description": "Limit matching to one owning process id when available.",
        -                    "type": "number"
        -                  },
        -                  "role": {
        -                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        -                    "type": "string"
        -                  },
        -                  "text": {
        -                    "description": "Replacement text for this semantic edit.",
        -                    "type": "string"
        -                  },
        -                  "window_title": {
        -                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "text"
        -                ],
        -                "type": "object"
        -              },
        -              "maxItems": 100,
        -              "minItems": 1,
        -              "type": "array"
        -            },
        -            "endpoint": {
        -              "description": "Loopback Chrome DevTools endpoint for a browser fallback.",
        -              "type": "string"
        -            },
        -            "id": {
        -              "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        -              "type": "string"
        -            },
        -            "label": {
        -              "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        -              "type": "number"
        -            },
        -            "name": {
        -              "description": "Accessible name/title substring.",
        -              "type": "string"
        -            },
        -            "ocr_language": {
        -              "description": "Tesseract language code, default eng.",
        -              "type": "string"
        -            },
        -            "ocr_psm": {
        -              "description": "Tesseract page segmentation mode, default 11.",
        -              "type": "number"
        -            },
        -            "ocr_region": {
        -              "description": "Optional virtual-desktop [left,top,right,bottom] region to OCR. Prefer bounds from list_windows or computer_snapshot.",
        -              "items": {
        -                "type": "number"
        -              },
        -              "maxItems": 4,
        -              "minItems": 4,
        -              "type": "array"
        -            },
        -            "ocr_text": {
        -              "description": "Visible text to find in rendered pixels for the OCR click fallback.",
        -              "type": "string"
        -            },
        -            "ocr_timeout_ms": {
        -              "description": "OCR timeout in milliseconds.",
        -              "type": "number"
        -            },
        -            "option": {
        -              "description": "Option value for browser select.",
        -              "type": "string"
        -            },
        -            "pid": {
        -              "description": "Limit matching to one owning process id when available.",
        -              "type": "number"
        -            },
        -            "replace_selection": {
        -              "description": "For multi_select, select the first item before adding the rest; default true.",
        -              "type": "boolean"
        -            },
        -            "role": {
        -              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        -              "type": "string"
        -            },
        -            "selector": {
        -              "description": "CSS selector when the fallback target is a browser element.",
        -              "type": "string"
        -            },
        -            "target": {
        -              "description": "Optional target type. auto tries native accessibility first, then browser DOM/CDP, OCR text when requested, then coordinates for click.",
        -              "enum": [
        -                "auto",
        -                "ui",
        -                "ui_element",
        -                "browser",
        -                "ocr",
        -                "coordinates"
        -              ],
        -              "type": "string"
        -            },
        -            "target_id": {
        -              "description": "Browser page target id returned by browser_tabs.",
        -              "type": "string"
        -            },
        -            "targets": {
        -              "description": "Native semantic targets for action=multi_select.",
        -              "items": {
        -                "additionalProperties": false,
        -                "properties": {
        -                  "app": {
        -                    "description": "Limit matching to an application/process name substring when available.",
        -                    "type": "string"
        -                  },
        -                  "automation_id": {
        -                    "description": "Windows AutomationId when available.",
        -                    "type": "string"
        -                  },
        -                  "id": {
        -                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        -                    "type": "string"
        -                  },
        -                  "label": {
        -                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        -                    "type": "number"
        -                  },
        -                  "name": {
        -                    "description": "Accessible name/title substring.",
        -                    "type": "string"
        -                  },
        -                  "pid": {
        -                    "description": "Limit matching to one owning process id when available.",
        -                    "type": "number"
        -                  },
        -                  "role": {
        -                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        -                    "type": "string"
        -                  },
        -                  "window_title": {
        -                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        -                    "type": "string"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "maxItems": 100,
        -              "minItems": 1,
        -              "type": "array"
        -            },
        -            "text": {
        -              "description": "Text used by multi_edit or as a compatibility value for a semantic edit.",
        -              "type": "string"
        -            },
        -            "title": {
        -              "description": "Optional browser page title substring when target=browser.",
        -              "type": "string"
        -            },
        -            "url_contains": {
        -              "description": "Browser URL substring used to select a page.",
        -              "type": "string"
        -            },
        -            "value": {
        -              "description": "New value for set_value, set_range_value, or select.",
        -              "type": "string"
        -            },
        -            "window_title": {
        -              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        -              "type": "string"
        -            },
        -            "x": {
        -              "description": "Virtual-desktop X coordinate used only by the final click fallback.",
        -              "type": "number"
        -            },
        -            "y": {
        -              "description": "Virtual-desktop Y coordinate used only by the final click fallback.",
        -              "type": "number"
        -            }
        -          },
        -          "required": [
        -            "action"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  }
        -]New value: +[
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "computer_snapshot"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "browser_max_nodes": {
        +              "description": "Maximum browser accessibility nodes; default 500, maximum 2000.",
        +              "type": "number"
        +            },
        +            "grid_columns": {
        +              "description": "Optional reference-grid column count returned as visual metadata; 0..20.",
        +              "type": "number"
        +            },
        +            "grid_rows": {
        +              "description": "Optional reference-grid row count returned as visual metadata; 0..20.",
        +              "type": "number"
        +            },
        +            "include_browser": {
        +              "description": "Include CDP browser accessibility when available. Default auto: only when the active app looks Chromium-based.",
        +              "type": "boolean"
        +            },
        +            "include_ocr": {
        +              "description": "Run optional local OCR. Default auto: only when native accessibility and browser DOM are unavailable. Requires tesseract on PATH.",
        +              "type": "boolean"
        +            },
        +            "include_screenshot": {
        +              "description": "Include real rendered desktop pixels; default true.",
        +              "type": "boolean"
        +            },
        +            "include_ui": {
        +              "description": "Include native accessibility tree; default true. False is the fast screenshot-only path.",
        +              "type": "boolean"
        +            },
        +            "max_ui_depth": {
        +              "description": "Maximum native accessibility depth; default 12.",
        +              "type": "number"
        +            },
        +            "max_ui_nodes": {
        +              "description": "Maximum native accessibility nodes; default 800.",
        +              "type": "number"
        +            },
        +            "ocr_language": {
        +              "description": "Tesseract language code, default eng; multiple languages may use eng+deu.",
        +              "type": "string"
        +            },
        +            "ocr_max_words": {
        +              "description": "Maximum OCR word boxes returned; default 2000, maximum 10000.",
        +              "type": "number"
        +            },
        +            "ocr_psm": {
        +              "description": "Tesseract page segmentation mode, 3..13; default 11.",
        +              "type": "number"
        +            },
        +            "ocr_timeout_ms": {
        +              "description": "OCR timeout, default 30000 ms, maximum 120000 ms.",
        +              "type": "number"
        +            },
        +            "screenshot_monitor": {
        +              "description": "Monitor name substring or \"primary\".",
        +              "type": "string"
        +            },
        +            "screenshot_monitor_index": {
        +              "description": "Zero-based monitor index.",
        +              "type": "number"
        +            },
        +            "screenshot_padding": {
        +              "description": "Pixels of context around a targeted screenshot; 0..200.",
        +              "type": "number"
        +            },
        +            "screenshot_region": {
        +              "description": "Virtual-desktop [left,top,right,bottom] region; takes precedence over full desktop.",
        +              "items": {
        +                "type": "number"
        +              },
        +              "maxItems": 4,
        +              "minItems": 4,
        +              "type": "array"
        +            },
        +            "screenshot_window_id": {
        +              "description": "Capture the window returned by list_windows instead of the whole desktop.",
        +              "type": "string"
        +            },
        +            "semantic_tree": {
        +              "description": "Include compact semantic hierarchy text alongside nodes; default true.",
        +              "type": "boolean"
        +            },
        +            "ui_browser_dom": {
        +              "description": "Prefer the native browser accessibility document subtree when the OS exposes one; on Windows this also enables the Firefox MSAA/IAccessible fallback.",
        +              "type": "boolean"
        +            },
        +            "ui_scope": {
        +              "description": "Accessibility scope for computer_snapshot. Default active keeps the compact snapshot fast; desktop requests all accessible applications/windows.",
        +              "enum": [
        +                "active",
        +                "desktop"
        +              ],
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "computer_action"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "if": {
        +                "properties": {
        +                  "target": {
        +                    "const": "window"
        +                  }
        +                },
        +                "required": [
        +                  "target"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "window_id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "pid"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "app"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "window_title"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "title"
        +                    ]
        +                  }
        +                ],
        +                "properties": {
        +                  "action": {
        +                    "enum": [
        +                      "type",
        +                      "focus",
        +                      "scroll",
        +                      "drag"
        +                    ]
        +                  }
        +                }
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "click"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "label"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "role"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "automation_id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "selector"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "browser_text"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "ocr_text"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "x",
        +                      "y"
        +                    ]
        +                  }
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "enum": [
        +                      "invoke",
        +                      "set_value",
        +                      "select",
        +                      "toggle",
        +                      "expand",
        +                      "collapse",
        +                      "scroll_into_view",
        +                      "set_range_value",
        +                      "add_to_selection",
        +                      "remove_from_selection"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "label"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "role"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "automation_id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "selector"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "browser_text"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  }
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "focus"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "label"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "role"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "automation_id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "selector"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "browser_text"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "window_id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "pid"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "app"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "window_title"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "title"
        +                    ]
        +                  }
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "type"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "allOf": [
        +                  {
        +                    "anyOf": [
        +                      {
        +                        "required": [
        +                          "id"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "label"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "name"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "role"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "automation_id"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "selector"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "browser_text"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "name"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "window_id"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "pid"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "app"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "window_title"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "title"
        +                        ]
        +                      }
        +                    ]
        +                  },
        +                  {
        +                    "if": {
        +                      "properties": {
        +                        "target": {
        +                          "enum": [
        +                            "ui",
        +                            "ui_element"
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "target"
        +                      ]
        +                    },
        +                    "then": {
        +                      "anyOf": [
        +                        {
        +                          "required": [
        +                            "id"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "label"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "name"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "role"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "automation_id"
        +                          ]
        +                        }
        +                      ]
        +                    }
        +                  },
        +                  {
        +                    "if": {
        +                      "properties": {
        +                        "target": {
        +                          "const": "browser"
        +                        }
        +                      },
        +                      "required": [
        +                        "target"
        +                      ]
        +                    },
        +                    "then": {
        +                      "anyOf": [
        +                        {
        +                          "required": [
        +                            "selector"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "browser_text"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "name"
        +                          ]
        +                        }
        +                      ]
        +                    }
        +                  }
        +                ],
        +                "properties": {
        +                  "target": {
        +                    "enum": [
        +                      "auto",
        +                      "ui",
        +                      "ui_element",
        +                      "browser",
        +                      "window"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "text"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "scroll"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "allOf": [
        +                  {
        +                    "anyOf": [
        +                      {
        +                        "required": [
        +                          "delta_x"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "delta_y"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "delta"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "direction"
        +                        ]
        +                      }
        +                    ]
        +                  },
        +                  {
        +                    "if": {
        +                      "properties": {
        +                        "target": {
        +                          "enum": [
        +                            "ui",
        +                            "ui_element"
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "target"
        +                      ]
        +                    },
        +                    "then": {
        +                      "anyOf": [
        +                        {
        +                          "required": [
        +                            "id"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "label"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "name"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "role"
        +                          ]
        +                        },
        +                        {
        +                          "required": [
        +                            "automation_id"
        +                          ]
        +                        }
        +                      ]
        +                    }
        +                  },
        +                  {
        +                    "if": {
        +                      "properties": {
        +                        "target": {
        +                          "const": "coordinates"
        +                        }
        +                      },
        +                      "required": [
        +                        "target"
        +                      ]
        +                    },
        +                    "then": {
        +                      "required": [
        +                        "x",
        +                        "y"
        +                      ]
        +                    }
        +                  }
        +                ],
        +                "properties": {
        +                  "target": {
        +                    "enum": [
        +                      "auto",
        +                      "ui",
        +                      "ui_element",
        +                      "browser",
        +                      "coordinates",
        +                      "window"
        +                    ]
        +                  }
        +                }
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "drag"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "allOf": [
        +                  {
        +                    "anyOf": [
        +                      {
        +                        "required": [
        +                          "from_id"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "from_x",
        +                          "from_y"
        +                        ]
        +                      }
        +                    ]
        +                  },
        +                  {
        +                    "anyOf": [
        +                      {
        +                        "required": [
        +                          "to_id"
        +                        ]
        +                      },
        +                      {
        +                        "required": [
        +                          "to_x",
        +                          "to_y"
        +                        ]
        +                      }
        +                    ]
        +                  },
        +                  {
        +                    "if": {
        +                      "properties": {
        +                        "target": {
        +                          "enum": [
        +                            "ui",
        +                            "ui_element"
        +                          ]
        +                        }
        +                      },
        +                      "required": [
        +                        "target"
        +                      ]
        +                    },
        +                    "then": {
        +                      "required": [
        +                        "from_id",
        +                        "to_id"
        +                      ]
        +                    }
        +                  },
        +                  {
        +                    "if": {
        +                      "properties": {
        +                        "target": {
        +                          "const": "coordinates"
        +                        }
        +                      },
        +                      "required": [
        +                        "target"
        +                      ]
        +                    },
        +                    "then": {
        +                      "required": [
        +                        "from_x",
        +                        "from_y",
        +                        "to_x",
        +                        "to_y"
        +                      ]
        +                    }
        +                  }
        +                ],
        +                "properties": {
        +                  "target": {
        +                    "enum": [
        +                      "auto",
        +                      "ui",
        +                      "ui_element",
        +                      "coordinates",
        +                      "window"
        +                    ]
        +                  }
        +                }
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "enum": [
        +                      "set_value",
        +                      "set_range_value"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "value"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "multi_select"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "targets"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "multi_edit"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "edits"
        +                ]
        +              }
        +            }
        +          ],
        +          "properties": {
        +            "action": {
        +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        +              "enum": [
        +                "click",
        +                "type",
        +                "invoke",
        +                "focus",
        +                "select",
        +                "scroll",
        +                "drag",
        +                "set_value",
        +                "toggle",
        +                "expand",
        +                "collapse",
        +                "scroll_into_view",
        +                "set_range_value",
        +                "add_to_selection",
        +                "remove_from_selection",
        +                "multi_select",
        +                "multi_edit"
        +              ],
        +              "type": "string"
        +            },
        +            "app": {
        +              "description": "Limit matching to an application/process name substring when available.",
        +              "type": "string"
        +            },
        +            "automation_id": {
        +              "description": "Windows AutomationId when available.",
        +              "type": "string"
        +            },
        +            "backend": {
        +              "description": "Input backend preference. auto uses proven local backends and already-authorized portal input; portal explicitly requests XDG RemoteDesktop consent on Wayland; x11 forces XWayland/xdotool only for operations where read-back testing shows it is reliable. GNOME Wayland keyboard/text deliberately reject x11.",
        +              "enum": [
        +                "auto",
        +                "x11",
        +                "portal"
        +              ],
        +              "type": "string"
        +            },
        +            "browser_text": {
        +              "description": "Visible browser text used only to locate a DOM target; for action=type, text remains the value to enter.",
        +              "type": "string"
        +            },
        +            "button": {
        +              "description": "Pointer button to use for click/down/up or drag gestures.",
        +              "enum": [
        +                "left",
        +                "right",
        +                "middle"
        +              ],
        +              "type": "string"
        +            },
        +            "clear": {
        +              "description": "For action=type, clear the current semantic/browser value before inserting text when supported.",
        +              "type": "boolean"
        +            },
        +            "delta": {
        +              "description": "Alias for delta_y.",
        +              "type": "number"
        +            },
        +            "delta_x": {
        +              "description": "Horizontal scroll delta; positive means right.",
        +              "type": "number"
        +            },
        +            "delta_y": {
        +              "description": "Vertical scroll delta; positive means down.",
        +              "type": "number"
        +            },
        +            "direction": {
        +              "description": "Human-readable scroll direction used with wheel_times instead of explicit deltas.",
        +              "enum": [
        +                "up",
        +                "down",
        +                "left",
        +                "right"
        +              ],
        +              "type": "string"
        +            },
        +            "duration_ms": {
        +              "description": "Drag movement duration.",
        +              "type": "number"
        +            },
        +            "edits": {
        +              "description": "Native semantic target + text entries for action=multi_edit.",
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "app": {
        +                    "description": "Limit matching to an application/process name substring when available.",
        +                    "type": "string"
        +                  },
        +                  "automation_id": {
        +                    "description": "Windows AutomationId when available.",
        +                    "type": "string"
        +                  },
        +                  "clear": {
        +                    "description": "Clear the current value before entering text; default true.",
        +                    "type": "boolean"
        +                  },
        +                  "id": {
        +                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        +                    "type": "string"
        +                  },
        +                  "label": {
        +                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        +                    "type": "number"
        +                  },
        +                  "method": {
        +                    "description": "Text-entry strategy; auto is recommended.",
        +                    "enum": [
        +                      "auto",
        +                      "accessibility",
        +                      "clipboard",
        +                      "keys"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "description": "Accessible name/title substring.",
        +                    "type": "string"
        +                  },
        +                  "pid": {
        +                    "description": "Limit matching to one owning process id when available.",
        +                    "type": "number"
        +                  },
        +                  "role": {
        +                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        +                    "type": "string"
        +                  },
        +                  "text": {
        +                    "description": "Replacement text for this semantic edit.",
        +                    "type": "string"
        +                  },
        +                  "window_title": {
        +                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "text"
        +                ],
        +                "type": "object"
        +              },
        +              "maxItems": 100,
        +              "minItems": 1,
        +              "type": "array"
        +            },
        +            "endpoint": {
        +              "description": "Loopback Chrome DevTools endpoint for a browser fallback.",
        +              "type": "string"
        +            },
        +            "from_id": {
        +              "description": "Source semantic UI element id for action=drag.",
        +              "type": "string"
        +            },
        +            "from_x": {
        +              "description": "Drag source X coordinate.",
        +              "type": "number"
        +            },
        +            "from_y": {
        +              "description": "Drag source Y coordinate.",
        +              "type": "number"
        +            },
        +            "hold_ms": {
        +              "description": "Delay after pointer down before moving during action=drag.",
        +              "type": "number"
        +            },
        +            "id": {
        +              "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        +              "type": "string"
        +            },
        +            "label": {
        +              "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        +              "type": "number"
        +            },
        +            "name": {
        +              "description": "Accessible name/title substring.",
        +              "type": "string"
        +            },
        +            "ocr_language": {
        +              "description": "Tesseract language code, default eng.",
        +              "type": "string"
        +            },
        +            "ocr_psm": {
        +              "description": "Tesseract page segmentation mode, default 11.",
        +              "type": "number"
        +            },
        +            "ocr_region": {
        +              "description": "Optional virtual-desktop [left,top,right,bottom] region to OCR. Prefer bounds from list_windows or computer_snapshot.",
        +              "items": {
        +                "type": "number"
        +              },
        +              "maxItems": 4,
        +              "minItems": 4,
        +              "type": "array"
        +            },
        +            "ocr_text": {
        +              "description": "Visible text to find in rendered pixels for the OCR click fallback.",
        +              "type": "string"
        +            },
        +            "ocr_timeout_ms": {
        +              "description": "OCR timeout in milliseconds.",
        +              "type": "number"
        +            },
        +            "option": {
        +              "description": "Option value for browser select.",
        +              "type": "string"
        +            },
        +            "pid": {
        +              "description": "Limit matching to one owning process id when available.",
        +              "type": "number"
        +            },
        +            "replace_selection": {
        +              "description": "For multi_select, select the first item before adding the rest; default true.",
        +              "type": "boolean"
        +            },
        +            "role": {
        +              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        +              "type": "string"
        +            },
        +            "selector": {
        +              "description": "CSS selector when the fallback target is a browser element.",
        +              "type": "string"
        +            },
        +            "target": {
        +              "description": "Optional target type. auto prefers native accessibility, then browser DOM/CDP, then OCR/coordinates where supported. Use window for explicit top-level window focus/text/scroll targeting.",
        +              "enum": [
        +                "auto",
        +                "ui",
        +                "ui_element",
        +                "browser",
        +                "ocr",
        +                "coordinates",
        +                "window"
        +              ],
        +              "type": "string"
        +            },
        +            "target_id": {
        +              "description": "Browser page target id returned by browser_tabs.",
        +              "type": "string"
        +            },
        +            "targets": {
        +              "description": "Native semantic targets for action=multi_select.",
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "app": {
        +                    "description": "Limit matching to an application/process name substring when available.",
        +                    "type": "string"
        +                  },
        +                  "automation_id": {
        +                    "description": "Windows AutomationId when available.",
        +                    "type": "string"
        +                  },
        +                  "id": {
        +                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        +                    "type": "string"
        +                  },
        +                  "label": {
        +                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        +                    "type": "number"
        +                  },
        +                  "name": {
        +                    "description": "Accessible name/title substring.",
        +                    "type": "string"
        +                  },
        +                  "pid": {
        +                    "description": "Limit matching to one owning process id when available.",
        +                    "type": "number"
        +                  },
        +                  "role": {
        +                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        +                    "type": "string"
        +                  },
        +                  "window_title": {
        +                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        +                    "type": "string"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "maxItems": 100,
        +              "minItems": 1,
        +              "type": "array"
        +            },
        +            "text": {
        +              "description": "Unicode text to enter for action=type, or text used by multi_edit.",
        +              "type": "string"
        +            },
        +            "title": {
        +              "description": "Optional browser page title substring or top-level window title when target=window.",
        +              "type": "string"
        +            },
        +            "to_id": {
        +              "description": "Destination semantic UI element id for action=drag.",
        +              "type": "string"
        +            },
        +            "to_x": {
        +              "description": "Drag destination X coordinate.",
        +              "type": "number"
        +            },
        +            "to_y": {
        +              "description": "Drag destination Y coordinate.",
        +              "type": "number"
        +            },
        +            "url_contains": {
        +              "description": "Browser URL substring used to select a page.",
        +              "type": "string"
        +            },
        +            "value": {
        +              "description": "New value for set_value, set_range_value, or select.",
        +              "type": "string"
        +            },
        +            "wheel_times": {
        +              "description": "Number of 120-unit wheel steps for direction; 1..50.",
        +              "type": "number"
        +            },
        +            "window_id": {
        +              "description": "Top-level window id returned by list_windows when target=window.",
        +              "type": "string"
        +            },
        +            "window_title": {
        +              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        +              "type": "string"
        +            },
        +            "x": {
        +              "description": "Virtual-desktop X coordinate used by click/scroll coordinate targeting.",
        +              "type": "number"
        +            },
        +            "y": {
        +              "description": "Virtual-desktop Y coordinate used by click/scroll coordinate targeting.",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "action"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  }
        +]
    • Changedmanage_system1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "text": {
        -        "description": "Human-readable result of the tool call.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "text"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": true,
        -    "description": "Network diagnostics structured result for network. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        -    "properties": {
        -      "address_count": {
        -        "type": "number"
        -      },
        -      "address_count_returned": {
        -        "type": "number"
        -      },
        -      "addresses_truncated": {
        -        "type": "boolean"
        -      },
        -      "bytes": {
        -        "description": "Serialized structured-result size when truncation metadata is returned.",
        -        "type": "number"
        -      },
        -      "data": {
        -        "items": {
        -          "additionalProperties": true,
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "dns": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "host": {
        -        "type": "string"
        -      },
        -      "hostname": {
        -        "type": "string"
        -      },
        -      "interface_count": {
        -        "type": "number"
        -      },
        -      "interface_count_returned": {
        -        "type": "number"
        -      },
        -      "interfaces": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "interfaces_truncated": {
        -        "type": "boolean"
        -      },
        -      "latency_ms": {
        -        "type": "number"
        -      },
        -      "ok": {
        -        "type": "boolean"
        -      },
        -      "port": {
        -        "type": "number"
        -      },
        -      "preview": {
        -        "description": "Bounded JSON preview when the full structured mirror is too large.",
        -        "type": "string"
        -      },
        -      "servers": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "text": {
        -        "description": "Human-readable structured mirror for text-only results.",
        -        "type": "string"
        -      },
        -      "truncated": {
        -        "description": "True when the structured mirror was bounded because the result was large.",
        -        "type": "boolean"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": true,
        -    "description": "Installed applications structured result for installed_apps. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        -    "properties": {
        -      "bytes": {
        -        "description": "Serialized structured-result size when truncation metadata is returned.",
        -        "type": "number"
        -      },
        -      "data": {
        -        "items": {
        -          "additionalProperties": true,
        -          "description": "Installed app/package with name/version/path where available.",
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "preview": {
        -        "description": "Bounded JSON preview when the full structured mirror is too large.",
        -        "type": "string"
        -      },
        -      "text": {
        -        "description": "Human-readable structured mirror for text-only results.",
        -        "type": "string"
        -      },
        -      "truncated": {
        -        "description": "True when the structured mirror was bounded because the result was large.",
        -        "type": "boolean"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": true,
        -    "description": "Runtime environment structured result for environment. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        -    "properties": {
        -      "arch": {
        -        "type": "string"
        -      },
        -      "bytes": {
        -        "description": "Serialized structured-result size when truncation metadata is returned.",
        -        "type": "number"
        -      },
        -      "data": {
        -        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        -      },
        -      "env": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "hostname": {
        -        "type": "string"
        -      },
        -      "node": {
        -        "type": "string"
        -      },
        -      "path": {
        -        "type": "string"
        -      },
        -      "platform": {
        -        "type": "string"
        -      },
        -      "preview": {
        -        "description": "Bounded JSON preview when the full structured mirror is too large.",
        -        "type": "string"
        -      },
        -      "release": {
        -        "type": "string"
        -      },
        -      "shell": {
        -        "type": "string"
        -      },
        -      "text": {
        -        "description": "Human-readable structured mirror for text-only results.",
        -        "type": "string"
        -      },
        -      "truncated": {
        -        "description": "True when the structured mirror was bounded because the result was large.",
        -        "type": "boolean"
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "text": {
        +        "description": "Human-readable result of the tool call.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "text"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "description": "Network diagnostics structured result for network. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        +    "properties": {
        +      "address_count": {
        +        "type": "number"
        +      },
        +      "address_count_returned": {
        +        "type": "number"
        +      },
        +      "addresses_truncated": {
        +        "type": "boolean"
        +      },
        +      "bytes": {
        +        "description": "Serialized structured-result size when truncation metadata is returned.",
        +        "type": "number"
        +      },
        +      "data": {
        +        "items": {
        +          "additionalProperties": true,
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "dns": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "host": {
        +        "type": "string"
        +      },
        +      "hostname": {
        +        "type": "string"
        +      },
        +      "interface_count": {
        +        "type": "number"
        +      },
        +      "interface_count_returned": {
        +        "type": "number"
        +      },
        +      "interfaces": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "interfaces_truncated": {
        +        "type": "boolean"
        +      },
        +      "latency_ms": {
        +        "type": "number"
        +      },
        +      "ok": {
        +        "type": "boolean"
        +      },
        +      "port": {
        +        "type": "number"
        +      },
        +      "preview": {
        +        "description": "Bounded JSON preview when the full structured mirror is too large.",
        +        "type": "string"
        +      },
        +      "servers": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "text": {
        +        "description": "Human-readable structured mirror for text-only results.",
        +        "type": "string"
        +      },
        +      "truncated": {
        +        "description": "True when the structured mirror was bounded because the result was large.",
        +        "type": "boolean"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "description": "Installed applications structured result for installed_apps. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        +    "properties": {
        +      "backend": {
        +        "description": "Native inventory backend used on this platform.",
        +        "type": "string"
        +      },
        +      "bytes": {
        +        "description": "Serialized structured-result size when truncation metadata is returned.",
        +        "type": "number"
        +      },
        +      "count": {
        +        "description": "Total matching records before the requested limit.",
        +        "type": "number"
        +      },
        +      "data": {
        +        "items": {
        +          "additionalProperties": true,
        +          "description": "Normalized installed app/package record.",
        +          "properties": {
        +            "name": {
        +              "description": "Installed application/package name.",
        +              "type": "string"
        +            },
        +            "path": {
        +              "description": "Installation path when available.",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "publisher": {
        +              "description": "Publisher/maintainer/vendor when available.",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "signed_by": {
        +              "description": "Optional macOS signing identity summary.",
        +              "type": "string"
        +            },
        +            "version": {
        +              "description": "Installed version when available.",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "preview": {
        +        "description": "Bounded JSON preview when the full structured mirror is too large.",
        +        "type": "string"
        +      },
        +      "returned": {
        +        "description": "Number of records returned in data.",
        +        "type": "number"
        +      },
        +      "text": {
        +        "description": "Human-readable structured mirror for text-only results.",
        +        "type": "string"
        +      },
        +      "truncated": {
        +        "description": "True when the structured mirror was bounded because the result was large.",
        +        "type": "boolean"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "description": "Runtime environment structured result for environment. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        +    "properties": {
        +      "arch": {
        +        "type": "string"
        +      },
        +      "bytes": {
        +        "description": "Serialized structured-result size when truncation metadata is returned.",
        +        "type": "number"
        +      },
        +      "cwd": {
        +        "description": "Runtime working directory.",
        +        "type": "string"
        +      },
        +      "data": {
        +        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        +      },
        +      "environment": {
        +        "additionalProperties": true,
        +        "description": "Sanitized environment variables when include_env=true.",
        +        "type": "object"
        +      },
        +      "home": {
        +        "description": "Current user home directory.",
        +        "type": "string"
        +      },
        +      "node": {
        +        "type": "string"
        +      },
        +      "path_entries": {
        +        "items": {
        +          "description": "One PATH entry in native search order.",
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "platform": {
        +        "type": "string"
        +      },
        +      "preview": {
        +        "description": "Bounded JSON preview when the full structured mirror is too large.",
        +        "type": "string"
        +      },
        +      "shell": {
        +        "description": "Configured command shell when available.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "temp": {
        +        "description": "Operating-system temporary directory.",
        +        "type": "string"
        +      },
        +      "text": {
        +        "description": "Human-readable structured mirror for text-only results.",
        +        "type": "string"
        +      },
        +      "truncated": {
        +        "description": "True when the structured mirror was bounded because the result was large.",
        +        "type": "boolean"
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
  4. 3 tool updatesv0.2.131
    • Changedcontrol_computer3 fields changed
      • changedInput schema / allOf
        Previous value: -[
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "computer_snapshot"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "browser_max_nodes": {
        -              "description": "Maximum browser accessibility nodes; default 500, maximum 2000.",
        -              "type": "number"
        -            },
        -            "grid_columns": {
        -              "description": "Optional reference-grid column count returned as visual metadata; 0..20.",
        -              "type": "number"
        -            },
        -            "grid_rows": {
        -              "description": "Optional reference-grid row count returned as visual metadata; 0..20.",
        -              "type": "number"
        -            },
        -            "include_browser": {
        -              "description": "Include CDP browser accessibility when available. Default auto: only when the active app looks Chromium-based.",
        -              "type": "boolean"
        -            },
        -            "include_ocr": {
        -              "description": "Run optional local OCR. Default auto: only when native accessibility and browser DOM are unavailable. Requires tesseract on PATH.",
        -              "type": "boolean"
        -            },
        -            "include_screenshot": {
        -              "description": "Include real rendered desktop pixels; default true.",
        -              "type": "boolean"
        -            },
        -            "include_ui": {
        -              "description": "Include native accessibility tree; default true. False is the fast screenshot-only path.",
        -              "type": "boolean"
        -            },
        -            "max_ui_depth": {
        -              "description": "Maximum native accessibility depth; default 12.",
        -              "type": "number"
        -            },
        -            "max_ui_nodes": {
        -              "description": "Maximum native accessibility nodes; default 800.",
        -              "type": "number"
        -            },
        -            "ocr_language": {
        -              "description": "Tesseract language code, default eng; multiple languages may use eng+deu.",
        -              "type": "string"
        -            },
        -            "ocr_max_words": {
        -              "description": "Maximum OCR word boxes returned; default 2000, maximum 10000.",
        -              "type": "number"
        -            },
        -            "ocr_psm": {
        -              "description": "Tesseract page segmentation mode, 3..13; default 11.",
        -              "type": "number"
        -            },
        -            "ocr_timeout_ms": {
        -              "description": "OCR timeout, default 30000 ms, maximum 120000 ms.",
        -              "type": "number"
        -            },
        -            "screenshot_monitor": {
        -              "description": "Monitor name substring or \"primary\".",
        -              "type": "string"
        -            },
        -            "screenshot_monitor_index": {
        -              "description": "Zero-based monitor index.",
        -              "type": "number"
        -            },
        -            "screenshot_padding": {
        -              "description": "Pixels of context around a targeted screenshot; 0..200.",
        -              "type": "number"
        -            },
        -            "screenshot_region": {
        -              "description": "Virtual-desktop [left,top,right,bottom] region; takes precedence over full desktop.",
        -              "items": {
        -                "type": "number"
        -              },
        -              "maxItems": 4,
        -              "minItems": 4,
        -              "type": "array"
        -            },
        -            "screenshot_window_id": {
        -              "description": "Capture the window returned by list_windows instead of the whole desktop.",
        -              "type": "string"
        -            },
        -            "semantic_tree": {
        -              "description": "Include compact semantic hierarchy text alongside nodes; default true.",
        -              "type": "boolean"
        -            },
        -            "ui_browser_dom": {
        -              "description": "Prefer the native browser accessibility document subtree when the OS exposes one; on Windows this also enables the Firefox MSAA/IAccessible fallback.",
        -              "type": "boolean"
        -            },
        -            "ui_scope": {
        -              "description": "Accessibility scope for computer_snapshot. Default active keeps the compact snapshot fast; desktop requests all accessible applications/windows.",
        -              "enum": [
        -                "active",
        -                "desktop"
        -              ],
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "computer_action"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "click"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "anyOf": [
        -                  {
        -                    "required": [
        -                      "id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "label"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "name"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "role"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "automation_id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "selector"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "browser_text"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "ocr_text"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "x",
        -                      "y"
        -                    ]
        -                  }
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "enum": [
        -                      "invoke",
        -                      "set_value",
        -                      "select",
        -                      "toggle",
        -                      "expand",
        -                      "collapse",
        -                      "scroll_into_view",
        -                      "set_range_value",
        -                      "add_to_selection",
        -                      "remove_from_selection"
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "anyOf": [
        -                  {
        -                    "required": [
        -                      "id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "label"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "name"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "role"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "automation_id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "selector"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "browser_text"
        -                    ]
        -                  }
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "focus"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "anyOf": [
        -                  {
        -                    "required": [
        -                      "id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "label"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "name"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "role"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "automation_id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "selector"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "browser_text"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "pid"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "app"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "window_title"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "title"
        -                    ]
        -                  }
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "enum": [
        -                      "set_value",
        -                      "set_range_value"
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "value"
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "multi_select"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "targets"
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "multi_edit"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "edits"
        -                ]
        -              }
        -            }
        -          ],
        -          "properties": {
        -            "action": {
        -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        -              "enum": [
        -                "click",
        -                "invoke",
        -                "focus",
        -                "set_value",
        -                "select",
        -                "toggle",
        -                "expand",
        -                "collapse",
        -                "scroll_into_view",
        -                "set_range_value",
        -                "add_to_selection",
        -                "remove_from_selection",
        -                "multi_select",
        -                "multi_edit"
        -              ],
        -              "type": "string"
        -            },
        -            "app": {
        -              "description": "Limit matching to an application/process name substring when available.",
        -              "type": "string"
        -            },
        -            "automation_id": {
        -              "description": "Windows AutomationId when available.",
        -              "type": "string"
        -            },
        -            "backend": {
        -              "description": "Input backend preference. auto uses proven local backends and already-authorized portal input; portal explicitly requests XDG RemoteDesktop consent on Wayland; x11 forces XWayland/xdotool only for operations where read-back testing shows it is reliable. GNOME Wayland keyboard/text deliberately reject x11.",
        -              "enum": [
        -                "auto",
        -                "x11",
        -                "portal"
        -              ],
        -              "type": "string"
        -            },
        -            "browser_text": {
        -              "description": "Visible browser text used to locate a DOM fallback target.",
        -              "type": "string"
        -            },
        -            "edits": {
        -              "description": "Native semantic target + text entries for action=multi_edit.",
        -              "items": {
        -                "additionalProperties": false,
        -                "properties": {
        -                  "app": {
        -                    "description": "Limit matching to an application/process name substring when available.",
        -                    "type": "string"
        -                  },
        -                  "automation_id": {
        -                    "description": "Windows AutomationId when available.",
        -                    "type": "string"
        -                  },
        -                  "clear": {
        -                    "description": "Clear the current value before entering text; default true.",
        -                    "type": "boolean"
        -                  },
        -                  "id": {
        -                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        -                    "type": "string"
        -                  },
        -                  "label": {
        -                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        -                    "type": "number"
        -                  },
        -                  "method": {
        -                    "description": "Text-entry strategy; auto is recommended.",
        -                    "enum": [
        -                      "auto",
        -                      "accessibility",
        -                      "clipboard",
        -                      "keys"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "name": {
        -                    "description": "Accessible name/title substring.",
        -                    "type": "string"
        -                  },
        -                  "pid": {
        -                    "description": "Limit matching to one owning process id when available.",
        -                    "type": "number"
        -                  },
        -                  "role": {
        -                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        -                    "type": "string"
        -                  },
        -                  "text": {
        -                    "description": "Replacement text for this semantic edit.",
        -                    "type": "string"
        -                  },
        -                  "window_title": {
        -                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "text"
        -                ],
        -                "type": "object"
        -              },
        -              "maxItems": 100,
        -              "minItems": 1,
        -              "type": "array"
        -            },
        -            "endpoint": {
        -              "description": "Loopback Chrome DevTools endpoint for a browser fallback.",
        -              "type": "string"
        -            },
        -            "id": {
        -              "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        -              "type": "string"
        -            },
        -            "label": {
        -              "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        -              "type": "number"
        -            },
        -            "name": {
        -              "description": "Accessible name/title substring.",
        -              "type": "string"
        -            },
        -            "ocr_language": {
        -              "description": "Tesseract language code, default eng.",
        -              "type": "string"
        -            },
        -            "ocr_psm": {
        -              "description": "Tesseract page segmentation mode, default 11.",
        -              "type": "number"
        -            },
        -            "ocr_region": {
        -              "description": "Optional virtual-desktop [left,top,right,bottom] region to OCR. Prefer bounds from list_windows or computer_snapshot.",
        -              "items": {
        -                "type": "number"
        -              },
        -              "maxItems": 4,
        -              "minItems": 4,
        -              "type": "array"
        -            },
        -            "ocr_text": {
        -              "description": "Visible text to find in rendered pixels for the OCR click fallback.",
        -              "type": "string"
        -            },
        -            "ocr_timeout_ms": {
        -              "description": "OCR timeout in milliseconds.",
        -              "type": "number"
        -            },
        -            "option": {
        -              "description": "Option value for browser select.",
        -              "type": "string"
        -            },
        -            "pid": {
        -              "description": "Limit matching to one owning process id when available.",
        -              "type": "number"
        -            },
        -            "replace_selection": {
        -              "description": "For multi_select, select the first item before adding the rest; default true.",
        -              "type": "boolean"
        -            },
        -            "role": {
        -              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        -              "type": "string"
        -            },
        -            "selector": {
        -              "description": "CSS selector when the fallback target is a browser element.",
        -              "type": "string"
        -            },
        -            "target": {
        -              "description": "Optional target type. auto tries native accessibility first, then browser DOM/CDP, OCR text when requested, then coordinates for click.",
        -              "enum": [
        -                "auto",
        -                "ui",
        -                "ui_element",
        -                "browser",
        -                "ocr",
        -                "coordinates"
        -              ],
        -              "type": "string"
        -            },
        -            "target_id": {
        -              "description": "Browser page target id returned by browser_tabs.",
        -              "type": "string"
        -            },
        -            "targets": {
        -              "description": "Native semantic targets for action=multi_select.",
        -              "items": {
        -                "additionalProperties": false,
        -                "properties": {
        -                  "app": {
        -                    "description": "Limit matching to an application/process name substring when available.",
        -                    "type": "string"
        -                  },
        -                  "automation_id": {
        -                    "description": "Windows AutomationId when available.",
        -                    "type": "string"
        -                  },
        -                  "id": {
        -                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        -                    "type": "string"
        -                  },
        -                  "label": {
        -                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        -                    "type": "number"
        -                  },
        -                  "name": {
        -                    "description": "Accessible name/title substring.",
        -                    "type": "string"
        -                  },
        -                  "pid": {
        -                    "description": "Limit matching to one owning process id when available.",
        -                    "type": "number"
        -                  },
        -                  "role": {
        -                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        -                    "type": "string"
        -                  },
        -                  "window_title": {
        -                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        -                    "type": "string"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "maxItems": 100,
        -              "minItems": 1,
        -              "type": "array"
        -            },
        -            "text": {
        -              "description": "Text used by multi_edit or as a compatibility value for a semantic edit.",
        -              "type": "string"
        -            },
        -            "title": {
        -              "description": "Optional browser page title substring when target=browser.",
        -              "type": "string"
        -            },
        -            "url_contains": {
        -              "description": "Browser URL substring used to select a page.",
        -              "type": "string"
        -            },
        -            "value": {
        -              "description": "New value for set_value, set_range_value, or select.",
        -              "type": "string"
        -            },
        -            "window_title": {
        -              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        -              "type": "string"
        -            },
        -            "x": {
        -              "description": "Virtual-desktop X coordinate used only by the final click fallback.",
        -              "type": "number"
        -            },
        -            "y": {
        -              "description": "Virtual-desktop Y coordinate used only by the final click fallback.",
        -              "type": "number"
        -            }
        -          },
        -          "required": [
        -            "action"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "launch_app"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "anyOf": [
        -            {
        -              "required": [
        -                "app"
        -              ]
        -            },
        -            {
        -              "required": [
        -                "path"
        -              ]
        -            }
        -          ],
        -          "properties": {
        -            "app": {
        -              "description": "Application name, friendly Start Menu name, or executable path.",
        -              "type": "string"
        -            },
        -            "args": {
        -              "description": "Argument array passed directly to the launched application; no shell parsing.",
        -              "items": {
        -                "type": "string"
        -              },
        -              "type": "array"
        -            },
        -            "cwd": {
        -              "description": "Optional permitted working directory for direct executable launch.",
        -              "type": "string"
        -            },
        -            "path": {
        -              "description": "Alias for app.",
        -              "type": "string"
        -            },
        -            "wait_for_window": {
        -              "description": "Optional application/title substring that must appear after launch.",
        -              "type": "string"
        -            },
        -            "wait_timeout_ms": {
        -              "description": "Maximum wait for wait_for_window; default 10000, maximum 120000.",
        -              "type": "number"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "open_path"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "path": {
        -              "description": "File or directory to open.",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "path"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "reveal_path"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "path": {
        -              "description": "File or directory to reveal.",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "path"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  }
        -]New value: +[
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "computer_snapshot"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "browser_max_nodes": {
        +              "description": "Maximum browser accessibility nodes; default 500, maximum 2000.",
        +              "type": "number"
        +            },
        +            "grid_columns": {
        +              "description": "Optional reference-grid column count returned as visual metadata; 0..20.",
        +              "type": "number"
        +            },
        +            "grid_rows": {
        +              "description": "Optional reference-grid row count returned as visual metadata; 0..20.",
        +              "type": "number"
        +            },
        +            "include_browser": {
        +              "description": "Include CDP browser accessibility when available. Default auto: only when the active app looks Chromium-based.",
        +              "type": "boolean"
        +            },
        +            "include_ocr": {
        +              "description": "Run optional local OCR. Default auto: only when native accessibility and browser DOM are unavailable. Requires tesseract on PATH.",
        +              "type": "boolean"
        +            },
        +            "include_screenshot": {
        +              "description": "Include real rendered desktop pixels; default true.",
        +              "type": "boolean"
        +            },
        +            "include_ui": {
        +              "description": "Include native accessibility tree; default true. False is the fast screenshot-only path.",
        +              "type": "boolean"
        +            },
        +            "max_ui_depth": {
        +              "description": "Maximum native accessibility depth; default 12.",
        +              "type": "number"
        +            },
        +            "max_ui_nodes": {
        +              "description": "Maximum native accessibility nodes; default 800.",
        +              "type": "number"
        +            },
        +            "ocr_language": {
        +              "description": "Tesseract language code, default eng; multiple languages may use eng+deu.",
        +              "type": "string"
        +            },
        +            "ocr_max_words": {
        +              "description": "Maximum OCR word boxes returned; default 2000, maximum 10000.",
        +              "type": "number"
        +            },
        +            "ocr_psm": {
        +              "description": "Tesseract page segmentation mode, 3..13; default 11.",
        +              "type": "number"
        +            },
        +            "ocr_timeout_ms": {
        +              "description": "OCR timeout, default 30000 ms, maximum 120000 ms.",
        +              "type": "number"
        +            },
        +            "screenshot_monitor": {
        +              "description": "Monitor name substring or \"primary\".",
        +              "type": "string"
        +            },
        +            "screenshot_monitor_index": {
        +              "description": "Zero-based monitor index.",
        +              "type": "number"
        +            },
        +            "screenshot_padding": {
        +              "description": "Pixels of context around a targeted screenshot; 0..200.",
        +              "type": "number"
        +            },
        +            "screenshot_region": {
        +              "description": "Virtual-desktop [left,top,right,bottom] region; takes precedence over full desktop.",
        +              "items": {
        +                "type": "number"
        +              },
        +              "maxItems": 4,
        +              "minItems": 4,
        +              "type": "array"
        +            },
        +            "screenshot_window_id": {
        +              "description": "Capture the window returned by list_windows instead of the whole desktop.",
        +              "type": "string"
        +            },
        +            "semantic_tree": {
        +              "description": "Include compact semantic hierarchy text alongside nodes; default true.",
        +              "type": "boolean"
        +            },
        +            "ui_browser_dom": {
        +              "description": "Prefer the native browser accessibility document subtree when the OS exposes one; on Windows this also enables the Firefox MSAA/IAccessible fallback.",
        +              "type": "boolean"
        +            },
        +            "ui_scope": {
        +              "description": "Accessibility scope for computer_snapshot. Default active keeps the compact snapshot fast; desktop requests all accessible applications/windows.",
        +              "enum": [
        +                "active",
        +                "desktop"
        +              ],
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "computer_action"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "click"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "label"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "role"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "automation_id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "selector"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "browser_text"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "ocr_text"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "x",
        +                      "y"
        +                    ]
        +                  }
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "enum": [
        +                      "invoke",
        +                      "set_value",
        +                      "select",
        +                      "toggle",
        +                      "expand",
        +                      "collapse",
        +                      "scroll_into_view",
        +                      "set_range_value",
        +                      "add_to_selection",
        +                      "remove_from_selection"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "label"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "role"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "automation_id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "selector"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "browser_text"
        +                    ]
        +                  }
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "focus"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "label"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "role"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "automation_id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "selector"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "browser_text"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "pid"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "app"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "window_title"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "title"
        +                    ]
        +                  }
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "enum": [
        +                      "set_value",
        +                      "set_range_value"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "value"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "multi_select"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "targets"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "multi_edit"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "edits"
        +                ]
        +              }
        +            }
        +          ],
        +          "properties": {
        +            "action": {
        +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        +              "enum": [
        +                "click",
        +                "invoke",
        +                "focus",
        +                "set_value",
        +                "select",
        +                "toggle",
        +                "expand",
        +                "collapse",
        +                "scroll_into_view",
        +                "set_range_value",
        +                "add_to_selection",
        +                "remove_from_selection",
        +                "multi_select",
        +                "multi_edit"
        +              ],
        +              "type": "string"
        +            },
        +            "app": {
        +              "description": "Limit matching to an application/process name substring when available.",
        +              "type": "string"
        +            },
        +            "automation_id": {
        +              "description": "Windows AutomationId when available.",
        +              "type": "string"
        +            },
        +            "backend": {
        +              "description": "Input backend preference. auto uses proven local backends and already-authorized portal input; portal explicitly requests XDG RemoteDesktop consent on Wayland; x11 forces XWayland/xdotool only for operations where read-back testing shows it is reliable. GNOME Wayland keyboard/text deliberately reject x11.",
        +              "enum": [
        +                "auto",
        +                "x11",
        +                "portal"
        +              ],
        +              "type": "string"
        +            },
        +            "browser_text": {
        +              "description": "Visible browser text used to locate a DOM fallback target.",
        +              "type": "string"
        +            },
        +            "edits": {
        +              "description": "Native semantic target + text entries for action=multi_edit.",
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "app": {
        +                    "description": "Limit matching to an application/process name substring when available.",
        +                    "type": "string"
        +                  },
        +                  "automation_id": {
        +                    "description": "Windows AutomationId when available.",
        +                    "type": "string"
        +                  },
        +                  "clear": {
        +                    "description": "Clear the current value before entering text; default true.",
        +                    "type": "boolean"
        +                  },
        +                  "id": {
        +                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        +                    "type": "string"
        +                  },
        +                  "label": {
        +                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        +                    "type": "number"
        +                  },
        +                  "method": {
        +                    "description": "Text-entry strategy; auto is recommended.",
        +                    "enum": [
        +                      "auto",
        +                      "accessibility",
        +                      "clipboard",
        +                      "keys"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "description": "Accessible name/title substring.",
        +                    "type": "string"
        +                  },
        +                  "pid": {
        +                    "description": "Limit matching to one owning process id when available.",
        +                    "type": "number"
        +                  },
        +                  "role": {
        +                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        +                    "type": "string"
        +                  },
        +                  "text": {
        +                    "description": "Replacement text for this semantic edit.",
        +                    "type": "string"
        +                  },
        +                  "window_title": {
        +                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "text"
        +                ],
        +                "type": "object"
        +              },
        +              "maxItems": 100,
        +              "minItems": 1,
        +              "type": "array"
        +            },
        +            "endpoint": {
        +              "description": "Loopback Chrome DevTools endpoint for a browser fallback.",
        +              "type": "string"
        +            },
        +            "id": {
        +              "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        +              "type": "string"
        +            },
        +            "label": {
        +              "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        +              "type": "number"
        +            },
        +            "name": {
        +              "description": "Accessible name/title substring.",
        +              "type": "string"
        +            },
        +            "ocr_language": {
        +              "description": "Tesseract language code, default eng.",
        +              "type": "string"
        +            },
        +            "ocr_psm": {
        +              "description": "Tesseract page segmentation mode, default 11.",
        +              "type": "number"
        +            },
        +            "ocr_region": {
        +              "description": "Optional virtual-desktop [left,top,right,bottom] region to OCR. Prefer bounds from list_windows or computer_snapshot.",
        +              "items": {
        +                "type": "number"
        +              },
        +              "maxItems": 4,
        +              "minItems": 4,
        +              "type": "array"
        +            },
        +            "ocr_text": {
        +              "description": "Visible text to find in rendered pixels for the OCR click fallback.",
        +              "type": "string"
        +            },
        +            "ocr_timeout_ms": {
        +              "description": "OCR timeout in milliseconds.",
        +              "type": "number"
        +            },
        +            "option": {
        +              "description": "Option value for browser select.",
        +              "type": "string"
        +            },
        +            "pid": {
        +              "description": "Limit matching to one owning process id when available.",
        +              "type": "number"
        +            },
        +            "replace_selection": {
        +              "description": "For multi_select, select the first item before adding the rest; default true.",
        +              "type": "boolean"
        +            },
        +            "role": {
        +              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        +              "type": "string"
        +            },
        +            "selector": {
        +              "description": "CSS selector when the fallback target is a browser element.",
        +              "type": "string"
        +            },
        +            "target": {
        +              "description": "Optional target type. auto tries native accessibility first, then browser DOM/CDP, OCR text when requested, then coordinates for click.",
        +              "enum": [
        +                "auto",
        +                "ui",
        +                "ui_element",
        +                "browser",
        +                "ocr",
        +                "coordinates"
        +              ],
        +              "type": "string"
        +            },
        +            "target_id": {
        +              "description": "Browser page target id returned by browser_tabs.",
        +              "type": "string"
        +            },
        +            "targets": {
        +              "description": "Native semantic targets for action=multi_select.",
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "app": {
        +                    "description": "Limit matching to an application/process name substring when available.",
        +                    "type": "string"
        +                  },
        +                  "automation_id": {
        +                    "description": "Windows AutomationId when available.",
        +                    "type": "string"
        +                  },
        +                  "id": {
        +                    "description": "Element id returned by ui_snapshot or ui_find. Linux ids are stable per-process accessibility paths and legacy linux:<index> ids remain accepted.",
        +                    "type": "string"
        +                  },
        +                  "label": {
        +                    "description": "Compact numeric label from the most recent ui_snapshot/ui_find; useful for repeated actions without repeating names or coordinates.",
        +                    "type": "number"
        +                  },
        +                  "name": {
        +                    "description": "Accessible name/title substring.",
        +                    "type": "string"
        +                  },
        +                  "pid": {
        +                    "description": "Limit matching to one owning process id when available.",
        +                    "type": "number"
        +                  },
        +                  "role": {
        +                    "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        +                    "type": "string"
        +                  },
        +                  "window_title": {
        +                    "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        +                    "type": "string"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "maxItems": 100,
        +              "minItems": 1,
        +              "type": "array"
        +            },
        +            "text": {
        +              "description": "Text used by multi_edit or as a compatibility value for a semantic edit.",
        +              "type": "string"
        +            },
        +            "title": {
        +              "description": "Optional browser page title substring when target=browser.",
        +              "type": "string"
        +            },
        +            "url_contains": {
        +              "description": "Browser URL substring used to select a page.",
        +              "type": "string"
        +            },
        +            "value": {
        +              "description": "New value for set_value, set_range_value, or select.",
        +              "type": "string"
        +            },
        +            "window_title": {
        +              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        +              "type": "string"
        +            },
        +            "x": {
        +              "description": "Virtual-desktop X coordinate used only by the final click fallback.",
        +              "type": "number"
        +            },
        +            "y": {
        +              "description": "Virtual-desktop Y coordinate used only by the final click fallback.",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "action"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  }
        +]
      • changedInput schema / properties / operation / enum
        Previous value: -[
        -  "computer_snapshot",
        -  "computer_action",
        -  "launch_app",
        -  "open_path",
        -  "reveal_path"
        -]New value: +[
        +  "computer_snapshot",
        +  "computer_action"
        +]
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "description": "Computer snapshot structured result for computer_snapshot. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        -    "properties": {
        -      "active_window": {
        -        "additionalProperties": true,
        -        "description": "Active top-level window when known; null when accessibility state cannot be joined to top-level window enumeration.",
        -        "type": [
        -          "object",
        -          "null"
        -        ]
        -      },
        -      "browser": {
        -        "additionalProperties": true,
        -        "description": "Optional browser DOM/CDP snapshot.",
        -        "type": "object"
        -      },
        -      "bytes": {
        -        "description": "Serialized structured-result size when truncation metadata is returned.",
        -        "type": "number"
        -      },
        -      "clipboard": {
        -        "additionalProperties": true,
        -        "description": "Clipboard metadata only unless clipboard content was explicitly requested.",
        -        "type": "object"
        -      },
        -      "cursor": {
        -        "additionalProperties": true,
        -        "description": "Pointer position when available.",
        -        "type": "object"
        -      },
        -      "data": {
        -        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        -      },
        -      "device": {
        -        "additionalProperties": true,
        -        "description": "Device/platform metadata for the captured computer state.",
        -        "type": "object"
        -      },
        -      "displays": {
        -        "description": "Display inventory used for virtual-desktop geometry.",
        -        "items": {
        -          "additionalProperties": true,
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "errors": {
        -        "description": "Non-fatal sub-capture errors.",
        -        "items": {
        -          "additionalProperties": true,
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "fallback_chain": {
        -        "additionalProperties": true,
        -        "description": "Which semantic/DOM/OCR/coordinate layers were requested and available.",
        -        "type": "object"
        -      },
        -      "ocr": {
        -        "additionalProperties": true,
        -        "description": "Optional OCR words/metadata.",
        -        "type": "object"
        -      },
        -      "preview": {
        -        "description": "Bounded JSON preview when the full structured mirror is too large.",
        -        "type": "string"
        -      },
        -      "text": {
        -        "description": "Human-readable structured mirror for text-only results.",
        -        "type": "string"
        -      },
        -      "truncated": {
        -        "description": "True when the structured mirror was bounded because the result was large.",
        -        "type": "boolean"
        -      },
        -      "ui": {
        -        "additionalProperties": true,
        -        "description": "Native accessibility snapshot and semantic tree.",
        -        "type": "object"
        -      },
        -      "windows": {
        -        "description": "Top-level windows with stable ids/PIDs/bounds when available.",
        -        "items": {
        -          "additionalProperties": true,
        -          "type": "object"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": true,
        -    "description": "Computer action structured result for computer_action. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        -    "properties": {
        -      "action": {
        -        "type": "string"
        -      },
        -      "bytes": {
        -        "description": "Serialized structured-result size when truncation metadata is returned.",
        -        "type": "number"
        -      },
        -      "capped": {
        -        "type": "boolean"
        -      },
        -      "completed": {
        -        "type": "number"
        -      },
        -      "count": {
        -        "type": "number"
        -      },
        -      "data": {
        -        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        -      },
        -      "ok": {
        -        "type": "boolean"
        -      },
        -      "preview": {
        -        "description": "Bounded JSON preview when the full structured mirror is too large.",
        -        "type": "string"
        -      },
        -      "results": {
        -        "items": {
        -          "additionalProperties": true,
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "stopped_at": {
        -        "type": "number"
        -      },
        -      "text": {
        -        "description": "Human-readable structured mirror for text-only results.",
        -        "type": "string"
        -      },
        -      "truncated": {
        -        "description": "True when the structured mirror was bounded because the result was large.",
        -        "type": "boolean"
        -      },
        -      "waited_ms": {
        -        "type": "number"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": true,
        -    "description": "Launch application structured result for launch_app. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        -    "properties": {
        -      "bytes": {
        -        "description": "Serialized structured-result size when truncation metadata is returned.",
        -        "type": "number"
        -      },
        -      "data": {
        -        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        -      },
        -      "preview": {
        -        "description": "Bounded JSON preview when the full structured mirror is too large.",
        -        "type": "string"
        -      },
        -      "text": {
        -        "description": "Human-readable launch result and optional ready-window confirmation.",
        -        "type": "string"
        -      },
        -      "truncated": {
        -        "description": "True when the structured mirror was bounded because the result was large.",
        -        "type": "boolean"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": true,
        -    "description": "Open path structured result for open_path. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        -    "properties": {
        -      "bytes": {
        -        "description": "Serialized structured-result size when truncation metadata is returned.",
        -        "type": "number"
        -      },
        -      "data": {
        -        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        -      },
        -      "preview": {
        -        "description": "Bounded JSON preview when the full structured mirror is too large.",
        -        "type": "string"
        -      },
        -      "text": {
        -        "type": "string"
        -      },
        -      "truncated": {
        -        "description": "True when the structured mirror was bounded because the result was large.",
        -        "type": "boolean"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": true,
        -    "description": "Reveal path structured result for reveal_path. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        -    "properties": {
        -      "bytes": {
        -        "description": "Serialized structured-result size when truncation metadata is returned.",
        -        "type": "number"
        -      },
        -      "data": {
        -        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        -      },
        -      "preview": {
        -        "description": "Bounded JSON preview when the full structured mirror is too large.",
        -        "type": "string"
        -      },
        -      "text": {
        -        "type": "string"
        -      },
        -      "truncated": {
        -        "description": "True when the structured mirror was bounded because the result was large.",
        -        "type": "boolean"
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "description": "Computer snapshot structured result for computer_snapshot. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        +    "properties": {
        +      "active_window": {
        +        "additionalProperties": true,
        +        "description": "Active top-level window when known; null when accessibility state cannot be joined to top-level window enumeration.",
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "browser": {
        +        "additionalProperties": true,
        +        "description": "Optional browser DOM/CDP snapshot.",
        +        "type": "object"
        +      },
        +      "bytes": {
        +        "description": "Serialized structured-result size when truncation metadata is returned.",
        +        "type": "number"
        +      },
        +      "clipboard": {
        +        "additionalProperties": true,
        +        "description": "Clipboard metadata only unless clipboard content was explicitly requested.",
        +        "type": "object"
        +      },
        +      "cursor": {
        +        "additionalProperties": true,
        +        "description": "Pointer position when available.",
        +        "type": "object"
        +      },
        +      "data": {
        +        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        +      },
        +      "device": {
        +        "additionalProperties": true,
        +        "description": "Device/platform metadata for the captured computer state.",
        +        "type": "object"
        +      },
        +      "displays": {
        +        "description": "Display inventory used for virtual-desktop geometry.",
        +        "items": {
        +          "additionalProperties": true,
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "errors": {
        +        "description": "Non-fatal sub-capture errors.",
        +        "items": {
        +          "additionalProperties": true,
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "fallback_chain": {
        +        "additionalProperties": true,
        +        "description": "Which semantic/DOM/OCR/coordinate layers were requested and available.",
        +        "type": "object"
        +      },
        +      "ocr": {
        +        "additionalProperties": true,
        +        "description": "Optional OCR words/metadata.",
        +        "type": "object"
        +      },
        +      "preview": {
        +        "description": "Bounded JSON preview when the full structured mirror is too large.",
        +        "type": "string"
        +      },
        +      "text": {
        +        "description": "Human-readable structured mirror for text-only results.",
        +        "type": "string"
        +      },
        +      "truncated": {
        +        "description": "True when the structured mirror was bounded because the result was large.",
        +        "type": "boolean"
        +      },
        +      "ui": {
        +        "additionalProperties": true,
        +        "description": "Native accessibility snapshot and semantic tree.",
        +        "type": "object"
        +      },
        +      "windows": {
        +        "description": "Top-level windows with stable ids/PIDs/bounds when available.",
        +        "items": {
        +          "additionalProperties": true,
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "description": "Computer action structured result for computer_action. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        +    "properties": {
        +      "action": {
        +        "type": "string"
        +      },
        +      "bytes": {
        +        "description": "Serialized structured-result size when truncation metadata is returned.",
        +        "type": "number"
        +      },
        +      "capped": {
        +        "type": "boolean"
        +      },
        +      "completed": {
        +        "type": "number"
        +      },
        +      "count": {
        +        "type": "number"
        +      },
        +      "data": {
        +        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        +      },
        +      "ok": {
        +        "type": "boolean"
        +      },
        +      "preview": {
        +        "description": "Bounded JSON preview when the full structured mirror is too large.",
        +        "type": "string"
        +      },
        +      "results": {
        +        "items": {
        +          "additionalProperties": true,
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "stopped_at": {
        +        "type": "number"
        +      },
        +      "text": {
        +        "description": "Human-readable structured mirror for text-only results.",
        +        "type": "string"
        +      },
        +      "truncated": {
        +        "description": "True when the structured mirror was bounded because the result was large.",
        +        "type": "boolean"
        +      },
        +      "waited_ms": {
        +        "type": "number"
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedmanage_documents3 fields changed
      • changedInput schema / allOf
        Previous value: -[
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "read_document"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "max_cells": {
        -              "description": "Maximum number of spreadsheet cells to return.",
        -              "type": "number"
        -            },
        -            "path": {
        -              "description": "Document path.",
        -              "type": "string"
        -            },
        -            "sheet": {
        -              "description": "Worksheet name for XLSX.",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "path"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "edit_spreadsheet"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "create": {
        -              "description": "Create a new XLSX at path. Fails if path already exists; do not combine with output.",
        -              "type": "boolean"
        -            },
        -            "edits": {
        -              "description": "Bounded list of spreadsheet edits; each item names a cell/range and the value(s) or formula to write.",
        -              "items": {
        -                "additionalProperties": false,
        -                "properties": {
        -                  "cell": {
        -                    "description": "Single A1 cell reference.",
        -                    "type": "string"
        -                  },
        -                  "formula": {
        -                    "description": "Optional formula; for a range it is written to each expanded cell.",
        -                    "type": "string"
        -                  },
        -                  "range": {
        -                    "description": "Rectangular range such as A1:C3.",
        -                    "type": "string"
        -                  },
        -                  "value": {
        -                    "description": "Scalar value for one cell or to fill a range."
        -                  },
        -                  "values": {
        -                    "description": "2D matrix matching the range dimensions.",
        -                    "items": {
        -                      "items": {},
        -                      "type": "array"
        -                    },
        -                    "type": "array"
        -                  }
        -                },
        -                "type": "object"
        -              },
        -              "maxItems": 500,
        -              "type": "array"
        -            },
        -            "output": {
        -              "description": "Optional output .xlsx when editing an existing workbook; defaults to replacing input.",
        -              "type": "string"
        -            },
        -            "path": {
        -              "description": "Existing .xlsx path, or the new workbook destination when create=true.",
        -              "type": "string"
        -            },
        -            "sheet": {
        -              "description": "Worksheet name. For create=true, defaults to Sheet1 and becomes the new workbook sheet name.",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "path",
        -            "edits"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "edit_document"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "create": {
        -              "description": "Create a new DOCX at path. Fails if path already exists; do not combine with output.",
        -              "type": "boolean"
        -            },
        -            "operations": {
        -              "description": "Bounded list of structured document operations executed in order.",
        -              "items": {
        -                "additionalProperties": false,
        -                "properties": {
        -                  "action": {
        -                    "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        -                    "enum": [
        -                      "replace",
        -                      "append_paragraph",
        -                      "prepend_paragraph",
        -                      "insert_paragraph_before",
        -                      "insert_paragraph_after",
        -                      "delete_paragraph"
        -                    ],
        -                    "type": "string"
        -                  },
        -                  "all": {
        -                    "description": "Apply to all matching paragraphs; default true.",
        -                    "type": "boolean"
        -                  },
        -                  "replacement": {
        -                    "description": "Replacement text for matching document content.",
        -                    "type": "string"
        -                  },
        -                  "search": {
        -                    "description": "Paragraph text substring for replace/insert/delete operations.",
        -                    "type": "string"
        -                  },
        -                  "text": {
        -                    "description": "Paragraph text to append/prepend/insert.",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ],
        -                "type": "object"
        -              },
        -              "maxItems": 100,
        -              "type": "array"
        -            },
        -            "output": {
        -              "description": "Optional output .docx path when editing an existing document.",
        -              "type": "string"
        -            },
        -            "path": {
        -              "description": "Existing .docx path, or the new document destination when create=true.",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "path",
        -            "operations"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "pdf_action"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "enum": [
        -                      "annotations",
        -                      "info",
        -                      "split",
        -                      "extract_pages"
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "path"
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "merge"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "paths",
        -                  "output"
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "extract_pages"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "pages",
        -                  "output"
        -                ]
        -              }
        -            }
        -          ],
        -          "properties": {
        -            "action": {
        -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        -              "enum": [
        -                "merge",
        -                "split",
        -                "extract_pages",
        -                "annotations",
        -                "info"
        -              ],
        -              "type": "string"
        -            },
        -            "output": {
        -              "description": "Optional permitted output path; when omitted the tool may update the input according to its action.",
        -              "type": "string"
        -            },
        -            "output_dir": {
        -              "description": "Permitted directory for generated output files.",
        -              "type": "string"
        -            },
        -            "pages": {
        -              "description": "Page list/ranges such as 1-3,5.",
        -              "type": "string"
        -            },
        -            "path": {
        -              "description": "Permitted local filesystem path.",
        -              "type": "string"
        -            },
        -            "paths": {
        -              "description": "List of permitted local filesystem paths.",
        -              "items": {
        -                "type": "string"
        -              },
        -              "maxItems": 100,
        -              "minItems": 2,
        -              "type": "array"
        -            },
        -            "pattern": {
        -              "description": "Output filename pattern where supported.",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "action"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  }
        -]New value: +[
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "read_document"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "max_cells": {
        +              "description": "Maximum number of spreadsheet cells to return.",
        +              "type": "number"
        +            },
        +            "path": {
        +              "description": "Document path.",
        +              "type": "string"
        +            },
        +            "sheet": {
        +              "description": "Worksheet name for XLSX.",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "path"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "pdf_action"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "enum": [
        +                      "annotations",
        +                      "info",
        +                      "split",
        +                      "extract_pages"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "path"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "merge"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "paths",
        +                  "output"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "extract_pages"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "pages",
        +                  "output"
        +                ]
        +              }
        +            }
        +          ],
        +          "properties": {
        +            "action": {
        +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        +              "enum": [
        +                "merge",
        +                "split",
        +                "extract_pages",
        +                "annotations",
        +                "info"
        +              ],
        +              "type": "string"
        +            },
        +            "output": {
        +              "description": "Optional permitted output path; when omitted the tool may update the input according to its action.",
        +              "type": "string"
        +            },
        +            "output_dir": {
        +              "description": "Permitted directory for generated output files.",
        +              "type": "string"
        +            },
        +            "pages": {
        +              "description": "Page list/ranges such as 1-3,5.",
        +              "type": "string"
        +            },
        +            "path": {
        +              "description": "Permitted local filesystem path.",
        +              "type": "string"
        +            },
        +            "paths": {
        +              "description": "List of permitted local filesystem paths.",
        +              "items": {
        +                "type": "string"
        +              },
        +              "maxItems": 100,
        +              "minItems": 2,
        +              "type": "array"
        +            },
        +            "pattern": {
        +              "description": "Output filename pattern where supported.",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "action"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  }
        +]
      • changedInput schema / properties / operation / enum
        Previous value: -[
        -  "read_document",
        -  "edit_spreadsheet",
        -  "edit_document",
        -  "pdf_action"
        -]New value: +[
        +  "read_document",
        +  "pdf_action"
        +]
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": true,
        -    "description": "Read document structured result for read_document. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        -    "properties": {
        -      "bytes": {
        -        "description": "Serialized structured-result size when truncation metadata is returned.",
        -        "type": "number"
        -      },
        -      "cells": {
        -        "items": {},
        -        "type": "array"
        -      },
        -      "data": {},
        -      "path": {
        -        "type": "string"
        -      },
        -      "preview": {
        -        "description": "Bounded JSON preview when the full structured mirror is too large.",
        -        "type": "string"
        -      },
        -      "rows": {
        -        "items": {},
        -        "type": "array"
        -      },
        -      "sheet": {
        -        "type": "string"
        -      },
        -      "sheets": {
        -        "items": {
        -          "additionalProperties": true,
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "text": {
        -        "type": "string"
        -      },
        -      "truncated": {
        -        "description": "True when the structured mirror was bounded because the result was large.",
        -        "type": "boolean"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": true,
        -    "description": "Edit spreadsheet structured result for edit_spreadsheet. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        -    "properties": {
        -      "bytes": {
        -        "description": "Serialized structured-result size when truncation metadata is returned.",
        -        "type": "number"
        -      },
        -      "created": {
        -        "type": "boolean"
        -      },
        -      "data": {
        -        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        -      },
        -      "edited_cells": {
        -        "type": "number"
        -      },
        -      "path": {
        -        "type": "string"
        -      },
        -      "preview": {
        -        "description": "Bounded JSON preview when the full structured mirror is too large.",
        -        "type": "string"
        -      },
        -      "sheet": {
        -        "type": "string"
        -      },
        -      "text": {
        -        "description": "Human-readable structured mirror for text-only results.",
        -        "type": "string"
        -      },
        -      "truncated": {
        -        "description": "True when the structured mirror was bounded because the result was large.",
        -        "type": "boolean"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": true,
        -    "description": "Edit DOCX document structured result for edit_document. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        -    "properties": {
        -      "bytes": {
        -        "description": "Serialized structured-result size when truncation metadata is returned.",
        -        "type": "number"
        -      },
        -      "changes": {
        -        "type": "number"
        -      },
        -      "created": {
        -        "type": "boolean"
        -      },
        -      "data": {
        -        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        -      },
        -      "operations": {
        -        "type": "number"
        -      },
        -      "path": {
        -        "type": "string"
        -      },
        -      "preview": {
        -        "description": "Bounded JSON preview when the full structured mirror is too large.",
        -        "type": "string"
        -      },
        -      "text": {
        -        "description": "Human-readable structured mirror for text-only results.",
        -        "type": "string"
        -      },
        -      "truncated": {
        -        "description": "True when the structured mirror was bounded because the result was large.",
        -        "type": "boolean"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": true,
        -    "description": "PDF action structured result for pdf_action. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        -    "properties": {
        -      "action": {
        -        "type": "string"
        -      },
        -      "annotation_count": {
        -        "description": "Number of PDF annotations found by the info action.",
        -        "type": "number"
        -      },
        -      "annotations": {
        -        "items": {
        -          "additionalProperties": true,
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "bytes": {
        -        "description": "Serialized structured-result size when truncation metadata is returned.",
        -        "type": "number"
        -      },
        -      "data": {
        -        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        -      },
        -      "files": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "inputs": {
        -        "type": "number"
        -      },
        -      "output": {
        -        "type": "string"
        -      },
        -      "output_dir": {
        -        "type": "string"
        -      },
        -      "pages": {
        -        "type": "string"
        -      },
        -      "path": {
        -        "type": "string"
        -      },
        -      "preview": {
        -        "description": "Bounded JSON preview when the full structured mirror is too large.",
        -        "type": "string"
        -      },
        -      "source": {
        -        "type": "string"
        -      },
        -      "text": {
        -        "description": "Human-readable structured mirror for text-only results.",
        -        "type": "string"
        -      },
        -      "truncated": {
        -        "description": "True when the structured mirror was bounded because the result was large.",
        -        "type": "boolean"
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": true,
        +    "description": "Read document structured result for read_document. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        +    "properties": {
        +      "bytes": {
        +        "description": "Serialized structured-result size when truncation metadata is returned.",
        +        "type": "number"
        +      },
        +      "cells": {
        +        "items": {},
        +        "type": "array"
        +      },
        +      "data": {},
        +      "path": {
        +        "type": "string"
        +      },
        +      "preview": {
        +        "description": "Bounded JSON preview when the full structured mirror is too large.",
        +        "type": "string"
        +      },
        +      "rows": {
        +        "items": {},
        +        "type": "array"
        +      },
        +      "sheet": {
        +        "type": "string"
        +      },
        +      "sheets": {
        +        "items": {
        +          "additionalProperties": true,
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "text": {
        +        "type": "string"
        +      },
        +      "truncated": {
        +        "description": "True when the structured mirror was bounded because the result was large.",
        +        "type": "boolean"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "description": "PDF action structured result for pdf_action. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        +    "properties": {
        +      "action": {
        +        "type": "string"
        +      },
        +      "annotation_count": {
        +        "description": "Number of PDF annotations found by the info action.",
        +        "type": "number"
        +      },
        +      "annotations": {
        +        "items": {
        +          "additionalProperties": true,
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "bytes": {
        +        "description": "Serialized structured-result size when truncation metadata is returned.",
        +        "type": "number"
        +      },
        +      "data": {
        +        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        +      },
        +      "files": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "inputs": {
        +        "type": "number"
        +      },
        +      "output": {
        +        "type": "string"
        +      },
        +      "output_dir": {
        +        "type": "string"
        +      },
        +      "pages": {
        +        "type": "string"
        +      },
        +      "path": {
        +        "type": "string"
        +      },
        +      "preview": {
        +        "description": "Bounded JSON preview when the full structured mirror is too large.",
        +        "type": "string"
        +      },
        +      "source": {
        +        "type": "string"
        +      },
        +      "text": {
        +        "description": "Human-readable structured mirror for text-only results.",
        +        "type": "string"
        +      },
        +      "truncated": {
        +        "description": "True when the structured mirror was bounded because the result was large.",
        +        "type": "boolean"
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedmanage_system1 field changed
      • changedOutput schema / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "text": {
        -        "description": "Human-readable result of the tool call.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "text"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": true,
        -    "description": "Network diagnostics structured result for network. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        -    "properties": {
        -      "bytes": {
        -        "description": "Serialized structured-result size when truncation metadata is returned.",
        -        "type": "number"
        -      },
        -      "data": {
        -        "items": {
        -          "additionalProperties": true,
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "dns": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "host": {
        -        "type": "string"
        -      },
        -      "hostname": {
        -        "type": "string"
        -      },
        -      "interfaces": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "latency_ms": {
        -        "type": "number"
        -      },
        -      "ok": {
        -        "type": "boolean"
        -      },
        -      "port": {
        -        "type": "number"
        -      },
        -      "preview": {
        -        "description": "Bounded JSON preview when the full structured mirror is too large.",
        -        "type": "string"
        -      },
        -      "servers": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "text": {
        -        "description": "Human-readable structured mirror for text-only results.",
        -        "type": "string"
        -      },
        -      "truncated": {
        -        "description": "True when the structured mirror was bounded because the result was large.",
        -        "type": "boolean"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": true,
        -    "description": "Installed applications structured result for installed_apps. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        -    "properties": {
        -      "bytes": {
        -        "description": "Serialized structured-result size when truncation metadata is returned.",
        -        "type": "number"
        -      },
        -      "data": {
        -        "items": {
        -          "additionalProperties": true,
        -          "description": "Installed app/package with name/version/path where available.",
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "preview": {
        -        "description": "Bounded JSON preview when the full structured mirror is too large.",
        -        "type": "string"
        -      },
        -      "text": {
        -        "description": "Human-readable structured mirror for text-only results.",
        -        "type": "string"
        -      },
        -      "truncated": {
        -        "description": "True when the structured mirror was bounded because the result was large.",
        -        "type": "boolean"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": true,
        -    "description": "Runtime environment structured result for environment. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        -    "properties": {
        -      "arch": {
        -        "type": "string"
        -      },
        -      "bytes": {
        -        "description": "Serialized structured-result size when truncation metadata is returned.",
        -        "type": "number"
        -      },
        -      "data": {
        -        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        -      },
        -      "env": {
        -        "additionalProperties": true,
        -        "type": "object"
        -      },
        -      "hostname": {
        -        "type": "string"
        -      },
        -      "node": {
        -        "type": "string"
        -      },
        -      "path": {
        -        "type": "string"
        -      },
        -      "platform": {
        -        "type": "string"
        -      },
        -      "preview": {
        -        "description": "Bounded JSON preview when the full structured mirror is too large.",
        -        "type": "string"
        -      },
        -      "release": {
        -        "type": "string"
        -      },
        -      "shell": {
        -        "type": "string"
        -      },
        -      "text": {
        -        "description": "Human-readable structured mirror for text-only results.",
        -        "type": "string"
        -      },
        -      "truncated": {
        -        "description": "True when the structured mirror was bounded because the result was large.",
        -        "type": "boolean"
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "text": {
        +        "description": "Human-readable result of the tool call.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "text"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "description": "Network diagnostics structured result for network. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        +    "properties": {
        +      "address_count": {
        +        "type": "number"
        +      },
        +      "address_count_returned": {
        +        "type": "number"
        +      },
        +      "addresses_truncated": {
        +        "type": "boolean"
        +      },
        +      "bytes": {
        +        "description": "Serialized structured-result size when truncation metadata is returned.",
        +        "type": "number"
        +      },
        +      "data": {
        +        "items": {
        +          "additionalProperties": true,
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "dns": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "host": {
        +        "type": "string"
        +      },
        +      "hostname": {
        +        "type": "string"
        +      },
        +      "interface_count": {
        +        "type": "number"
        +      },
        +      "interface_count_returned": {
        +        "type": "number"
        +      },
        +      "interfaces": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "interfaces_truncated": {
        +        "type": "boolean"
        +      },
        +      "latency_ms": {
        +        "type": "number"
        +      },
        +      "ok": {
        +        "type": "boolean"
        +      },
        +      "port": {
        +        "type": "number"
        +      },
        +      "preview": {
        +        "description": "Bounded JSON preview when the full structured mirror is too large.",
        +        "type": "string"
        +      },
        +      "servers": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "text": {
        +        "description": "Human-readable structured mirror for text-only results.",
        +        "type": "string"
        +      },
        +      "truncated": {
        +        "description": "True when the structured mirror was bounded because the result was large.",
        +        "type": "boolean"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "description": "Installed applications structured result for installed_apps. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        +    "properties": {
        +      "bytes": {
        +        "description": "Serialized structured-result size when truncation metadata is returned.",
        +        "type": "number"
        +      },
        +      "data": {
        +        "items": {
        +          "additionalProperties": true,
        +          "description": "Installed app/package with name/version/path where available.",
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "preview": {
        +        "description": "Bounded JSON preview when the full structured mirror is too large.",
        +        "type": "string"
        +      },
        +      "text": {
        +        "description": "Human-readable structured mirror for text-only results.",
        +        "type": "string"
        +      },
        +      "truncated": {
        +        "description": "True when the structured mirror was bounded because the result was large.",
        +        "type": "boolean"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "description": "Runtime environment structured result for environment. Stable fields are declared explicitly; platform-specific fields may be added. Large results may return truncated/bytes/preview instead of the full payload.",
        +    "properties": {
        +      "arch": {
        +        "type": "string"
        +      },
        +      "bytes": {
        +        "description": "Serialized structured-result size when truncation metadata is returned.",
        +        "type": "number"
        +      },
        +      "data": {
        +        "description": "Array/scalar payload wrapper used when the natural result is not an object."
        +      },
        +      "env": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "hostname": {
        +        "type": "string"
        +      },
        +      "node": {
        +        "type": "string"
        +      },
        +      "path": {
        +        "type": "string"
        +      },
        +      "platform": {
        +        "type": "string"
        +      },
        +      "preview": {
        +        "description": "Bounded JSON preview when the full structured mirror is too large.",
        +        "type": "string"
        +      },
        +      "release": {
        +        "type": "string"
        +      },
        +      "shell": {
        +        "type": "string"
        +      },
        +      "text": {
        +        "description": "Human-readable structured mirror for text-only results.",
        +        "type": "string"
        +      },
        +      "truncated": {
        +        "description": "True when the structured mirror was bounded because the result was large.",
        +        "type": "boolean"
        +      }
        +    },
        +    "type": "object"
        +  }
        +]

TDQS

A4/5.0

Scored across 7 tools

Disambiguation4/5

Each tool description explicitly routes away from its nearest neighbors (read_file vs manage_documents, view_image vs control_computer, run_terminal vs manage_system), which is unusually good. However, real overlaps remain: read_file admits it still does 'legacy .docx/.pdf extraction', manage_files has read/search operations, and control_computer's screen recording overlaps view_image's capture, so an agent can still misselect in those seams.

Naming Consistency4/5

All names are snake_case verb_noun and readable, but the verb set is mixed (manage_*, run_, control_, read_, view_), giving four different verb families across seven tools. The three manage_* siblings form a clean group while the remaining four each use a different verb, a minor inconsistency rather than a real problem.

Tool Count5/5

Seven tools is well within the ideal range and each maps to a coherent capability domain (terminal, OS, GUI, documents, files, text, pixels). The multi-operation design is deliberate, with each tool exposing a closed operation schema rather than spawning dozens of narrow tools.

Completeness4/5

The surface covers shell, system/runtime, desktop GUI, office documents, filesystem, plain text, and pixels — essentially the full native-computer-control lifecycle, including writes, edits, and captures. Minor gaps remain: no explicit HTTP/web or network fetch capability, and image writing/encoding beyond capture is not evident.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables an MCP client to safely access selected local files and trusted executables with policy control, audit, and rollback via a Windows control center.
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables MCP clients to connect to a local workspace over a public tunnel and lets them run shell commands and transfer files bidirectionally.
    262 npm
    20
    GPL 3.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables remote MCP clients to access local MCP servers and command-line tools over the web, with user approval required for every connection.
    1
    MIT