Skip to main content
Glama

Server Details

Securely control computers you explicitly pair through files, terminals, processes, screenshots, desktop UI/input, clipboard, browser automation, diagnostics, and document tools.

Ownership verified
Status
Healthy
Uptime
87.6% over 22 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP ยท MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 10 tools

Disambiguation4/5

Descriptions aggressively cross-reference each other, making boundaries mostly clear (control_browser vs control_computer, read_file vs manage_documents/manage_files, run_terminal vs manage_system). However, there is residual overlap since control_computer's semantic inspection and view_image's pixels, and manage_files writes vs read_file, can still be confused by an agent in edge cases.

Naming Consistency5/5

All tools follow a strict verb_noun snake_case pattern (control_browser, manage_files, list_devices, run_terminal, view_image, read_file). Verbs vary appropriately by action (control, manage, list, read, run, view) while the resource-oriented suffix stays predictable.

Tool Count5/5

Ten tools is a well-scoped set for a remote-computer-control server, with each tool mapping to a distinct resource domain (browser, desktop, devices, account, documents, files, system, terminal, images, text). No tool appears redundant or trivially padded.

Completeness4/5

Coverage is broad: device discovery, account/pairing management, file/document/system control, terminal, browser and desktop action, plus image reading. Minor gaps exist around a dedicated file-write tool (folded into manage_files) and no explicit document-creation tool, but core lifecycle operations are present.

Available Tools

10 tools
control_browserControl browserA
Destructive
Inspect

Use this when the target is a debuggable Chromium page and the task needs tabs, navigation, DOM/accessibility inspection, element search/actions, waits, or explicit JavaScript evaluation. Snapshot, find, and wait operations observe page state; navigation, clicks, typing, uploads, and JavaScript evaluation can change page or remote-site state. Choose one operation and pass only its validated parameters. Use control_computer for browser chrome or other native desktop/non-CDP applications.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceYesReMCP device id returned by list_devices.
operationYesConcrete runtime operation to perform inside this domain.
parametersNoArguments for the selected operation. The selected operation keeps its original closed input schema.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOptional structured result data for follow-up reasoning and tool calls.
textYesConcise human-readable result of the tool call.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations are blunt (destructiveHint=true for the whole tool), but the description adds per-operation nuance the annotations cannot: snapshot/find/wait observe, while navigation, clicks, typing, uploads and JS evaluation can change page or remote-site state. It also warns to pass only one operation's validated parameters. It does not cover permissions or rate limits, but the safety-relevant split is genuinely useful.

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 earning its place: selection criteria first, behavioral split second, sibling routing last. No filler and the most decision-relevant content is front-loaded.

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

Completeness4/5

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

For a 7-operation umbrella tool with nested conditional schemas and an output schema, the description supplies enough to pick the right operation and understand what each class of operation does to state. It does not itself enumerate the operation enum or per-operation argument shape, but the schema and output schema carry that load.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every field, including enum values and aliases. The description only adds the rule 'choose one operation and pass only its validated parameters,' which is structurally useful but not parameter-level semantics. Baseline 3 applies.

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

Purpose5/5

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

Names a specific verb+resource (control a debuggable Chromium page) and enumerates the capability surface (tabs, navigation, DOM/accessibility inspection, element search/actions, waits, JS evaluation). It explicitly contrasts itself with control_computer, so an agent can route without opening either schema.

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?

States the precondition ('target is a debuggable Chromium page') and the task shape that selects it, plus an explicit exclusion: use control_computer for browser chrome or native desktop/non-CDP applications. When/when-not are both covered.

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

control_computerControl computerA
Destructive
Inspect

Use this when the task needs semantic inspection or control of native desktop applications: snapshots, windows, accessibility/UI elements, waits, displays, app launch, text/input, clipboard, open/reveal, notifications, or short screen recording. Semantic snapshot/find/wait operations observe state, while clicks, typing, window close, app launch, clipboard writes, and recording can change application or local state. Prefer semantic inspection/actions before raw coordinates; use view_image only when pixels are required and control_browser for page DOM/CDP actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceYesReMCP device id returned by list_devices.
operationYesConcrete runtime operation to perform inside this domain.
parametersNoArguments for the selected operation. The selected operation keeps its original closed input schema.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOptional structured result data for follow-up reasoning and tool calls.
textYesConcise human-readable result of the tool call.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only declare a blanket destructiveHint=true and openWorldHint=true; the description adds granular value by splitting observing operations (snapshot/find/wait) from state-changing ones (clicks, typing, window close, app launch, clipboard writes, recording), which tells the agent precisely which invocations carry side effects. It does not cover auth/consent requirements (e.g. Wayland portal consent, which the schema mentions), so it stops short of 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 dense sentences, front-loaded with the scope, then the read/write split, then the sibling routing. Every sentence earns its place, though the enumeration in sentence one is long for a 20-operation catch-all tool and could be tighter.

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

Completeness4/5

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

With an output schema present and 100% schema coverage for a 20-operation tool, the description supplies what structured fields cannot: the domain boundary, the mutation split, and sibling routing. It omits nothing critical, though it does not hint at operation-level prerequisites like portal consent or backend selection.

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

Parameters3/5

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

Schema description coverage is 100% and the schema carries per-operation parameter definitions, so the description does not need to restate parameter semantics. It adds no syntax or format detail beyond the schema, making the baseline 3 appropriate.

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

Purpose5/5

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

States a specific verb+resource domain (semantic inspection/control of native desktop applications) and enumerates the operation families it covers (snapshots, windows, accessibility, waits, displays, launch, input, clipboard, open/reveal, notifications, recording). It also explicitly distinguishes itself from sibling tools view_image and control_browser, so an agent can route without opening schemas.

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?

Gives explicit selection rules: prefer semantic inspection/actions before raw coordinates, use view_image only when pixels are required, and use control_browser for page DOM/CDP work. These are concrete when-to-use and when-to-use-something-else statements naming the alternatives.

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

list_devicesList ReMCP devicesA
Read-onlyIdempotent
Inspect

Use this when the target computer is not already unambiguous. Call it first to list computers paired to the signed-in ReMCP account and see which ones are online.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
textYesConcise human-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 cover read-only, idempotent, and non-destructive behavior. The description adds important context beyond that by specifying the scope ('paired to the signed-in ReMCP account') and the information returned (online status). This implies authentication requirements and that the result is account-scoped, which is useful behavioral knowledge.

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

Conciseness5/5

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

The description is two sentences with no redundancy. It front-loads the usage condition ('when the target computer is not already unambiguous') before stating the action. Every word 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?

For a simple, parameterless device-listing tool, the description is complete. It explains what it does, when to use it, and notes that it reports online status. An output schema is present, so return format details are not the description's responsibility. No critical gaps remain.

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

Parameters4/5

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

The tool has zero parameters, and the schema coverage is 100% (trivially). The description adds no parameter information because none is needed; the baseline for zero parameters is 4, and no compensation is required.

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

Purpose5/5

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

The description clearly states a specific action: 'list computers paired to the signed-in ReMCP account and see which ones are online.' It uses a specific verb (list) and resource (paired computers) and distinguishes itself from siblings by positioning as the first step to resolve ambiguity about the target computer.

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?

Explicit usage guidance is provided: 'Use this when the target computer is not already unambiguous.' It also instructs to 'Call it first,' establishing a clear precondition and order of operations. While it doesn't name alternatives, the condition is sufficient to route an agent correctly.

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

manage_accountManage ReMCP accountA
Destructive
Inspect

Use this when the task concerns the signed-in ReMCP account or paired-computer membership: inspect profile, recent calls, usage or hosted configuration; create a pairing; or ping, rename, enable, disable, or permanently remove one pairing. Use list_devices first when the target computer is ambiguous. Local runtime preferences belong to manage_system.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoUsage window for operation=usage.
nameNoNew account-visible label for operation=rename.
toolNoOptional tool filter for recent_calls or usage.
limitNoMaximum recent calls for operation=recent_calls.
deviceNoDevice id from list_devices. Required for ping/rename/enable/disable/remove; optional as a recent_calls/usage filter.
operationYesAccount or pairing operation to perform.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOptional structured result data for follow-up reasoning and tool calls.
textYesConcise human-readable result of the tool call.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=true, and the description reinforces the destructive consequence by saying pairings can be 'permanently remove[d]'. It doesn't fully detail the effects of enable/disable, but the annotation plus the explicit permanent warning cover the main safety concern.

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: when-to-use/operation scope, routing caveat, and sibling exclusion. Dense but every sentence earns its place; it avoids restating the title or schema.

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 multi-operation tool with an output schema and rich parameter schema, the description provides enough to choose and invoke the tool: scope, operation families, disambiguation, and prerequisite list_devices. No missing information is needed beyond structured fields.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents the 6 parameters and conditional requirements. The description adds high-level operation grouping and a list_devices routing hint, but no parameter-specific detail beyond what the schema's descriptions already contain.

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

Purpose5/5

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

Description anchors the tool to 'signed-in ReMCP account or paired-computer membership' and enumerates every operation family (inspect, create pairing, ping/rename/enable/disable/remove) with explicit verbs. It also distinguishes itself from manage_system, so an agent can select it among siblings.

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?

Opens with an explicit when-to-use condition and closes with an explicit exclusion ('Local runtime preferences belong to manage_system'). It directs the agent to call list_devices first when the target computer is ambiguous, providing clear decision guidance.

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 when the task is 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. Choose one operation and pass only its validated parameters. Use read_file for plain line-oriented text and control_computer only for interactive Office UI.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceYesReMCP device id returned by list_devices.
operationYesConcrete runtime operation to perform inside this domain.
parametersNoArguments for the selected operation. The selected operation keeps its original closed input schema.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOptional structured result data for follow-up reasoning and tool calls.
textYesConcise human-readable result of the tool call.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations say readOnlyHint=false and destructiveHint=true, and the description builds on this by naming exactly which operations mutate (DOCX/XLSX edits can replace input; PDF writes create/replace output) and which is safe (read_document is read-only). This is strong context beyond the annotation flags.

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

Conciseness5/5

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

Three dense sentences with no filler: purpose, mutation semantics, and routing alternatives all earn their place. Front-loaded with the primary use case.

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

Completeness5/5

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

Given the rich conditional schema, output schema, and annotations, the description covers what remains: the domain, the read-only exception, destructive defaults, and sibling routing. Nothing essential is missing for selecting and invoking the tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter. The description adds general guidance to pass only validated parameters and notes output replacement behavior, but no operation-specific parameter semantics beyond the schema.

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

Purpose5/5

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

States a specific verb and resource: structured document content spanning read/edit/merge/split/extract/inspect. Explicitly distances itself from read_file and control_computer, so an agent can distinguish it without opening the schema.

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

Usage Guidelines5/5

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

Opens with a clear when-to-use trigger ('structured document content') and closes with explicit alternatives (read_file for plain text, control_computer for interactive Office UI). Also instructs to choose one operation and pass only validated parameters.

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 one paired 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 or fail on OS permissions, while read and search operations leave files unchanged. Use read_file instead for one known text file so the native file preview remains available.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceYesReMCP device id returned by list_devices.
operationYesConcrete runtime operation to perform inside this domain.
parametersNoArguments for the selected operation. The selected operation keeps its original closed input schema.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOptional structured result data for follow-up reasoning and tool calls.
textYesConcise human-readable result of the tool call.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false and destructiveHint=true; the description adds category-level behavior beyond that: write/edit/move/permission/delete operations 'can change or remove local data or fail on OS permissions' while read and search operations 'leave files unchanged'. It also discloses the OS-permission failure mode. Consistent with the annotations โ€” no contradiction.

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

Conciseness4/5

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

Four sentences, appropriately front-loaded with scope followed by call structure, safety, and sibling routing, with every sentence earning its place for a tool of this complexity. Not a 5 because sentence 3 packs two ideas (destructive categories and safe categories) into one long compound sentence, and sentence 2 partially echoes the schema's parameters description.

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 29-operation dispatcher with a rich conditional schema, full parameter coverage, and an output schema, the description covers selection, call structure, and safety adequately. It does not mention the search-session lifecycle (start_search โ†’ get_more_search_results โ†’ stop_search) or the device parameter, though both are documented in the schema.

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

Parameters4/5

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

Schema coverage is 100% and the schema's own top-level parameters field already describes the closed per-operation schema. The description adds the genuinely useful rule that parameters must contain only the selected operation's arguments and that exactly one operation must be chosen, which clarifies the conditional dispatch pattern that the schema alone does not make obvious.

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 opens with a specific scope โ€” 'files, directories, archives, or filesystem search on one paired computer' โ€” and differentiates from the read_file sibling. It stops short of 5 because 'manage files' is an umbrella over 29 sub-operations; the concrete set of actions is delegated to the schema enum rather than stated in the description.

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?

Gives an explicit when ('task is about files, directories, archives, or filesystem search'), an explicit when-not with a named alternative ('Use read_file instead for one known text file so the native file preview remains available'), and the dispatcher instruction to choose exactly one operation whose parameters are validated against its closed schema. Nothing is left to inference.

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 when the task concerns 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, runtime preference changes, service/audio changes, restart, and shutdown can interrupt work or change the machine. Choose one operation and pass only its validated parameters. Use run_terminal for general shell commands and ReMCP terminal sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceYesReMCP device id returned by list_devices.
operationYesConcrete runtime operation to perform inside this domain.
parametersNoArguments for the selected operation. The selected operation keeps its original closed input schema.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOptional structured result data for follow-up reasoning and tool calls.
textYesConcise human-readable result of the tool call.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false for the tool as a whole, so the description's real contribution is partitioning the 13 operations into observe-only (facts, logs, inventory) versus state-changing/interrupting (kill_process, config changes, service/audio changes, restart, shutdown). That per-operation nuance is genuinely beyond the coarse annotations, though it stops short of permissions, failure modes, or reversibility detail.

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?

Four sentences, front-loaded with scope, then read/write classification, then invocation rule, then the sibling route. The long enumeration of domains is dense but each item maps to a real operation, so little is wasted.

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

Completeness4/5

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

For a 13-operation dispatcher with an output schema present (so returns need not be explained here), the description supplies scope, safety partitioning, invocation rule, and sibling routing. It is nearly complete; the only gap is any per-operation failure or privilege context the agent might want before destructive calls.

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

Parameters3/5

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

Schema description coverage is 100% and every operation's nested parameters are documented inline, so the schema carries the parameter burden. The description only adds the dispatcher rule ('choose one operation and pass only its validated parameters'), which largely restates what the if/then allOf and additionalProperties:false already encode. Baseline 3 is correct.

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 names a specific domain (operating-system and ReMCP runtime state) and enumerates the operation families it covers: system/runtime/process facts, preferences, services, event logs, networking, apps, environment, audio, power. An agent can immediately tell this is the system-domain dispatcher rather than a sibling like run_terminal or manage_files.

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?

It gives explicit when-to-use guidance (task concerns OS/runtime state), tells the agent how to invoke it (choose exactly one operation, pass only that operation's validated parameters), and names the alternative with its condition: 'Use run_terminal for general shell commands and ReMCP terminal sessions.' That is a full routing rule, not a hint.

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

Use this when the task calls for plain text files on a paired computer: source code, configuration, Markdown, logs, scripts, or other line-oriented text. Use read_document instead for PDF, DOCX, XLSX and other structured document content. read_file keeps legacy PDF/DOCX extraction for compatibility but should not be the modelโ€™s first choice for those formats.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path of the file to read. Relative paths resolve against the runtime working directory.
deviceYesReMCP device id returned by list_devices. Required for every device operation.
lengthNoMaximum number of lines to return.
offsetNoZero-based first line to read. Negative values read the last N lines.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOptional structured result data for follow-up reasoning and tool calls.
textYesConcise human-readable result of the tool call.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description's burden is lower. It adds meaningful behavioral context by disclosing legacy PDF/DOCX extraction compatibility and counseling against it, which is not captured by annotations.

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

Conciseness5/5

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

Three sentences with each earning its place: the primary use case, the alternative for structured documents, and a compatibility caveat. No redundant or filler content is present.

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

Completeness5/5

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

Given a complete parameter schema, annotations, and an output schema, the description fully covers what an agent needs to decide when to call this tool and what to expect. It addresses format scope, exclusions, and legacy behavior without over-explaining.

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

Parameters3/5

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

Input schema description coverage is 100%, so parameters are fully documented there. The description does not add semantic detail about path/device/length/offset beyond the schema, making the baseline score of 3 appropriate.

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

Purpose5/5

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

Description clearly identifies the tool as reading plain text files on a paired computer and enumerates concrete example formats (source code, config, Markdown, logs, scripts). It explicitly contrasts with read_document for structured document formats, which distinguishes scope even if read_document is not among the listed siblings.

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 when-to-use guidance for plain text files and directs model to read_document for PDF/DOCX/XLSX. Also warns that legacy PDF/DOCX extraction is supported but not the first choice, leaving no ambiguity about selection.

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. Use manage_system for OS-wide process inventory or killing an arbitrary PID.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceYesReMCP device id returned by list_devices.
operationYesConcrete runtime operation to perform inside this domain.
parametersNoArguments for the selected operation. The selected operation keeps its original closed input schema.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOptional structured result data for follow-up reasoning and tool calls.
textYesConcise human-readable result of the tool call.

TDQS

A4.7/5.0
Behavior5/5

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

While annotations already mark destructiveHint=true, the description adds crucial nuance: starting or interacting can change local or external state, force termination can lose unsaved work, and reading/waiting/listing are non-mutating. This goes beyond the annotation flags and helps the agent weigh side effects before invoking.

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 deliver usage context, operation enumeration, safety behavior, and an explicit sibling alternative with zero filler. Key guidance is front-loaded and 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?

For a high-complexity multi-operation tool with nested conditional schemas, the description covers when to use it, how to choose an operation, side-effect risks, non-mutating alternatives, and the main sibling distinction. An output schema exists, so return-value documentation is not needed here.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter and operation-specific constraint. The description's note that parameters are validated against the selected operation's closed schema is useful but does not add parameter-level semantic detail beyond what the schema provides.

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

Purpose5/5

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

The description states a concrete resource (shell commands / ReMCP terminal sessions) and enumerates the specific operations: start, read, wait, interact, stop, or list sessions. It also distinguishes itself from manage_system, so an agent can select it without opening the schema.

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

Usage Guidelines5/5

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

It explicitly says when to use the tool ('when the task needs a shell command or an existing ReMCP terminal session') and when not to, by directing OS-wide process inventory or arbitrary-PID killing to manage_system. It also provides operation-level guidance, such as which operations mutate state and which do not.

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 a paired computer: read an existing image, capture the desktop, or capture one window, monitor, or region. These operations return pixels without interacting with the visible UI; use control_computer or control_browser instead when semantic structure or an action is enough.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceYesReMCP device id returned by list_devices.
operationYesConcrete runtime operation to perform inside this domain.
parametersNoArguments for the selected operation. The selected operation keeps its original closed input schema.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNoOptional structured result data for follow-up reasoning and tool calls.
textYesConcise human-readable result of the tool call.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations are all false, providing no safety profile, so the description carries the burden. It discloses a key behavior: operations return pixels without interacting with the visible UI. It does not mention that take_screenshot writes a temporary PNG and deletes it unless keep=true, but that is documented in the schema's parameter description and the description is not misleading.

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 core purpose and scoping, then the alternative routing. Every word earns its place; there is no filler. The structure makes the decision point immediately clear.

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 tool with three operation branches and many selectors, the description covers the primary decision (pixels vs. semantics/action) and names the operation families. An output schema exists, so return values don't need explanation. It doesn't enumerate all parameters, but the schema does, and the description is sufficient for correct invocation.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description maps operations to pixel outputs but adds no details about parameters such as path, keep, directory, or the screenshot_region selectors. The schema already documents all parameters thoroughly, so the description adds little beyond operation-level context.

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

Purpose5/5

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

The description states a specific verb+resource: returns pixels by reading an image or capturing the desktop, window, monitor, or region. It explicitly distinguishes from control_computer and control_browser, which handle semantic structure or actions. The three operations are clearly implied and the intent is unambiguous.

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

Usage Guidelines5/5

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

It explicitly states when to use the tool: 'when the result must be pixels from a paired computer.' It names the alternatives (control_computer, control_browser) and the exact condition under which they should be used instead. This leaves no ambiguity about tool selection.

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

Tool Schema Changelog

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

  1. 1 tool update
    • Changedmanage_system1 field changed
      • changedInput schema / allOf
        Previous value: -[
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "get_system_info"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {},
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "list_processes"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "limit": {
        -              "description": "Maximum number of processes to return. Default 100, maximum 1000.",
        -              "type": "number"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "kill_process"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "pid": {
        -              "description": "Process id to terminate.",
        -              "type": "number"
        -            }
        -          },
        -          "required": [
        -            "pid"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "get_runtime_info"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {},
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "get_runtime_stats"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {},
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "set_config_value"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "key": {
        -              "description": "telemetryEnabled (true/false), maxReadLines, maxBufferedLines or maxOutputBytes.",
        -              "type": "string"
        -            },
        -            "value": {
        -              "description": "New value: a boolean for telemetryEnabled, a number for the limits."
        -            }
        -          },
        -          "required": [
        -            "key",
        -            "value"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "service"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "enum": [
        -                      "status",
        -                      "start",
        -                      "stop",
        -                      "restart"
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "name"
        -                ]
        -              }
        -            }
        -          ],
        -          "properties": {
        -            "action": {
        -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        -              "enum": [
        -                "list",
        -                "status",
        -                "start",
        -                "stop",
        -                "restart"
        -              ],
        -              "type": "string"
        -            },
        -            "name": {
        -              "description": "Service/unit/launchd label.",
        -              "type": "string"
        -            },
        -            "scope": {
        -              "description": "Scope of the operation; choose user scope unless the task explicitly requires a system service.",
        -              "enum": [
        -                "user",
        -                "system"
        -              ],
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "action"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "event_log"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "filter": {
        -              "description": "Optional bounded filter expression or text used to reduce returned results.",
        -              "type": "string"
        -            },
        -            "limit": {
        -              "description": "Maximum number of results to return.",
        -              "type": "number"
        -            },
        -            "log": {
        -              "description": "Windows log name.",
        -              "type": "string"
        -            },
        -            "query": {
        -              "description": "Optional platform-specific query used to reduce returned log results.",
        -              "type": "string"
        -            },
        -            "since": {
        -              "description": "Time window such as 30s, 10m, 2h, or 1d.",
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "network"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "test"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "host",
        -                  "port"
        -                ]
        -              }
        -            }
        -          ],
        -          "properties": {
        -            "action": {
        -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        -              "enum": [
        -                "summary",
        -                "interfaces",
        -                "dns",
        -                "routes",
        -                "listeners",
        -                "test"
        -              ],
        -              "type": "string"
        -            },
        -            "host": {
        -              "description": "Host name or IP address for a bounded connectivity test.",
        -              "type": "string"
        -            },
        -            "port": {
        -              "description": "TCP port number for a connectivity test.",
        -              "type": "number"
        -            },
        -            "timeout_ms": {
        -              "description": "Bounded timeout in milliseconds.",
        -              "type": "number"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "installed_apps"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "filter": {
        -              "description": "Name substring.",
        -              "type": "string"
        -            },
        -            "limit": {
        -              "description": "Maximum results; default 1000.",
        -              "type": "number"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "environment"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "include_env": {
        -              "description": "Include sanitized environment variables; default false.",
        -              "type": "boolean"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "audio"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "set_volume"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "volume"
        -                ]
        -              }
        -            }
        -          ],
        -          "properties": {
        -            "action": {
        -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        -              "enum": [
        -                "status",
        -                "set_volume",
        -                "mute",
        -                "unmute"
        -              ],
        -              "type": "string"
        -            },
        -            "volume": {
        -              "description": "0..100 for set_volume.",
        -              "type": "number"
        -            }
        -          },
        -          "required": [
        -            "action"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "power_action"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "action": {
        -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        -              "enum": [
        -                "lock",
        -                "sleep",
        -                "restart",
        -                "shutdown"
        -              ],
        -              "type": "string"
        -            },
        -            "delay_seconds": {
        -              "description": "Optional delay, maximum 3600 seconds.",
        -              "type": "number"
        -            }
        -          },
        -          "required": [
        -            "action"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  }
        -]New value: +[
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "get_system_info"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {},
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "list_processes"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "limit": {
        +              "description": "Maximum number of processes to return. Default 100, maximum 1000.",
        +              "type": "number"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "kill_process"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "pid": {
        +              "description": "Process id to terminate.",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "pid"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "get_runtime_info"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {},
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "get_runtime_stats"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {},
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "set_config_value"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "key": {
        +              "description": "telemetryEnabled (true/false), maxReadLines, maxBufferedLines or maxOutputBytes.",
        +              "type": "string"
        +            },
        +            "value": {
        +              "description": "New value: a boolean for telemetryEnabled, a number for the limits."
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "value"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "service"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "enum": [
        +                      "status",
        +                      "start",
        +                      "stop",
        +                      "restart"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "name"
        +                ]
        +              }
        +            }
        +          ],
        +          "properties": {
        +            "action": {
        +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        +              "enum": [
        +                "list",
        +                "status",
        +                "start",
        +                "stop",
        +                "restart"
        +              ],
        +              "type": "string"
        +            },
        +            "name": {
        +              "description": "Service/unit/launchd label.",
        +              "type": "string"
        +            },
        +            "scope": {
        +              "description": "Scope of the operation; choose user scope unless the task explicitly requires a system service.",
        +              "enum": [
        +                "user",
        +                "system"
        +              ],
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "action"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "event_log"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "filter": {
        +              "description": "Optional bounded filter expression or text used to reduce returned results.",
        +              "type": "string"
        +            },
        +            "limit": {
        +              "description": "Maximum number of results to return.",
        +              "type": "number"
        +            },
        +            "log": {
        +              "description": "Windows log name.",
        +              "type": "string"
        +            },
        +            "query": {
        +              "description": "Optional platform-specific query used to reduce returned log results.",
        +              "type": "string"
        +            },
        +            "since": {
        +              "description": "Time window such as 30s, 10m, 2h, or 1d.",
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "network"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "test"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "host",
        +                  "port"
        +                ]
        +              }
        +            }
        +          ],
        +          "properties": {
        +            "action": {
        +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        +              "enum": [
        +                "summary",
        +                "interfaces",
        +                "dns",
        +                "routes",
        +                "listeners",
        +                "test"
        +              ],
        +              "type": "string"
        +            },
        +            "host": {
        +              "description": "Host name or IP address for a bounded connectivity test.",
        +              "type": "string"
        +            },
        +            "port": {
        +              "description": "TCP port number for a connectivity test.",
        +              "type": "number"
        +            },
        +            "timeout_ms": {
        +              "description": "Bounded timeout in milliseconds.",
        +              "type": "number"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "installed_apps"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "filter": {
        +              "description": "Name substring.",
        +              "type": "string"
        +            },
        +            "limit": {
        +              "description": "Maximum results; default 1000.",
        +              "type": "number"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "environment"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "include_env": {
        +              "description": "Include sanitized environment variables; default false.",
        +              "type": "boolean"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "audio"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "set_volume"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "volume"
        +                ]
        +              }
        +            }
        +          ],
        +          "properties": {
        +            "action": {
        +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        +              "enum": [
        +                "status",
        +                "set_volume",
        +                "mute",
        +                "unmute"
        +              ],
        +              "type": "string"
        +            },
        +            "volume": {
        +              "description": "0..100 for set_volume.",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "action"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "power_action"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "action": {
        +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        +              "enum": [
        +                "lock",
        +                "sleep",
        +                "restart",
        +                "shutdown"
        +              ],
        +              "type": "string"
        +            },
        +            "delay_seconds": {
        +              "description": "Optional delay in seconds, maximum 90. Longer delays are rejected because hosted calls expire before they can complete safely.",
        +              "maximum": 90,
        +              "minimum": 0,
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "action"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  }
        +]
  2. 2 tool updates
    • Changedcontrol_browser1 field changed
      • changedInput schema / allOf
        Previous value: -[
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "browser_tabs"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "endpoint": {
        -              "description": "Loopback Chrome DevTools endpoint. Defaults to REMCP_CDP_URL or http://127.0.0.1:9222.",
        -              "type": "string"
        -            },
        -            "target_id": {
        -              "description": "Page target id returned by browser_tabs.",
        -              "type": "string"
        -            },
        -            "timeout_ms": {
        -              "description": "Timeout in milliseconds.",
        -              "type": "number"
        -            },
        -            "title": {
        -              "description": "Choose a page whose title contains this text.",
        -              "type": "string"
        -            },
        -            "url_contains": {
        -              "description": "Choose a page whose URL contains this text.",
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "browser_navigate"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "enum": [
        -                      "url",
        -                      "new_tab"
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "url"
        -                ]
        -              }
        -            }
        -          ],
        -          "properties": {
        -            "action": {
        -              "description": "Default url when url is provided, otherwise reload. new_tab creates the first page target when needed.",
        -              "enum": [
        -                "url",
        -                "new_tab",
        -                "back",
        -                "forward",
        -                "reload"
        -              ],
        -              "type": "string"
        -            },
        -            "endpoint": {
        -              "description": "Loopback Chrome DevTools endpoint. Defaults to REMCP_CDP_URL or http://127.0.0.1:9222.",
        -              "type": "string"
        -            },
        -            "ignore_cache": {
        -              "description": "Reload without cache when action=reload.",
        -              "type": "boolean"
        -            },
        -            "target_id": {
        -              "description": "Page target id returned by browser_tabs.",
        -              "type": "string"
        -            },
        -            "timeout_ms": {
        -              "description": "Timeout in milliseconds.",
        -              "type": "number"
        -            },
        -            "title": {
        -              "description": "Choose a page whose title contains this text.",
        -              "type": "string"
        -            },
        -            "url": {
        -              "description": "Destination URL for action=url or action=new_tab.",
        -              "type": "string"
        -            },
        -            "url_contains": {
        -              "description": "Choose a page whose URL contains this text.",
        -              "type": "string"
        -            },
        -            "wait": {
        -              "description": "Wait for the page load event; default true.",
        -              "type": "boolean"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "browser_snapshot"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "endpoint": {
        -              "description": "Loopback Chrome DevTools endpoint. Defaults to REMCP_CDP_URL or http://127.0.0.1:9222.",
        -              "type": "string"
        -            },
        -            "include_screenshot": {
        -              "description": "Attach a real CDP-rendered viewport PNG screenshot; default false.",
        -              "type": "boolean"
        -            },
        -            "max_nodes": {
        -              "description": "Maximum AX nodes; default 1500.",
        -              "type": "number"
        -            },
        -            "selector": {
        -              "description": "When include_screenshot=true, center this CSS-selected element before capture and report its viewport bounds.",
        -              "type": "string"
        -            },
        -            "target_id": {
        -              "description": "Page target id returned by browser_tabs.",
        -              "type": "string"
        -            },
        -            "timeout_ms": {
        -              "description": "Timeout in milliseconds.",
        -              "type": "number"
        -            },
        -            "title": {
        -              "description": "Choose a page whose title contains this text.",
        -              "type": "string"
        -            },
        -            "url_contains": {
        -              "description": "Choose a page whose URL contains this text.",
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "browser_find"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "anyOf": [
        -            {
        -              "required": [
        -                "selector"
        -              ]
        -            },
        -            {
        -              "required": [
        -                "text"
        -              ]
        -            },
        -            {
        -              "required": [
        -                "role"
        -              ]
        -            }
        -          ],
        -          "properties": {
        -            "endpoint": {
        -              "description": "Loopback Chrome DevTools endpoint. Defaults to REMCP_CDP_URL or http://127.0.0.1:9222.",
        -              "type": "string"
        -            },
        -            "limit": {
        -              "description": "Maximum number of results to return.",
        -              "type": "number"
        -            },
        -            "role": {
        -              "description": "ARIA role.",
        -              "type": "string"
        -            },
        -            "selector": {
        -              "description": "CSS selector.",
        -              "type": "string"
        -            },
        -            "target_id": {
        -              "description": "Page target id returned by browser_tabs.",
        -              "type": "string"
        -            },
        -            "text": {
        -              "description": "Visible text substring.",
        -              "type": "string"
        -            },
        -            "timeout_ms": {
        -              "description": "Timeout in milliseconds.",
        -              "type": "number"
        -            },
        -            "title": {
        -              "description": "Choose a page whose title contains this text.",
        -              "type": "string"
        -            },
        -            "url_contains": {
        -              "description": "Choose a page whose URL contains this text.",
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "browser_action"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "enum": [
        -                      "click",
        -                      "focus",
        -                      "type",
        -                      "set_value",
        -                      "select",
        -                      "scroll_into_view"
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "anyOf": [
        -                  {
        -                    "required": [
        -                      "selector"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "text"
        -                    ]
        -                  }
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "upload"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "anyOf": [
        -                  {
        -                    "required": [
        -                      "path"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "paths"
        -                    ]
        -                  }
        -                ],
        -                "required": [
        -                  "selector"
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "press"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "key"
        -                ]
        -              }
        -            }
        -          ],
        -          "properties": {
        -            "action": {
        -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        -              "enum": [
        -                "click",
        -                "focus",
        -                "type",
        -                "set_value",
        -                "select",
        -                "scroll_into_view",
        -                "upload",
        -                "press",
        -                "set_viewport"
        -              ],
        -              "type": "string"
        -            },
        -            "device_scale_factor": {
        -              "description": "Device scale factor for set_viewport; default 1.",
        -              "type": "number"
        -            },
        -            "endpoint": {
        -              "description": "Loopback Chrome DevTools endpoint. Defaults to REMCP_CDP_URL or http://127.0.0.1:9222.",
        -              "type": "string"
        -            },
        -            "height": {
        -              "description": "CSS viewport height for set_viewport.",
        -              "type": "number"
        -            },
        -            "key": {
        -              "description": "Single key name such as Enter, Escape, Tab or A.",
        -              "type": "string"
        -            },
        -            "mobile": {
        -              "description": "Enable mobile emulation for set_viewport.",
        -              "type": "boolean"
        -            },
        -            "option": {
        -              "description": "Option value to select in a browser select element.",
        -              "type": "string"
        -            },
        -            "path": {
        -              "description": "Permitted local filesystem path.",
        -              "type": "string"
        -            },
        -            "paths": {
        -              "description": "List of permitted local filesystem paths.",
        -              "items": {
        -                "type": "string"
        -              },
        -              "minItems": 1,
        -              "type": "array"
        -            },
        -            "selector": {
        -              "description": "CSS selector for the target element; prefer the reusable selector returned by browser_find.",
        -              "type": "string"
        -            },
        -            "target_id": {
        -              "description": "Page target id returned by browser_tabs.",
        -              "type": "string"
        -            },
        -            "text": {
        -              "description": "For action=type, Unicode text to insert. For element actions without selector, visible text may identify the target.",
        -              "type": "string"
        -            },
        -            "text_value": {
        -              "description": "Compatibility alias for the type/set_value text value.",
        -              "type": "string"
        -            },
        -            "timeout_ms": {
        -              "description": "Timeout in milliseconds.",
        -              "type": "number"
        -            },
        -            "title": {
        -              "description": "Choose a page whose title contains this text.",
        -              "type": "string"
        -            },
        -            "url_contains": {
        -              "description": "Choose a page whose URL contains this text.",
        -              "type": "string"
        -            },
        -            "value": {
        -              "description": "Value for action=set_value; also accepted as a compatibility fallback for action=type.",
        -              "type": "string"
        -            },
        -            "width": {
        -              "description": "CSS viewport width for set_viewport.",
        -              "type": "number"
        -            }
        -          },
        -          "required": [
        -            "action"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "browser_wait"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "if": {
        -                "not": {
        -                  "required": [
        -                    "condition"
        -                  ]
        -                }
        -              },
        -              "then": {
        -                "required": [
        -                  "selector"
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "condition": {
        -                    "const": "selector"
        -                  }
        -                },
        -                "required": [
        -                  "condition"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "selector"
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "condition": {
        -                    "const": "text"
        -                  }
        -                },
        -                "required": [
        -                  "condition"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "text"
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "condition": {
        -                    "const": "url_contains"
        -                  }
        -                },
        -                "required": [
        -                  "condition"
        -                ]
        -              },
        -              "then": {
        -                "anyOf": [
        -                  {
        -                    "required": [
        -                      "value"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "text"
        -                    ]
        -                  }
        -                ]
        -              }
        -            }
        -          ],
        -          "properties": {
        -            "condition": {
        -              "description": "Semantic condition to wait for; choose the condition that directly proves the requested state transition.",
        -              "enum": [
        -                "selector",
        -                "text",
        -                "url_contains",
        -                "load",
        -                "navigation",
        -                "network_idle"
        -              ],
        -              "type": "string"
        -            },
        -            "endpoint": {
        -              "description": "Loopback Chrome DevTools endpoint. Defaults to REMCP_CDP_URL or http://127.0.0.1:9222.",
        -              "type": "string"
        -            },
        -            "idle_ms": {
        -              "description": "Required zero-in-flight network quiet window for network_idle; default 500 ms.",
        -              "type": "number"
        -            },
        -            "poll_ms": {
        -              "description": "Polling interval in milliseconds.",
        -              "type": "number"
        -            },
        -            "selector": {
        -              "description": "CSS selector identifying a web element.",
        -              "type": "string"
        -            },
        -            "target_id": {
        -              "description": "Page target id returned by browser_tabs.",
        -              "type": "string"
        -            },
        -            "text": {
        -              "description": "Text required by the selected action.",
        -              "type": "string"
        -            },
        -            "timeout_ms": {
        -              "description": "Timeout in milliseconds.",
        -              "type": "number"
        -            },
        -            "title": {
        -              "description": "Choose a page whose title contains this text.",
        -              "type": "string"
        -            },
        -            "url_contains": {
        -              "description": "Choose a page whose URL contains this text.",
        -              "type": "string"
        -            },
        -            "value": {
        -              "description": "Value required by the selected action.",
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "browser_evaluate"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "await_promise": {
        -              "description": "Await a returned Promise; default true.",
        -              "type": "boolean"
        -            },
        -            "endpoint": {
        -              "description": "Loopback Chrome DevTools endpoint. Defaults to REMCP_CDP_URL or http://127.0.0.1:9222.",
        -              "type": "string"
        -            },
        -            "expression": {
        -              "description": "JavaScript expression.",
        -              "type": "string"
        -            },
        -            "target_id": {
        -              "description": "Page target id returned by browser_tabs.",
        -              "type": "string"
        -            },
        -            "timeout_ms": {
        -              "description": "Timeout in milliseconds.",
        -              "type": "number"
        -            },
        -            "title": {
        -              "description": "Choose a page whose title contains this text.",
        -              "type": "string"
        -            },
        -            "url_contains": {
        -              "description": "Choose a page whose URL contains this text.",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "expression"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  }
        -]New value: +[
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "browser_tabs"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "endpoint": {
        +              "description": "Loopback Chrome DevTools endpoint. Defaults to REMCP_CDP_URL or http://127.0.0.1:9222.",
        +              "type": "string"
        +            },
        +            "target_id": {
        +              "description": "Page target id returned by browser_tabs.",
        +              "type": "string"
        +            },
        +            "timeout_ms": {
        +              "description": "Timeout in milliseconds.",
        +              "type": "number"
        +            },
        +            "title": {
        +              "description": "Choose a page whose title contains this text.",
        +              "type": "string"
        +            },
        +            "url_contains": {
        +              "description": "Choose a page whose URL contains this text.",
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "browser_navigate"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "enum": [
        +                      "url",
        +                      "new_tab"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "url"
        +                ]
        +              }
        +            }
        +          ],
        +          "properties": {
        +            "action": {
        +              "description": "Default url when url is provided, otherwise reload. new_tab creates the first page target when needed.",
        +              "enum": [
        +                "url",
        +                "new_tab",
        +                "back",
        +                "forward",
        +                "reload"
        +              ],
        +              "type": "string"
        +            },
        +            "endpoint": {
        +              "description": "Loopback Chrome DevTools endpoint. Defaults to REMCP_CDP_URL or http://127.0.0.1:9222.",
        +              "type": "string"
        +            },
        +            "ignore_cache": {
        +              "description": "Reload without cache when action=reload.",
        +              "type": "boolean"
        +            },
        +            "target_id": {
        +              "description": "Page target id returned by browser_tabs.",
        +              "type": "string"
        +            },
        +            "timeout_ms": {
        +              "description": "Timeout in milliseconds.",
        +              "type": "number"
        +            },
        +            "title": {
        +              "description": "Choose a page whose title contains this text.",
        +              "type": "string"
        +            },
        +            "url": {
        +              "description": "Destination URL for action=url or action=new_tab.",
        +              "type": "string"
        +            },
        +            "url_contains": {
        +              "description": "Choose a page whose URL contains this text.",
        +              "type": "string"
        +            },
        +            "wait": {
        +              "description": "Wait for the page load event; default true.",
        +              "type": "boolean"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "browser_snapshot"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "endpoint": {
        +              "description": "Loopback Chrome DevTools endpoint. Defaults to REMCP_CDP_URL or http://127.0.0.1:9222.",
        +              "type": "string"
        +            },
        +            "include_screenshot": {
        +              "description": "Attach a real CDP-rendered viewport PNG screenshot; default false.",
        +              "type": "boolean"
        +            },
        +            "max_nodes": {
        +              "description": "Maximum AX nodes; default 1500.",
        +              "type": "number"
        +            },
        +            "selector": {
        +              "description": "When include_screenshot=true, center this CSS-selected element before capture and report its viewport bounds.",
        +              "type": "string"
        +            },
        +            "target_id": {
        +              "description": "Page target id returned by browser_tabs.",
        +              "type": "string"
        +            },
        +            "timeout_ms": {
        +              "description": "Timeout in milliseconds.",
        +              "type": "number"
        +            },
        +            "title": {
        +              "description": "Choose a page whose title contains this text.",
        +              "type": "string"
        +            },
        +            "url_contains": {
        +              "description": "Choose a page whose URL contains this text.",
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "browser_find"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "anyOf": [
        +            {
        +              "required": [
        +                "selector"
        +              ]
        +            },
        +            {
        +              "required": [
        +                "text"
        +              ]
        +            },
        +            {
        +              "required": [
        +                "role"
        +              ]
        +            }
        +          ],
        +          "properties": {
        +            "endpoint": {
        +              "description": "Loopback Chrome DevTools endpoint. Defaults to REMCP_CDP_URL or http://127.0.0.1:9222.",
        +              "type": "string"
        +            },
        +            "limit": {
        +              "description": "Maximum number of results to return.",
        +              "type": "number"
        +            },
        +            "role": {
        +              "description": "ARIA role.",
        +              "type": "string"
        +            },
        +            "selector": {
        +              "description": "CSS selector.",
        +              "type": "string"
        +            },
        +            "target_id": {
        +              "description": "Page target id returned by browser_tabs.",
        +              "type": "string"
        +            },
        +            "text": {
        +              "description": "Visible text substring.",
        +              "type": "string"
        +            },
        +            "timeout_ms": {
        +              "description": "Timeout in milliseconds.",
        +              "type": "number"
        +            },
        +            "title": {
        +              "description": "Choose a page whose title contains this text.",
        +              "type": "string"
        +            },
        +            "url_contains": {
        +              "description": "Choose a page whose URL contains this text.",
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "browser_action"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "enum": [
        +                      "click",
        +                      "focus",
        +                      "set_value",
        +                      "select",
        +                      "scroll_into_view"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "selector"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "text"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "browser_text"
        +                    ]
        +                  }
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "type"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "selector"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "browser_text"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "value"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "text_value"
        +                    ]
        +                  }
        +                ],
        +                "required": [
        +                  "text"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "scroll"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "delta_x"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "delta_y"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "delta"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "direction"
        +                    ]
        +                  }
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "upload"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "path"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "paths"
        +                    ]
        +                  }
        +                ],
        +                "required": [
        +                  "selector"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "press"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "key"
        +                ]
        +              }
        +            }
        +          ],
        +          "properties": {
        +            "action": {
        +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        +              "enum": [
        +                "click",
        +                "focus",
        +                "type",
        +                "set_value",
        +                "select",
        +                "scroll",
        +                "scroll_into_view",
        +                "upload",
        +                "press",
        +                "set_viewport"
        +              ],
        +              "type": "string"
        +            },
        +            "browser_text": {
        +              "description": "Visible text used only to locate a DOM element; use this instead of overloading text for action=type.",
        +              "type": "string"
        +            },
        +            "clear": {
        +              "description": "For action=type, clear the current value before inserting text.",
        +              "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"
        +            },
        +            "device_scale_factor": {
        +              "description": "Device scale factor for set_viewport; default 1.",
        +              "type": "number"
        +            },
        +            "direction": {
        +              "description": "Human-readable scroll direction used with wheel_times instead of explicit deltas.",
        +              "enum": [
        +                "up",
        +                "down",
        +                "left",
        +                "right"
        +              ],
        +              "type": "string"
        +            },
        +            "endpoint": {
        +              "description": "Loopback Chrome DevTools endpoint. Defaults to REMCP_CDP_URL or http://127.0.0.1:9222.",
        +              "type": "string"
        +            },
        +            "height": {
        +              "description": "CSS viewport height for set_viewport.",
        +              "type": "number"
        +            },
        +            "key": {
        +              "description": "Single key name such as Enter, Escape, Tab or A.",
        +              "type": "string"
        +            },
        +            "mobile": {
        +              "description": "Enable mobile emulation for set_viewport.",
        +              "type": "boolean"
        +            },
        +            "option": {
        +              "description": "Option value to select in a browser select element.",
        +              "type": "string"
        +            },
        +            "path": {
        +              "description": "Permitted local filesystem path.",
        +              "type": "string"
        +            },
        +            "paths": {
        +              "description": "List of permitted local filesystem paths.",
        +              "items": {
        +                "type": "string"
        +              },
        +              "minItems": 1,
        +              "type": "array"
        +            },
        +            "selector": {
        +              "description": "CSS selector for the target element; prefer the reusable selector returned by browser_find.",
        +              "type": "string"
        +            },
        +            "target_id": {
        +              "description": "Page target id returned by browser_tabs.",
        +              "type": "string"
        +            },
        +            "text": {
        +              "description": "For action=type, Unicode text to insert. For non-type element actions without selector/browser_text, visible text may identify the target.",
        +              "type": "string"
        +            },
        +            "text_value": {
        +              "description": "Compatibility alias for the type/set_value text value.",
        +              "type": "string"
        +            },
        +            "timeout_ms": {
        +              "description": "Timeout in milliseconds.",
        +              "type": "number"
        +            },
        +            "title": {
        +              "description": "Choose a page whose title contains this text.",
        +              "type": "string"
        +            },
        +            "url_contains": {
        +              "description": "Choose a page whose URL contains this text.",
        +              "type": "string"
        +            },
        +            "value": {
        +              "description": "Value for action=set_value; also accepted as a legacy type payload when text is used as the locator.",
        +              "type": "string"
        +            },
        +            "wheel_times": {
        +              "description": "Number of 120-unit wheel steps for direction; 1..50.",
        +              "type": "number"
        +            },
        +            "width": {
        +              "description": "CSS viewport width for set_viewport.",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "action"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "browser_wait"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "if": {
        +                "not": {
        +                  "required": [
        +                    "condition"
        +                  ]
        +                }
        +              },
        +              "then": {
        +                "required": [
        +                  "selector"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "condition": {
        +                    "const": "selector"
        +                  }
        +                },
        +                "required": [
        +                  "condition"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "selector"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "condition": {
        +                    "const": "text"
        +                  }
        +                },
        +                "required": [
        +                  "condition"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "text"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "condition": {
        +                    "const": "url_contains"
        +                  }
        +                },
        +                "required": [
        +                  "condition"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "value"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "text"
        +                    ]
        +                  }
        +                ]
        +              }
        +            }
        +          ],
        +          "properties": {
        +            "condition": {
        +              "description": "Semantic condition to wait for; choose the condition that directly proves the requested state transition.",
        +              "enum": [
        +                "selector",
        +                "text",
        +                "url_contains",
        +                "load",
        +                "navigation",
        +                "network_idle"
        +              ],
        +              "type": "string"
        +            },
        +            "endpoint": {
        +              "description": "Loopback Chrome DevTools endpoint. Defaults to REMCP_CDP_URL or http://127.0.0.1:9222.",
        +              "type": "string"
        +            },
        +            "idle_ms": {
        +              "description": "Required zero-in-flight network quiet window for network_idle; default 500 ms.",
        +              "type": "number"
        +            },
        +            "poll_ms": {
        +              "description": "Polling interval in milliseconds.",
        +              "type": "number"
        +            },
        +            "selector": {
        +              "description": "CSS selector identifying a web element.",
        +              "type": "string"
        +            },
        +            "target_id": {
        +              "description": "Page target id returned by browser_tabs.",
        +              "type": "string"
        +            },
        +            "text": {
        +              "description": "Text required by the selected action.",
        +              "type": "string"
        +            },
        +            "timeout_ms": {
        +              "description": "Timeout in milliseconds.",
        +              "type": "number"
        +            },
        +            "title": {
        +              "description": "Choose a page whose title contains this text.",
        +              "type": "string"
        +            },
        +            "url_contains": {
        +              "description": "Choose a page whose URL contains this text.",
        +              "type": "string"
        +            },
        +            "value": {
        +              "description": "Value required by the selected action.",
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "browser_evaluate"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "await_promise": {
        +              "description": "Await a returned Promise; default true.",
        +              "type": "boolean"
        +            },
        +            "endpoint": {
        +              "description": "Loopback Chrome DevTools endpoint. Defaults to REMCP_CDP_URL or http://127.0.0.1:9222.",
        +              "type": "string"
        +            },
        +            "expression": {
        +              "description": "JavaScript expression.",
        +              "type": "string"
        +            },
        +            "target_id": {
        +              "description": "Page target id returned by browser_tabs.",
        +              "type": "string"
        +            },
        +            "timeout_ms": {
        +              "description": "Timeout in milliseconds.",
        +              "type": "number"
        +            },
        +            "title": {
        +              "description": "Choose a page whose title contains this text.",
        +              "type": "string"
        +            },
        +            "url_contains": {
        +              "description": "Choose a page whose URL contains this text.",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "expression"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  }
        +]
    • 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": "list_windows"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "include_monitor": {
        -              "description": "Enrich each window with monitor and monitor_index; default true.",
        -              "type": "boolean"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "ui_snapshot"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "app": {
        -              "description": "Optional application/process name substring scope.",
        -              "type": "string"
        -            },
        -            "browser_dom": {
        -              "description": "Prefer the native browser document accessibility subtree instead of browser chrome when supported.",
        -              "type": "boolean"
        -            },
        -            "max_depth": {
        -              "description": "Maximum traversal depth; default 8, maximum 32.",
        -              "type": "number"
        -            },
        -            "max_nodes": {
        -              "description": "Maximum nodes; default 500, maximum 5000.",
        -              "type": "number"
        -            },
        -            "pid": {
        -              "description": "Optional owning process id scope.",
        -              "type": "number"
        -            },
        -            "scope": {
        -              "description": "Default active. Use desktop only when cross-application discovery is required.",
        -              "enum": [
        -                "active",
        -                "desktop"
        -              ],
        -              "type": "string"
        -            },
        -            "semantic_tree": {
        -              "description": "Include compact semantic hierarchy text; default true.",
        -              "type": "boolean"
        -            },
        -            "window_title": {
        -              "description": "Optional top-level accessibility window/frame title scope.",
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "ui_find"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "anyOf": [
        -            {
        -              "required": [
        -                "id"
        -              ]
        -            },
        -            {
        -              "required": [
        -                "label"
        -              ]
        -            },
        -            {
        -              "required": [
        -                "name"
        -              ]
        -            },
        -            {
        -              "required": [
        -                "role"
        -              ]
        -            },
        -            {
        -              "required": [
        -                "automation_id"
        -              ]
        -            }
        -          ],
        -          "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"
        -            },
        -            "limit": {
        -              "description": "Maximum matches; default 20.",
        -              "type": "number"
        -            },
        -            "max_depth": {
        -              "description": "Maximum accessibility tree depth to traverse.",
        -              "type": "number"
        -            },
        -            "max_nodes": {
        -              "description": "Maximum accessibility nodes to inspect or return; keep this bounded and raise it only when the target is missing.",
        -              "type": "number"
        -            },
        -            "name": {
        -              "description": "Accessible name/title substring.",
        -              "type": "string"
        -            },
        -            "pid": {
        -              "description": "Limit matching to one owning process id when available.",
        -              "type": "number"
        -            },
        -            "refresh": {
        -              "description": "Force a fresh accessibility capture instead of the short-lived snapshot cache.",
        -              "type": "boolean"
        -            },
        -            "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"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "wait_for_ui"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "if": {
        -                "properties": {
        -                  "condition": {
        -                    "const": "text_exists"
        -                  }
        -                },
        -                "required": [
        -                  "condition"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "text"
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "condition": {
        -                    "const": "active_window"
        -                  }
        -                },
        -                "required": [
        -                  "condition"
        -                ]
        -              },
        -              "then": {
        -                "anyOf": [
        -                  {
        -                    "required": [
        -                      "text"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "name"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "window_title"
        -                    ]
        -                  }
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "condition": {
        -                    "enum": [
        -                      "element_exists",
        -                      "element_enabled"
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "condition"
        -                ]
        -              },
        -              "then": {
        -                "anyOf": [
        -                  {
        -                    "required": [
        -                      "id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "label"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "name"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "role"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "automation_id"
        -                    ]
        -                  }
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "state": {
        -                    "enum": [
        -                      "present",
        -                      "absent"
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "state"
        -                ]
        -              },
        -              "then": {
        -                "anyOf": [
        -                  {
        -                    "required": [
        -                      "id"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "label"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "name"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "role"
        -                    ]
        -                  },
        -                  {
        -                    "required": [
        -                      "automation_id"
        -                    ]
        -                  }
        -                ]
        -              }
        -            }
        -          ],
        -          "anyOf": [
        -            {
        -              "required": [
        -                "state"
        -              ]
        -            },
        -            {
        -              "required": [
        -                "condition"
        -              ]
        -            }
        -          ],
        -          "properties": {
        -            "app": {
        -              "description": "Limit matching to an application/process name substring when available.",
        -              "type": "string"
        -            },
        -            "automation_id": {
        -              "description": "Windows AutomationId when available.",
        -              "type": "string"
        -            },
        -            "browser_dom": {
        -              "description": "Use native browser document accessibility where supported.",
        -              "type": "boolean"
        -            },
        -            "condition": {
        -              "description": "Semantic condition to wait for; choose the condition that directly proves the requested state transition.",
        -              "enum": [
        -                "text_exists",
        -                "active_window",
        -                "element_exists",
        -                "element_enabled",
        -                "focused_element"
        -              ],
        -              "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"
        -            },
        -            "poll_ms": {
        -              "description": "Polling interval, 50..5000 ms.",
        -              "type": "number"
        -            },
        -            "role": {
        -              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        -              "type": "string"
        -            },
        -            "state": {
        -              "description": "changed captures the first matching semantic state and waits until it differs.",
        -              "enum": [
        -                "present",
        -                "absent",
        -                "changed"
        -              ],
        -              "type": "string"
        -            },
        -            "text": {
        -              "description": "Text used by text_exists or active_window.",
        -              "type": "string"
        -            },
        -            "timeout_ms": {
        -              "description": "Maximum wait, capped at 120000 ms.",
        -              "type": "number"
        -            },
        -            "window_title": {
        -              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "display_inventory"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {},
        -          "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": "window_action"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "required": [
        -                    "id"
        -                  ]
        -                },
        -                {
        -                  "required": [
        -                    "pid"
        -                  ]
        -                },
        -                {
        -                  "required": [
        -                    "app"
        -                  ]
        -                },
        -                {
        -                  "required": [
        -                    "title"
        -                  ]
        -                }
        -              ]
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "move"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "x",
        -                  "y"
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "resize"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "width",
        -                  "height"
        -                ]
        -              }
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "move_resize"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "x",
        -                  "y",
        -                  "width",
        -                  "height"
        -                ]
        -              }
        -            }
        -          ],
        -          "properties": {
        -            "action": {
        -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        -              "enum": [
        -                "focus",
        -                "minimize",
        -                "maximize",
        -                "restore",
        -                "move",
        -                "resize",
        -                "move_resize",
        -                "close"
        -              ],
        -              "type": "string"
        -            },
        -            "app": {
        -              "description": "Application/process name substring.",
        -              "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"
        -            },
        -            "height": {
        -              "description": "Height in pixels.",
        -              "type": "number"
        -            },
        -            "id": {
        -              "description": "Window id returned by list_windows.",
        -              "type": "string"
        -            },
        -            "pid": {
        -              "description": "Owning process id.",
        -              "type": "number"
        -            },
        -            "title": {
        -              "description": "Window title substring.",
        -              "type": "string"
        -            },
        -            "width": {
        -              "description": "Width in pixels.",
        -              "type": "number"
        -            },
        -            "x": {
        -              "description": "Virtual-desktop X coordinate in pixels.",
        -              "type": "number"
        -            },
        -            "y": {
        -              "description": "Virtual-desktop Y coordinate in pixels.",
        -              "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": "ui_action"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "required": [
        -                    "id"
        -                  ]
        -                },
        -                {
        -                  "required": [
        -                    "label"
        -                  ]
        -                },
        -                {
        -                  "required": [
        -                    "name"
        -                  ]
        -                },
        -                {
        -                  "required": [
        -                    "role"
        -                  ]
        -                },
        -                {
        -                  "required": [
        -                    "automation_id"
        -                  ]
        -                }
        -              ]
        -            },
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "enum": [
        -                      "set_value",
        -                      "set_range_value"
        -                    ]
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "value"
        -                ]
        -              }
        -            }
        -          ],
        -          "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"
        -              ],
        -              "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"
        -            },
        -            "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"
        -            },
        -            "value": {
        -              "description": "New text or numeric range value."
        -            },
        -            "window_title": {
        -              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "action"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "type_text"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "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"
        -            },
        -            "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"
        -            },
        -            "caret_position": {
        -              "description": "Where text insertion should occur when the semantic editor supports caret placement.",
        -              "enum": [
        -                "start",
        -                "idle",
        -                "end"
        -              ],
        -              "type": "string"
        -            },
        -            "clear": {
        -              "description": "Replace existing text for semantic/window-scoped accessibility input, or clear it before keyboard/paste fallback.",
        -              "type": "boolean"
        -            },
        -            "delay_ms": {
        -              "description": "Per-key delay for method=keys.",
        -              "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"
        -            },
        -            "method": {
        -              "description": "Default auto prefers verified accessibility editing and falls back to clipboard paste. keys sends physical key events and therefore follows the active keyboard layout.",
        -              "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"
        -            },
        -            "press_enter": {
        -              "description": "Press Enter after typing; physical Enter delivery requires verified window focus.",
        -              "type": "boolean"
        -            },
        -            "role": {
        -              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        -              "type": "string"
        -            },
        -            "text": {
        -              "description": "Text to enter.",
        -              "type": "string"
        -            },
        -            "title": {
        -              "description": "Optional target window title substring. With auto/accessibility + clear=true, a unique editable control may be updated semantically without compositor focus.",
        -              "type": "string"
        -            },
        -            "window_id": {
        -              "description": "Optional target window id. With auto/accessibility + clear=true, a unique editable control may be updated semantically without focus; keyboard/clipboard fallbacks verify focus before dispatch.",
        -              "type": "string"
        -            },
        -            "window_title": {
        -              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "text"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "keyboard"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "anyOf": [
        -            {
        -              "required": [
        -                "shortcut"
        -              ]
        -            },
        -            {
        -              "required": [
        -                "key"
        -              ]
        -            },
        -            {
        -              "required": [
        -                "keys"
        -              ]
        -            }
        -          ],
        -          "properties": {
        -            "app": {
        -              "description": "Optional target application/process name substring.",
        -              "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"
        -            },
        -            "key": {
        -              "description": "Single key name such as Enter, Escape, Tab or A.",
        -              "type": "string"
        -            },
        -            "keys": {
        -              "description": "Ordered key names that together form the requested shortcut or key sequence.",
        -              "items": {
        -                "type": "string"
        -              },
        -              "minItems": 1,
        -              "type": "array"
        -            },
        -            "pid": {
        -              "description": "Optional target process id.",
        -              "type": "number"
        -            },
        -            "shortcut": {
        -              "description": "Keyboard shortcut such as CTRL+L, CMD+K or ALT+F4.",
        -              "type": "string"
        -            },
        -            "title": {
        -              "description": "Optional target window title substring.",
        -              "type": "string"
        -            },
        -            "window_id": {
        -              "description": "Optional target window id returned by list_windows. On Wayland the target is focused and verified before keyboard/text input is dispatched.",
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "pointer"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "if": {
        -                "properties": {
        -                  "action": {
        -                    "const": "move"
        -                  }
        -                },
        -                "required": [
        -                  "action"
        -                ]
        -              },
        -              "then": {
        -                "required": [
        -                  "x",
        -                  "y"
        -                ]
        -              }
        -            }
        -          ],
        -          "properties": {
        -            "action": {
        -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        -              "enum": [
        -                "move",
        -                "click",
        -                "double_click",
        -                "right_click",
        -                "down",
        -                "up"
        -              ],
        -              "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"
        -            },
        -            "button": {
        -              "description": "Pointer button to use for click/down/up or drag gestures.",
        -              "enum": [
        -                "left",
        -                "right",
        -                "middle"
        -              ],
        -              "type": "string"
        -            },
        -            "x": {
        -              "description": "Virtual-desktop X coordinate in pixels.",
        -              "type": "number"
        -            },
        -            "y": {
        -              "description": "Virtual-desktop Y coordinate in pixels.",
        -              "type": "number"
        -            }
        -          },
        -          "required": [
        -            "action"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "drag_drop"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "allOf": [
        -            {
        -              "anyOf": [
        -                {
        -                  "required": [
        -                    "from_id"
        -                  ]
        -                },
        -                {
        -                  "required": [
        -                    "from_x",
        -                    "from_y"
        -                  ]
        -                }
        -              ]
        -            },
        -            {
        -              "anyOf": [
        -                {
        -                  "required": [
        -                    "to_id"
        -                  ]
        -                },
        -                {
        -                  "required": [
        -                    "to_x",
        -                    "to_y"
        -                  ]
        -                }
        -              ]
        -            }
        -          ],
        -          "properties": {
        -            "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"
        -            },
        -            "button": {
        -              "description": "Pointer button to use for click/down/up or drag gestures.",
        -              "enum": [
        -                "left",
        -                "right",
        -                "middle"
        -              ],
        -              "type": "string"
        -            },
        -            "duration_ms": {
        -              "description": "Duration of the drag/movement gesture in milliseconds.",
        -              "type": "number"
        -            },
        -            "from_id": {
        -              "description": "Source UI element id; use instead of from_x/from_y.",
        -              "type": "string"
        -            },
        -            "from_x": {
        -              "description": "Source X coordinate for a drag gesture.",
        -              "type": "number"
        -            },
        -            "from_y": {
        -              "description": "Source Y coordinate for a drag gesture.",
        -              "type": "number"
        -            },
        -            "hold_ms": {
        -              "description": "How long to hold the pointer button before movement during a drag.",
        -              "type": "number"
        -            },
        -            "to_id": {
        -              "description": "Destination UI element id; use instead of to_x/to_y.",
        -              "type": "string"
        -            },
        -            "to_x": {
        -              "description": "Destination X coordinate for a drag gesture.",
        -              "type": "number"
        -            },
        -            "to_y": {
        -              "description": "Destination Y coordinate for a drag gesture.",
        -              "type": "number"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "scroll"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "anyOf": [
        -            {
        -              "required": [
        -                "delta_x"
        -              ]
        -            },
        -            {
        -              "required": [
        -                "delta_y"
        -              ]
        -            },
        -            {
        -              "required": [
        -                "delta"
        -              ]
        -            },
        -            {
        -              "required": [
        -                "direction"
        -              ]
        -            }
        -          ],
        -          "properties": {
        -            "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"
        -            },
        -            "delta": {
        -              "description": "Alias for delta_y.",
        -              "type": "number"
        -            },
        -            "delta_x": {
        -              "description": "Horizontal delta; positive means right.",
        -              "type": "number"
        -            },
        -            "delta_y": {
        -              "description": "Vertical 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"
        -            },
        -            "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"
        -            },
        -            "wheel_times": {
        -              "description": "Number of 120-unit wheel steps when direction is used; 1..50.",
        -              "type": "number"
        -            },
        -            "window_title": {
        -              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        -              "type": "string"
        -            },
        -            "x": {
        -              "description": "Virtual-desktop X coordinate in pixels.",
        -              "type": "number"
        -            },
        -            "y": {
        -              "description": "Virtual-desktop Y coordinate in pixels.",
        -              "type": "number"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "clipboard"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "action": {
        -              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        -              "enum": [
        -                "read",
        -                "write",
        -                "clear"
        -              ],
        -              "type": "string"
        -            },
        -            "text": {
        -              "description": "Text to write.",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "action"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "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"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "notification"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "message": {
        -              "description": "Notification message.",
        -              "type": "string"
        -            },
        -            "timeout_seconds": {
        -              "description": "Bounded native notification display timeout in seconds when the platform supports it.",
        -              "type": "number"
        -            },
        -            "title": {
        -              "description": "Window/page title substring used to select the target.",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "message"
        -          ],
        -          "type": "object"
        -        }
        -      },
        -      "required": [
        -        "parameters"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "operation": {
        -          "const": "record_screen"
        -        }
        -      },
        -      "required": [
        -        "operation"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "parameters": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "destination": {
        -              "description": "Permitted output path. If an extension is supplied, use .webm for native GNOME Wayland recording and .mp4 for the other recorder backends.",
        -              "type": "string"
        -            },
        -            "duration_seconds": {
        -              "description": "1..120 seconds.",
        -              "type": "number"
        -            },
        -            "fps": {
        -              "description": "1..60.",
        -              "type": "number"
        -            }
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  }
        -]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": "list_windows"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "include_monitor": {
        +              "description": "Enrich each window with monitor and monitor_index; default true.",
        +              "type": "boolean"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "ui_snapshot"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "app": {
        +              "description": "Optional application/process name substring scope.",
        +              "type": "string"
        +            },
        +            "browser_dom": {
        +              "description": "Prefer the native browser document accessibility subtree instead of browser chrome when supported.",
        +              "type": "boolean"
        +            },
        +            "max_depth": {
        +              "description": "Maximum traversal depth; default 8, maximum 32.",
        +              "type": "number"
        +            },
        +            "max_nodes": {
        +              "description": "Maximum nodes; default 500, maximum 5000.",
        +              "type": "number"
        +            },
        +            "pid": {
        +              "description": "Optional owning process id scope.",
        +              "type": "number"
        +            },
        +            "scope": {
        +              "description": "Default active. Use desktop only when cross-application discovery is required.",
        +              "enum": [
        +                "active",
        +                "desktop"
        +              ],
        +              "type": "string"
        +            },
        +            "semantic_tree": {
        +              "description": "Include compact semantic hierarchy text; default true.",
        +              "type": "boolean"
        +            },
        +            "window_title": {
        +              "description": "Optional top-level accessibility window/frame title scope.",
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "ui_find"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "anyOf": [
        +            {
        +              "required": [
        +                "id"
        +              ]
        +            },
        +            {
        +              "required": [
        +                "label"
        +              ]
        +            },
        +            {
        +              "required": [
        +                "name"
        +              ]
        +            },
        +            {
        +              "required": [
        +                "role"
        +              ]
        +            },
        +            {
        +              "required": [
        +                "automation_id"
        +              ]
        +            }
        +          ],
        +          "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"
        +            },
        +            "limit": {
        +              "description": "Maximum matches; default 20.",
        +              "type": "number"
        +            },
        +            "max_depth": {
        +              "description": "Maximum accessibility tree depth to traverse.",
        +              "type": "number"
        +            },
        +            "max_nodes": {
        +              "description": "Maximum accessibility nodes to inspect or return; keep this bounded and raise it only when the target is missing.",
        +              "type": "number"
        +            },
        +            "name": {
        +              "description": "Accessible name/title substring.",
        +              "type": "string"
        +            },
        +            "pid": {
        +              "description": "Limit matching to one owning process id when available.",
        +              "type": "number"
        +            },
        +            "refresh": {
        +              "description": "Force a fresh accessibility capture instead of the short-lived snapshot cache.",
        +              "type": "boolean"
        +            },
        +            "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"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "wait_for_ui"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "if": {
        +                "properties": {
        +                  "condition": {
        +                    "const": "text_exists"
        +                  }
        +                },
        +                "required": [
        +                  "condition"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "text"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "condition": {
        +                    "const": "active_window"
        +                  }
        +                },
        +                "required": [
        +                  "condition"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "text"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "window_title"
        +                    ]
        +                  }
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "condition": {
        +                    "enum": [
        +                      "element_exists",
        +                      "element_enabled"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "condition"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "label"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "role"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "automation_id"
        +                    ]
        +                  }
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "state": {
        +                    "enum": [
        +                      "present",
        +                      "absent"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "state"
        +                ]
        +              },
        +              "then": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "id"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "label"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "name"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "role"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "automation_id"
        +                    ]
        +                  }
        +                ]
        +              }
        +            }
        +          ],
        +          "anyOf": [
        +            {
        +              "required": [
        +                "state"
        +              ]
        +            },
        +            {
        +              "required": [
        +                "condition"
        +              ]
        +            }
        +          ],
        +          "properties": {
        +            "app": {
        +              "description": "Limit matching to an application/process name substring when available.",
        +              "type": "string"
        +            },
        +            "automation_id": {
        +              "description": "Windows AutomationId when available.",
        +              "type": "string"
        +            },
        +            "browser_dom": {
        +              "description": "Use native browser document accessibility where supported.",
        +              "type": "boolean"
        +            },
        +            "condition": {
        +              "description": "Semantic condition to wait for; choose the condition that directly proves the requested state transition.",
        +              "enum": [
        +                "text_exists",
        +                "active_window",
        +                "element_exists",
        +                "element_enabled",
        +                "focused_element"
        +              ],
        +              "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"
        +            },
        +            "poll_ms": {
        +              "description": "Polling interval, 50..5000 ms.",
        +              "type": "number"
        +            },
        +            "role": {
        +              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        +              "type": "string"
        +            },
        +            "state": {
        +              "description": "changed captures the first matching semantic state and waits until it differs.",
        +              "enum": [
        +                "present",
        +                "absent",
        +                "changed"
        +              ],
        +              "type": "string"
        +            },
        +            "text": {
        +              "description": "Text used by text_exists or active_window.",
        +              "type": "string"
        +            },
        +            "timeout_ms": {
        +              "description": "Maximum wait, capped at 120000 ms.",
        +              "type": "number"
        +            },
        +            "window_title": {
        +              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "display_inventory"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {},
        +          "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"
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "window_action"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "anyOf": [
        +                {
        +                  "required": [
        +                    "id"
        +                  ]
        +                },
        +                {
        +                  "required": [
        +                    "pid"
        +                  ]
        +                },
        +                {
        +                  "required": [
        +                    "app"
        +                  ]
        +                },
        +                {
        +                  "required": [
        +                    "title"
        +                  ]
        +                }
        +              ]
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "move"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "x",
        +                  "y"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "resize"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "width",
        +                  "height"
        +                ]
        +              }
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "move_resize"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "x",
        +                  "y",
        +                  "width",
        +                  "height"
        +                ]
        +              }
        +            }
        +          ],
        +          "properties": {
        +            "action": {
        +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        +              "enum": [
        +                "focus",
        +                "minimize",
        +                "maximize",
        +                "restore",
        +                "move",
        +                "resize",
        +                "move_resize",
        +                "close"
        +              ],
        +              "type": "string"
        +            },
        +            "app": {
        +              "description": "Application/process name substring.",
        +              "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"
        +            },
        +            "height": {
        +              "description": "Height in pixels.",
        +              "type": "number"
        +            },
        +            "id": {
        +              "description": "Window id returned by list_windows.",
        +              "type": "string"
        +            },
        +            "pid": {
        +              "description": "Owning process id.",
        +              "type": "number"
        +            },
        +            "title": {
        +              "description": "Window title substring.",
        +              "type": "string"
        +            },
        +            "width": {
        +              "description": "Width in pixels.",
        +              "type": "number"
        +            },
        +            "x": {
        +              "description": "Virtual-desktop X coordinate in pixels.",
        +              "type": "number"
        +            },
        +            "y": {
        +              "description": "Virtual-desktop Y coordinate in pixels.",
        +              "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": "ui_action"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "anyOf": [
        +                {
        +                  "required": [
        +                    "id"
        +                  ]
        +                },
        +                {
        +                  "required": [
        +                    "label"
        +                  ]
        +                },
        +                {
        +                  "required": [
        +                    "name"
        +                  ]
        +                },
        +                {
        +                  "required": [
        +                    "role"
        +                  ]
        +                },
        +                {
        +                  "required": [
        +                    "automation_id"
        +                  ]
        +                }
        +              ]
        +            },
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "enum": [
        +                      "set_value",
        +                      "set_range_value"
        +                    ]
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "value"
        +                ]
        +              }
        +            }
        +          ],
        +          "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"
        +              ],
        +              "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"
        +            },
        +            "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"
        +            },
        +            "value": {
        +              "description": "New text or numeric range value."
        +            },
        +            "window_title": {
        +              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "action"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "type_text"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "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"
        +            },
        +            "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"
        +            },
        +            "caret_position": {
        +              "description": "Where text insertion should occur when the semantic editor supports caret placement.",
        +              "enum": [
        +                "start",
        +                "idle",
        +                "end"
        +              ],
        +              "type": "string"
        +            },
        +            "clear": {
        +              "description": "Replace existing text for semantic/window-scoped accessibility input, or clear it before keyboard/paste fallback.",
        +              "type": "boolean"
        +            },
        +            "delay_ms": {
        +              "description": "Per-key delay for method=keys.",
        +              "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"
        +            },
        +            "method": {
        +              "description": "Default auto prefers verified accessibility editing and falls back to clipboard paste. keys sends physical key events and therefore follows the active keyboard layout.",
        +              "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"
        +            },
        +            "press_enter": {
        +              "description": "Press Enter after typing; physical Enter delivery requires verified window focus.",
        +              "type": "boolean"
        +            },
        +            "role": {
        +              "description": "Accessible role such as Button, Edit, textbox or AXButton.",
        +              "type": "string"
        +            },
        +            "text": {
        +              "description": "Text to enter.",
        +              "type": "string"
        +            },
        +            "title": {
        +              "description": "Optional target window title substring. With auto/accessibility + clear=true, a unique editable control may be updated semantically without compositor focus.",
        +              "type": "string"
        +            },
        +            "window_id": {
        +              "description": "Optional target window id. With auto/accessibility + clear=true, a unique editable control may be updated semantically without focus; keyboard/clipboard fallbacks verify focus before dispatch.",
        +              "type": "string"
        +            },
        +            "window_title": {
        +              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "text"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "keyboard"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "anyOf": [
        +            {
        +              "required": [
        +                "shortcut"
        +              ]
        +            },
        +            {
        +              "required": [
        +                "key"
        +              ]
        +            },
        +            {
        +              "required": [
        +                "keys"
        +              ]
        +            }
        +          ],
        +          "properties": {
        +            "app": {
        +              "description": "Optional target application/process name substring.",
        +              "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"
        +            },
        +            "key": {
        +              "description": "Single key name such as Enter, Escape, Tab or A.",
        +              "type": "string"
        +            },
        +            "keys": {
        +              "description": "Ordered key names that together form the requested shortcut or key sequence.",
        +              "items": {
        +                "type": "string"
        +              },
        +              "minItems": 1,
        +              "type": "array"
        +            },
        +            "pid": {
        +              "description": "Optional target process id.",
        +              "type": "number"
        +            },
        +            "shortcut": {
        +              "description": "Keyboard shortcut such as CTRL+L, CMD+K or ALT+F4.",
        +              "type": "string"
        +            },
        +            "title": {
        +              "description": "Optional target window title substring.",
        +              "type": "string"
        +            },
        +            "window_id": {
        +              "description": "Optional target window id returned by list_windows. On Wayland the target is focused and verified before keyboard/text input is dispatched.",
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "pointer"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "if": {
        +                "properties": {
        +                  "action": {
        +                    "const": "move"
        +                  }
        +                },
        +                "required": [
        +                  "action"
        +                ]
        +              },
        +              "then": {
        +                "required": [
        +                  "x",
        +                  "y"
        +                ]
        +              }
        +            }
        +          ],
        +          "properties": {
        +            "action": {
        +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        +              "enum": [
        +                "move",
        +                "click",
        +                "double_click",
        +                "right_click",
        +                "down",
        +                "up"
        +              ],
        +              "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"
        +            },
        +            "button": {
        +              "description": "Pointer button to use for click/down/up or drag gestures.",
        +              "enum": [
        +                "left",
        +                "right",
        +                "middle"
        +              ],
        +              "type": "string"
        +            },
        +            "x": {
        +              "description": "Virtual-desktop X coordinate in pixels.",
        +              "type": "number"
        +            },
        +            "y": {
        +              "description": "Virtual-desktop Y coordinate in pixels.",
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "action"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "drag_drop"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "allOf": [
        +            {
        +              "anyOf": [
        +                {
        +                  "required": [
        +                    "from_id"
        +                  ]
        +                },
        +                {
        +                  "required": [
        +                    "from_x",
        +                    "from_y"
        +                  ]
        +                }
        +              ]
        +            },
        +            {
        +              "anyOf": [
        +                {
        +                  "required": [
        +                    "to_id"
        +                  ]
        +                },
        +                {
        +                  "required": [
        +                    "to_x",
        +                    "to_y"
        +                  ]
        +                }
        +              ]
        +            }
        +          ],
        +          "properties": {
        +            "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"
        +            },
        +            "button": {
        +              "description": "Pointer button to use for click/down/up or drag gestures.",
        +              "enum": [
        +                "left",
        +                "right",
        +                "middle"
        +              ],
        +              "type": "string"
        +            },
        +            "duration_ms": {
        +              "description": "Duration of the drag/movement gesture in milliseconds.",
        +              "type": "number"
        +            },
        +            "from_id": {
        +              "description": "Source UI element id; use instead of from_x/from_y.",
        +              "type": "string"
        +            },
        +            "from_x": {
        +              "description": "Source X coordinate for a drag gesture.",
        +              "type": "number"
        +            },
        +            "from_y": {
        +              "description": "Source Y coordinate for a drag gesture.",
        +              "type": "number"
        +            },
        +            "hold_ms": {
        +              "description": "How long to hold the pointer button before movement during a drag.",
        +              "type": "number"
        +            },
        +            "to_id": {
        +              "description": "Destination UI element id; use instead of to_x/to_y.",
        +              "type": "string"
        +            },
        +            "to_x": {
        +              "description": "Destination X coordinate for a drag gesture.",
        +              "type": "number"
        +            },
        +            "to_y": {
        +              "description": "Destination Y coordinate for a drag gesture.",
        +              "type": "number"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "scroll"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "anyOf": [
        +            {
        +              "required": [
        +                "delta_x"
        +              ]
        +            },
        +            {
        +              "required": [
        +                "delta_y"
        +              ]
        +            },
        +            {
        +              "required": [
        +                "delta"
        +              ]
        +            },
        +            {
        +              "required": [
        +                "direction"
        +              ]
        +            }
        +          ],
        +          "properties": {
        +            "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"
        +            },
        +            "delta": {
        +              "description": "Alias for delta_y.",
        +              "type": "number"
        +            },
        +            "delta_x": {
        +              "description": "Horizontal delta; positive means right.",
        +              "type": "number"
        +            },
        +            "delta_y": {
        +              "description": "Vertical 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"
        +            },
        +            "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"
        +            },
        +            "wheel_times": {
        +              "description": "Number of 120-unit wheel steps when direction is used; 1..50.",
        +              "type": "number"
        +            },
        +            "window_title": {
        +              "description": "Limit matching to a top-level accessibility window/frame title substring when available.",
        +              "type": "string"
        +            },
        +            "x": {
        +              "description": "Virtual-desktop X coordinate in pixels.",
        +              "type": "number"
        +            },
        +            "y": {
        +              "description": "Virtual-desktop Y coordinate in pixels.",
        +              "type": "number"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "clipboard"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "action": {
        +              "description": "Operation to perform; choose the narrowest action that directly matches the requested outcome.",
        +              "enum": [
        +                "read",
        +                "write",
        +                "clear"
        +              ],
        +              "type": "string"
        +            },
        +            "text": {
        +              "description": "Text to write.",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "action"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  },
        +  {
        +    "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"
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "notification"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "message": {
        +              "description": "Notification message.",
        +              "type": "string"
        +            },
        +            "timeout_seconds": {
        +              "description": "Bounded native notification display timeout in seconds when the platform supports it.",
        +              "type": "number"
        +            },
        +            "title": {
        +              "description": "Window/page title substring used to select the target.",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "message"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "parameters"
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "operation": {
        +          "const": "record_screen"
        +        }
        +      },
        +      "required": [
        +        "operation"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "parameters": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "destination": {
        +              "description": "Permitted output path. If an extension is supplied, use .webm for native GNOME Wayland recording and .mp4 for the other recorder backends.",
        +              "type": "string"
        +            },
        +            "duration_seconds": {
        +              "description": "1..120 seconds.",
        +              "type": "number"
        +            },
        +            "fps": {
        +              "description": "1..60.",
        +              "type": "number"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  }
        +]

Publisher details

Operator
ReMCP ยท Publisher source
Operator website
https://remcp.site ยท Publisher source
Vendor relationship
First-party ยท Publisher source
Trust center
Not available
Restrictions
Requires signing in to ReMCP and pairing at least one device. Desktop and browser-control features depend on the paired device's OS permissions and advertised capabilities. ยท Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants like Claude, Codex and ChatGPT to actually operate a computer โ€” finding files, running commands, taking screenshots and driving a browser โ€” and, after a one-time pairing, to help on family members' computers anywhere. Connections between machines are end-to-end encrypted through a relay, requiring no VPN, port forwarding or router setup.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI clients to securely control trusted devices and perform filesystem, terminal, process, and document operations through a self-hosted remote service.
    206,624 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI services like Claude and Cursor to remotely control a Mac by executing shell commands, managing files, and running AppleScript for UI automation. Access is secured through OAuth 2.0 authentication and encrypted tunnels to protect remote interactions.
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to remotely execute shell commands and transfer files on SSH hosts, including jump-host tunneling, background tasks, resumable transfers, and optional approval of destructive commands, while SSH credentials remain in the local process. It runs over stdio or a streamable HTTP daemon and supports auditing, allow/deny lists, and multiple authentication methods.
    ISC
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources