Skip to main content
Glama
NasirSultan

desktop-control-mcp

by NasirSultan

desktop-control-mcp

An MCP server that lets an MCP client (Claude Code, Claude Desktop, or claude.ai via a custom connector) open and close applications, files, and folders on this Windows machine.

Tools exposed:

Tool

Does

open_app

Launch an app by friendly name (chrome, word, notepad, ...) or .exe name, optionally with an argument (URL/file)

close_app

Force-close a running app by name

list_running_apps

List processes that currently have a visible window

open_path

Open a file/folder path, or a friendly folder name (documents, desktop, downloads, pictures, music, videos, home)

close_folder_window

Close any open File Explorer window(s) showing a given folder

list_folder_contents

List the files/subfolders directly inside a folder (name, type, path, size)

open_path_with

Open a file/folder with a SPECIFIC app (e.g. a folder in VS Code) - app is required

find_duplicate_files

Recursively find duplicate files by content (name, all locations, count, wasted space)

list_open_folders

List every open File Explorer folder window (path, title, hwnd)

close_all_folder_windows

Close every open File Explorer folder window

focus_folder_window

Bring an open folder window to front (un-minimizes if needed)

minimize_folder_window

Minimize an open folder window

list_chrome_tabs

List every open Chrome tab (index + title)

open_chrome_tab

Open a new Chrome tab, optionally to a URL

close_chrome_tab

Close the open tab matching a title search

focus_chrome_tab

Switch to the open tab matching a title search

scroll_chrome_page

Maximize Chrome and scroll the active page up/down (simulated PageUp/PageDown)

list_chrome_profiles

List configured Chrome profiles (name + directory)

open_chrome_profile

Open a new Chrome window under a specific profile (most reliable when Chrome isn't already running)

focus_app

Bring an app's window to front / switch to it (un-minimizes if needed)

maximize_app

Maximize an app's window

minimize_app

Minimize an app's window

system_info

Report OS, CPU, RAM (total/used/free/%), and disk usage per drive

restart_graphics_driver

Send Ctrl+Shift+Win+B to restart the graphics driver - fixes a frozen/stuck/black/glitched screen without closing apps or losing work

shutdown_pc

Schedule a full shutdown after a delay. Requires confirm: true.

restart_pc

Schedule a restart after a delay. Requires confirm: true.

cancel_shutdown

Abort a pending shutdown_pc/restart_pc before it fires

Known app aliases live in src/appMap.js — add more there as needed. Any other name is tried as a literal .exe.

open_path_with's app field is required on purpose: if a request doesn't say which app to use, the calling model should ask you rather than guess — making the field required enforces that at the schema level instead of relying on prompt wording. Use plain open_path for "just open it with whatever's default" requests.

focus_app / maximize_app / minimize_app take an optional pid. If more than one window of the requested app is open, they refuse to guess — the error lists each candidate's PID and window title so you (or Claude) can retry with the right pid.

find_duplicate_files matches by content (SHA-256), not filename — two files named differently but byte-identical count as duplicates; two files with the same name but different content don't. It groups by file size first and only hashes within a group that has more than one file, so a folder with mostly unique-sized files is fast. It stops after 20000 files on a very large tree and sets truncated: true rather than hanging.

Chrome tabs

close_chrome_tab / focus_chrome_tab match by a case-insensitive substring against tab titles (not URLs) and take an optional index the same way the window tools take pid - if the query matches more than one tab, they list the candidates instead of guessing. Built on Chrome's own UI Automation tree (the same mechanism screen readers use), not taskkill/Win32 windows, since individual tabs aren't OS-level windows at all.

Two things worth knowing:

  • Only the first Chrome window is used if you have more than one open — tabs in a second Chrome window aren't visible to these tools.

  • The first Chrome tab call after Chrome starts (or after it's been idle a while) can return an empty list while Chrome's accessibility tree activates. If you get [] from list_chrome_tabs when you know tabs are open, just call it again.

⚠️ Security model — read before exposing this to the internet

This server can launch and kill processes on your laptop. Anyone who can send it a request has meaningful control of your machine. It is not a toy:

  • The HTTP transport (src/http.js) refuses to start without MCP_AUTH_TOKEN set and requires Authorization: Bearer <token> on every request. There is no bypass for this — don't add one.

  • It binds to 127.0.0.1 only, never 0.0.0.0. The only way it becomes reachable from outside this machine is if you deliberately point ngrok (or something else) at it.

  • Every request is logged to stdout with timestamp and source IP, including rejected (unauthenticated) ones — keep an eye on that console while a tunnel is open.

  • A small denylist (PROCESS_DENYLIST in src/appMap.js) blocks closing core OS processes (lsass.exe, winlogon.exe, services.exe, ...) so a bad request can't easily crash the whole session.

  • All dynamic input (app names, paths) is passed to child processes via environment variables, never string-concatenated into a shell/PowerShell command line — this is what prevents a crafted tool argument from smuggling in extra commands.

shutdown_pc / restart_pc — the two tools that can strand you

These are the most destructive tools in this server, so they have three independent safety nets:

  1. confirm: true is required. Omit it and the tool refuses before touching shutdown.exe — a guard against an accidental or ambiguous call.

  2. A countdown delay (default 60s, min 15s, max 3600s) before anything happens.

  3. cancel_shutdown aborts a pending shutdown/restart during that countdown.

Two things worth knowing that aren't obvious from the tool names:

  • Unsaved work is not protected. Windows' shutdown.exe automatically implies force-close (/f) whenever the delay is greater than 0 seconds — every default call here has a delay, so once the countdown reaches zero, open apps are closed without a save prompt. The delay is your only window to react, not a "Windows will ask first" safety net.

  • restart_pc currently ends remote control, same as shutdown_pc. This server doesn't auto-start on boot, so after either one fires you'll need to be physically at the machine to get remote control back (auto-start-on-login is a possible follow-up, not set up here).

If you ever need to cancel by hand instead of through an MCP tool call, run shutdown /a from a normal cmd.exe or PowerShell window — not Git Bash. Git Bash's path auto-conversion rewrites leading-slash flags like /a into a bogus Windows path before shutdown.exe ever sees it, so the command silently does nothing (prints usage/help, exit code 1) instead of cancelling. This bit us during testing of this feature.

What this does not do: there is no arbitrary shell-command tool here on purpose. "Open/close apps and files" is a large enough attack surface already; a generic run_command tool would turn this into an unrestricted remote shell. If you extend this server, keep that boundary in mind.

Practical rules for running this safely:

  1. Treat MCP_AUTH_TOKEN like a root password. Generate a long random one (see .env.example), never commit it, never post the ngrok URL anywhere public.

  2. Only run the tunnel while you're actively using it. Stop ngrok (and the server, if you want to be extra safe) when you're done for the day.

  3. Prefer ngrok's own auth on top of yours. ngrok http 3939 --oauth=google --oauth-allow-email=you@example.com (requires a paid ngrok plan) or at least ngrok http 3939 --basic-auth "user:longpassword" adds a second lock on the door.

  4. Watch the console. Every open/close call this server executes is printed. If you see activity you didn't trigger, kill the ngrok tunnel immediately (Ctrl+C) and rotate MCP_AUTH_TOKEN.

  5. A free ngrok URL changes every time you restart the tunnel — that's a feature, not a bug, since a stale forgotten URL still needs your (rotatable) token to do anything.

  6. Try shutdown_pc/restart_pc locally over stdio first, with a generous delaySeconds and cancel_shutdown ready to go, before ever calling them through the ngrok tunnel where a dropped connection could keep you from cancelling in time.

Related MCP server: win-cli-mcp-tmyy

Setup

npm install
copy .env.example .env

Edit .env and set MCP_AUTH_TOKEN to a long random value:

node -e "console.log(require('crypto').randomBytes(24).toString('hex'))"

Running locally (stdio) — for Claude Code / Claude Desktop on this machine

No token needed for stdio; the client launches the process directly, so there's no network exposure.

Claude Code:

claude mcp add desktop-control -- node "C:\Users\Al-Fateh\Documents\agentic-system\desktop-control-mcp\src\stdio.js"

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "desktop-control": {
      "command": "node",
      "args": ["C:\\Users\\Al-Fateh\\Documents\\agentic-system\\desktop-control-mcp\\src\\stdio.js"]
    }
  }
}

Running remotely (HTTP + ngrok) — for claude.ai custom connectors

  1. Start the server:

    npm run start:http

    It listens on http://127.0.0.1:3939/mcp and will refuse to start if MCP_AUTH_TOKEN isn't set.

  2. In a separate terminal, tunnel it:

    ngrok http 3939

    Note the https://<random>.ngrok-free.app URL ngrok prints.

  3. Connect a client to https://<random>.ngrok-free.app/mcp with header Authorization: Bearer <your MCP_AUTH_TOKEN>:

    • Claude Code: claude mcp add --transport http desktop-control https://<random>.ngrok-free.app/mcp --header "Authorization: Bearer <token>"

    • claude.ai (Settings → Connectors → Add custom connector): paste the URL. If the UI doesn't offer a header field for your account type, you'll need OAuth-based auth instead of a static bearer token to use claude.ai's hosted connector flow — the bearer-token approach above is guaranteed to work with Claude Code today.

  4. When you're done, Ctrl+C both the ngrok tunnel and the server.

Files

src/appMap.js     friendly-name -> exe/process map, and the process denylist
src/winControl.js the actual open/close logic (PowerShell + taskkill, injection-safe)
src/server.js     MCP tool definitions, shared by both transports
src/stdio.js      entry point for local stdio transport
src/http.js       entry point for remote HTTP transport (auth required)

Available Tools

27 tools
cancel_shutdownCancel pending shutdown/restartA

Abort a shutdown_pc or restart_pc that is still in its countdown.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It clearly discloses the operation (aborting) and its precondition (a pending countdown), which is the key behavior an agent needs. It does not state the outcome if no countdown is pending, though that is a minor gap for a simple cancel action.

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

Conciseness5/5

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

A single sentence, front-loaded with the action and target, with no filler or repetition of the tool name title. Every word earns its place.

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

Completeness4/5

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

For a no-parameter cancellation tool, the description gives the essential precondition and target. There is no output schema, so return behavior is not described, but the simplicity of the operation makes the description adequate.

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 is empty with 100% coverage. There is nothing for the description to add about parameter meaning, so the baseline of 4 applies.

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

Purpose5/5

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

The description uses the specific verb 'Abort' and names its two targets, shutdown_pc and restart_pc, with the qualifying condition 'still in its countdown.' This clearly identifies what the tool does and distinguishes it from the shutdown/restart siblings.

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

Usage Guidelines4/5

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

The description establishes when this tool applies: after a shutdown_pc or restart_pc has been initiated and before its countdown finishes. It does not explicitly list alternative tools or when not to use it, but the context is clear from the countdown condition.

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

close_all_folder_windowsClose all folder windowsA

Close every currently open File Explorer folder window.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It clearly states that the action affects every currently open File Explorer folder window, which tells the agent the operation is a bulk close with a defined scope. It does not mention confirmation or undo behavior, but for this simple, non-destructive-in-data operation that is a minor gap.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no wasted words. It states the action, target, and scope immediately, making it easy for an agent to parse and act on.

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

Completeness5/5

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

For a zero-parameter tool with no output schema and simple behavior, the description is complete. An agent knows exactly what the tool does and what will be affected, and there are no inputs or return values that need additional context.

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

Parameters4/5

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

The tool has zero parameters, so there is no parameter semantics to explain. With 100% schema coverage and an empty properties object, the description does not need to add parameter-level detail. The baseline of 4 applies.

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

Purpose5/5

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

The description states a specific verb ('Close') and a precise resource ('every currently open File Explorer folder window'), clearly distinguishing this batch operation from the sibling close_folder_window, which targets a single window. The 'every currently open' qualifier makes the tool's scope unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context: use this tool when all open File Explorer folder windows should be closed. It does not explicitly name the alternative close_folder_window for closing a single window, but the contrast is strongly implied by the wording and sibling tool names.

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

close_appClose applicationA

Force-close a running application by name. Known friendly names: chrome, google_chrome, edge, msedge, firefox, word, winword, excel, powerpoint, outlook, notepad, explorer, file_explorer, calculator, calc, paint, cmd, command_prompt, powershell, vscode, vs_code, spotify, task_manager. Critical system processes are refused.

ParametersJSON Schema
NameRequiredDescriptionDefault
appYesFriendly app name or process/.exe name to close

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It explicitly says 'force-close,' indicating abrupt termination, and adds an important safety boundary by refusing critical system processes. It does not spell out possible data loss, but the word 'force-close' is a meaningful disclosure.

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 core behavior is front-loaded in the first sentence, and the friendly-name list is compact and scannable. Every sentence earns its place; there is no filler or repetition of the schema.

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

Completeness4/5

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

For a single-parameter tool with no output schema, the description is quite complete: it defines valid inputs, lists supported aliases, and states a critical safety exclusion. Minor gaps such as failure behavior when the app is not running or whether unsaved data may be lost prevent a perfect score.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by enumerating friendly names and aliases (chrome, google_chrome, msedge, etc.) and by clarifying that the parameter can be a friendly name or a process/.exe name. This helps an agent construct valid input without guessing.

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

Purpose5/5

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

The description opens with 'Force-close a running application by name,' which names a specific verb and resource. The extensive known-name list and the explicit refusal of critical system processes clearly separate this from sibling tools like close_folder_window or shutdown_pc.

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

Usage Guidelines3/5

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

The description implies when to use the tool: for force-closing a running application by name. It does not explicitly contrast with alternatives such as close_folder_window, focus_app, or shutdown_pc, though its scope is reasonably inferable from the context.

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

close_chrome_tabClose Chrome tabA

Close the open Chrome tab whose title matches the given text (case-insensitive substring match).

ParametersJSON Schema
NameRequiredDescriptionDefault
indexNoTab index to pick a specific one when the query matches more than one open tab. Omit it first - if there are multiple matches, the tool lists their indices and titles so you can retry with the right one.
queryYesText to match against open tab titles, e.g. "linkedin"

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It reveals important behavior: case-insensitive substring matching, and via the index parameter description, that multiple matches cause the tool to list indices and titles for a retry. It does not disclose what happens on zero matches, but the core matching and disambiguation behavior is well covered.

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

Conciseness5/5

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

The description is a single, precise sentence that front-loads the action, resource, and matching rule. Every word earns its place, and there is no redundant or filler content.

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

Completeness4/5

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

For a simple two-parameter tool with a detailed input schema, the description is nearly complete. It provides the query semantics, the optional index disambiguation flow, and enough context to call the tool. A small gap is the lack of explicit mention of error/no-match behavior, but this does not undermine the core callability.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by specifying that matching is case-insensitive and substring-based, which is not stated in the query parameter's own description. The optional index parameter is already richly described in the schema.

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

Purpose5/5

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

The description states a specific action ('Close'), a specific resource ('Chrome tab'), and the selection criterion (title matches given text via case-insensitive substring match). This clearly differentiates it from the sibling tools like open_chrome_tab, focus_chrome_tab, and list_chrome_tabs by its verb and matching semantics.

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

Usage Guidelines3/5

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

The usage is implied: use this tool when you want to close a Chrome tab and know part of its title. However, it does not explicitly state when to prefer this over alternatives, nor does it mention using list_chrome_tabs to discover tab titles, so there is no explicit when-to-use or when-not-to-use guidance.

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

close_folder_windowClose folder windowA

Close any open File Explorer window(s) currently showing the given folder path.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFolder path whose open Explorer window(s) should be closed

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It does disclose the key behavior—closing any matching open windows—but does not cover edge cases such as no matching window, invalid path, or whether the operation is a no-op. It is clear but incomplete.

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

Conciseness5/5

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

One concise sentence that front-loads the action and target. Every word earns its place; there is no redundancy or filler.

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

Completeness4/5

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

For a simple one-parameter tool with no output schema, the description adequately covers the core action and matching condition. Minor gaps remain around edge-case behavior and explicit comparison with sibling tools, but nothing blocks correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, and the single 'path' parameter is already well described in the schema as the folder path whose windows should be closed. The description adds no new parameter semantics beyond restating 'given folder path'.

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

Purpose5/5

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

The description uses a specific verb ('Close'), names the resource ('File Explorer window(s)'), and scopes the action to windows 'currently showing the given folder path'. This clearly differentiates it from siblings like close_all_folder_windows.

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

Usage Guidelines4/5

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

The description gives a clear condition for use: close windows for a specific folder path. It does not explicitly mention alternatives such as close_all_folder_windows for closing all windows, but the targeted-scope wording makes the intended use reasonably obvious.

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

find_duplicate_filesFind duplicate filesA

Recursively scan a folder for duplicate files (same content, by hash - not just same name) and report each duplicate group's file name, every location, and the count, plus total wasted disk space. Stops after 20000 files scanned on a very large tree and reports truncated: true if it hit that cap.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFolder to scan, or a friendly name like "documents"

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations at all, the description carries the full behavioral burden and succeeds: it discloses the hash-based comparison method, that the scan is recursive, what it reports (file name, every location, count, wasted disk space), and the 20000-file truncation cap with the truncated:true flag. This is unusually thorough for behavior disclosure.

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

Conciseness4/5

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

Two dense sentences with the core purpose front-loaded and supporting detail (output contents, truncation behavior) following. No wasted words, though the sentence is slightly long; still well within an appropriate size for the information conveyed.

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?

Despite having no output schema and no annotations, the description explains the return value shape (per-group file name, locations, count, wasted space) and the truncation edge case. The one friendly-name resolution behavior lives in the schema. For a single-parameter scanning tool, this is essentially complete.

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

Parameters3/5

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

Schema description coverage is 100% — the path parameter already documents 'Folder to scan, or a friendly name like documents'. The description adds no additional parameter-level detail beyond what the schema provides, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a specific verb (recursively scan), a specific resource (folder for duplicate files), and the matching criterion ('same content, by hash - not just same name'). This clearly differentiates it from sibling tools like list_folder_contents, which would only enumerate files.

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

Usage Guidelines3/5

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

The description makes the tool's purpose evident (finding content-based duplicates) and explicitly rules out name-only matching, which helps an agent decide when it applies. However, it never names an alternative tool or states explicit when-not-to-use conditions, so usage guidance is implied rather than direct.

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

focus_appBring app window to frontA

Show and switch focus to an app's window (un-minimizes it if needed).

ParametersJSON Schema
NameRequiredDescriptionDefault
appYesFriendly app name or process name
pidNoProcess ID to pick a specific window when more than one window of this app is open. Omit it first - if there are multiple matches, the tool lists their PIDs and titles so you can retry with the right one.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the disclosure burden. It does disclose two behaviors—bringing the window into view and un-minimizing—which is useful. However, it does not describe failure behavior when the app is not running or when no matching window exists, leaving a nontrivial behavioral gap for an unannotated tool.

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

Conciseness5/5

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

The description is a single sentence with no wasted words. The main action is front-loaded and the useful un-minimize qualifier is efficiently tucked into a parenthetical.

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

Completeness3/5

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

For a two-parameter tool, the description plus the detailed schema covers the basic call, but the lack of any pointer to sibling tools—especially open_app and focus_folder_window—and the unstated precondition that the app is already running leave the context slightly incomplete.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3; the description itself adds no parameter-level detail. The pid parameter is already well documented in the schema, including the guidance to omit it first and retry with a PID when multiple matches occur.

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

Purpose5/5

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

The description uses a specific verb ('Show and switch focus') plus a clear resource ('an app's window'), and adds a useful behavioral qualifier: un-minimizes it if needed. It differentiates from the sibling focus_folder_window because the target is explicitly an app window rather than a folder window.

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

Usage Guidelines3/5

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

The intended use is implied by the verb 'focus' and the target 'app window', but the description never says when not to use it, that the app must already be running, or that open_app or focus_folder_window should be chosen for launching apps or focusing folder windows. No explicit alternatives or exclusions are given.

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

focus_chrome_tabSwitch to Chrome tabA

Search open Chrome tabs by title and switch to the matching one, bringing Chrome to the front.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexNoTab index to pick a specific one when the query matches more than one open tab. Omit it first - if there are multiple matches, the tool lists their indices and titles so you can retry with the right one.
queryYesText to match against open tab titles, e.g. "linkedin"

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the main behavior: searching by title, switching tabs, and bringing Chrome to the front. However, it does not describe what happens on no match, and the only multiple-match behavior is documented in the schema rather than the description.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler. It communicates the core action and effect efficiently, and the schema handles parameter detail separately.

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

Completeness4/5

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

For a simple focus action, the description plus the rich index parameter documentation is largely sufficient. The main missing piece is explicit no-match/error behavior, but an agent can reasonably infer the outcome from the stated search-and-switch workflow.

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

Parameters3/5

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

Schema description coverage is 100%, and both 'query' and 'index' parameters already have clear, detailed descriptions. The tool description adds no parameter-specific meaning, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the action ('search open Chrome tabs by title and switch to the matching one') and the side effect ('bringing Chrome to the front'). This distinguishes it from siblings like open_chrome_tab or close_chrome_tab, even without naming them.

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

Usage Guidelines3/5

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

Usage is implied: use this when you want to focus an already-open Chrome tab. However, the description does not explicitly state when to prefer this over open_chrome_tab, focus_app, or list_chrome_tabs, nor does it mention exclusions such as Chrome not running.

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

focus_folder_windowBring folder window to frontA

Show and switch focus to an open File Explorer window for the given folder (un-minimizes if needed).

ParametersJSON Schema
NameRequiredDescriptionDefault
hwndNoWindow handle (hwnd) to pick a specific window when more than one Explorer window shows this path. Omit it first - if there are multiple matches, the tool lists their hwnds so you can retry with the right one. Get it from list_open_folders or the error message.
pathYesFolder path, or a friendly name like "documents"

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It discloses that the tool targets an open window and un-minimizes if needed, and the hwnd parameter description reveals that ambiguous matches produce a list of hwnds for retry. This is adequate for a simple, non-destructive focus action.

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 main description is one focused sentence with no filler. The schema's hwnd explanation is longer but purposeful, providing necessary retry guidance without unnecessary verbosity.

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

Completeness4/5

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

The definition covers the required path, optional hwnd disambiguation, and what happens when multiple windows match. It does not explicitly state behavior when no matching window exists or describe return values, but these are minor gaps for a simple focus action with no output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The path and hwnd parameters are already well documented in the schema, including friendly names and retry behavior. The main description adds no additional parameter-level meaning.

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

Purpose5/5

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

The description states a clear verb and resource: 'Show and switch focus to an open File Explorer window for the given folder (un-minimizes if needed).' It distinguishes itself from siblings like open_path and minimize_folder_window by emphasizing an existing window and un-minimizing behavior.

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

Usage Guidelines4/5

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

The description clearly implies this is for already-open File Explorer windows, and the hwnd guidance provides a concrete workflow for ambiguous cases. However, it does not explicitly name alternatives or state when not to use this tool versus open_path or focus_app.

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

list_chrome_profilesList Chrome profilesA

List Chrome browser profiles configured on this machine (name + directory, marks which was last active).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden. The verb 'list' strongly implies a read-only operation without mutation, and the details about output (name, directory, last active) set expectations. It doesn't explicitly state that no profiles are modified, but the non-destructive nature is clearly implied. It could mention that it requires no special permissions, but this is minor for a local enumeration tool.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the primary action ('List Chrome browser profiles') and includes necessary output details without any filler. Every word adds value, making it well-structured and concise.

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, zero-parameter, no-output-schema tool, the description is complete. It tells the agent exactly what the tool returns (name, directory, last active) and implies the result is a list. There is no missing information that an agent would need to invoke it correctly.

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

Parameters4/5

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

The input schema has zero parameters, and the description correctly implies that no input is needed. Since there are no parameters to document, the description does not need to add parameter-level meaning, and the baseline of 4 for zero-parameter tools applies.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'Chrome browser profiles configured on this machine', and specifies the output fields (name + directory, last active). This unambiguously differentiates it from the sibling list_chrome_tabs, since it targets profiles rather than tabs.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like open_chrome_profile or list_chrome_tabs. It does not state any exclusions, prerequisites, or scenarios where another tool would be more appropriate. The usage context is left entirely to the agent's inference.

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

list_chrome_tabsList Chrome tabsA

List every open tab in Chrome (index + title). Operates on the first Chrome window if more than one is open.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It clearly conveys the read-only nature of the operation ('List'), discloses the output shape ('index + title'), and surfaces the notable multi-window behavior ('Operates on the first Chrome window'). This is solid behavioral disclosure for a simple list tool.

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

Conciseness5/5

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

Two short sentences with no filler. The core action and return values are front-loaded, followed immediately by the key behavioral caveat. 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 zero-parameter, simple read-only tool, the description covers the essential context: what it lists, what is returned, and the first-window limitation. There is no output schema, so including the return format in the description is valuable and sufficient.

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 baseline for no parameters is 4. There is no parameter schema to clarify, and the description does not need to add parameter semantics since none exist.

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

Purpose5/5

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

The description uses a specific verb ('List'), names the exact resource ('every open tab in Chrome'), and tells the agent what is returned ('index + title'). It also clarifies the scope limitation to the first Chrome window, which distinguishes it from generic tab operations and sibling tools.

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

Usage Guidelines3/5

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

The description implies when to use the tool—when the agent needs a list of Chrome tabs with indices and titles—and provides the important scoping rule about the first window. However, it does not explicitly name alternatives or state when not to use it, such as when another Chrome window's tabs are needed or when a tab action like open/close/focus is required.

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

list_folder_contentsList folder contentsA

List the files and subfolders directly inside a folder (name, type, path, file size). Accepts a path or a friendly folder name like "documents".

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFolder path, or a friendly name like "documents"

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose that the operation lists direct children only and returns specific fields (name, type, path, file size), which gives insight into the output. However, it omits details like permission requirements, error behavior, or whether the operation is read-only (though listing is inherently non-destructive). For a simple read operation, this is borderline acceptable, but the lack of annotation coverage makes a 3 appropriate.

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

Conciseness5/5

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

The description is a single, compact sentence that immediately states the core action and the parameters. It front-loads the primary capability and includes the salient return fields without extraneous detail. Every phrase earns its place.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, no output schema), the description provides sufficient context: it states the scope (direct children), the return fields (name, type, path, file size), and the input flexibility (path or friendly name). It lacks any mention of error conditions or non-recursive behavior explicitly stated, but the phrase 'directly inside' conveys non-recursion. For a basic listing tool, this is nearly complete; a 4 reflects minor missing details like error handling or permission needs.

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% — the parameter 'path' is described as "Folder path, or a friendly name like \"documents\"" and the tool description repeats this exact idea. The description adds no new semantic meaning beyond what the schema already provides. Per the baseline rule for high schema coverage, a 3 is appropriate; the description does not compensate because it only echoes the schema.

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

Purpose5/5

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

The description uses a clear verb-resource pair ("List the files and subfolders directly inside a folder") and explicitly scopes it to direct children, which distinguishes it from siblings like list_open_folders (which lists open windows) and find_duplicate_files (which searches for duplicates). The mention of returning name, type, path, and file size further specifies what the tool does.

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

Usage Guidelines4/5

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

The description says it accepts both a path and a friendly folder name, which gives some context on inputs. However, it does not explicitly state when to use this tool versus alternatives or when not to use it. The sibling context (e.g., list_open_folders, find_duplicate_files) makes the distinction inferable, but the description itself lacks explicit routing guidance. A 4 is reasonable because the context is clear, though exclusions are not spelled out.

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

list_open_foldersList open folder windowsA

List every currently open File Explorer folder window (path, title, hwnd).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses what the tool returns (path, title, hwnd) and the scope ('every currently open'), which strongly implies a read-only snapshot. It does not explicitly state 'no side effects,' but the verb 'list' and absence of mutation language make the behavior sufficiently clear.

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

Conciseness5/5

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

The description is a single sentence that front-loads the action and resource, then lists the exact output fields. Every word earns its place, with no filler or repetition.

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

Completeness5/5

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

For a zero-parameter, no-output-schema tool, the description is complete: it specifies the exact object being listed, the scope ('every currently open'), and the three return fields. The agent has everything needed to invoke the tool correctly and interpret its result.

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 is empty, so the baseline is 4. The description does not need to explain parameter behavior because there are none to document.

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

Purpose5/5

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

The description uses a specific verb ('List'), a precise resource ('File Explorer folder window'), and a scope ('every currently open'), and it names the return fields (path, title, hwnd). This clearly distinguishes it from siblings like list_folder_contents, which lists folder contents, and list_running_apps, which lists applications.

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

Usage Guidelines3/5

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

The description implies when to use the tool—when you need to enumerate currently open File Explorer folder windows—but it does not explicitly state when not to use it or name alternatives. The agent must infer the distinction from sibling tool names rather than receiving direct routing guidance.

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

list_running_appsList running applicationsA

List currently running applications that have a visible window.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral disclosure burden. It does add a meaningful filter—only applications with a visible window—but it does not explain edge cases such as minimized apps, system utilities, or what the returned data looks like.

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

Conciseness5/5

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

The description is a single efficient sentence that is front-loaded with the action and subject. Every word adds value, and there is no unnecessary detail.

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

Completeness4/5

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

For a simple read-only, no-parameter tool, the description is largely sufficient. However, the absence of an output schema and the mild ambiguity of 'visible window' leave some room for interpretation about what exactly will be returned.

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

Parameters4/5

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

The tool has no parameters, so the baseline of 4 applies. There are no parameter semantics that the description would need to clarify.

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 verb ('List') and a clear resource ('currently running applications') plus a scope qualifier ('that have a visible window'). This clearly communicates what the tool does and distinguishes it from sibling tools like list_open_folders or list_chrome_tabs.

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

Usage Guidelines2/5

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

No guidance is provided about when to choose this tool over alternatives such as system_info or list_open_folders. The visible-window qualifier gives some context, but there is no explicit when-to-use or when-not-to-use guidance.

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

maximize_appMaximize app windowA

Maximize an app's window and bring it to front.

ParametersJSON Schema
NameRequiredDescriptionDefault
appYesFriendly app name or process name
pidNoProcess ID to pick a specific window when more than one window of this app is open. Omit it first - if there are multiple matches, the tool lists their PIDs and titles so you can retry with the right one.

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden, but it only states the main effect and does not disclose side effects, multi-window behavior, or failure modes. The only extra behavioral detail, listing PIDs and titles on ambiguous matches, lives in the pid parameter schema rather than the description.

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

Conciseness5/5

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

The description is a single ten-word sentence with no filler or repetition. It front-loads the primary action ('Maximize') and adds the secondary behavior ('bring it to front') efficiently.

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

Completeness3/5

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

The tool is simple and its two parameters are fully documented, but the description omits return behavior, error conditions, and guidance on when to prefer this over similar window tools. Since there is no output schema and no annotations, some of this information is missing entirely.

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

Parameters3/5

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

Schema description coverage is 100%, and both parameters already have meaningful descriptions, especially pid with its multi-match retry guidance. The tool description adds no parameter-level meaning beyond what the schema already provides, so the baseline score of 3 applies.

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

Purpose5/5

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

The description uses a specific verb ('Maximize') and resource ('an app's window') and adds 'bring it to front,' which clearly distinguishes it from siblings like minimize_app and focus_app. An agent can tell what this tool does without inspecting 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 Guidelines3/5

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

The description implies when to use the tool by stating its action, but it provides no explicit when-to-use or when-not-to-use guidance and names no alternatives such as focus_app or minimize_app. The intended context must be inferred rather than stated.

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

minimize_appMinimize app windowC

Minimize an app's window.

ParametersJSON Schema
NameRequiredDescriptionDefault
appYesFriendly app name or process name
pidNoProcess ID to pick a specific window when more than one window of this app is open. Omit it first - if there are multiple matches, the tool lists their PIDs and titles so you can retry with the right one.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states the action 'minimize' without mentioning side effects, error handling, or the multiple-window behavior (which is only in the pid schema description). The agent is left unaware of what happens when no window is found or when multiple windows exist.

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

Conciseness4/5

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

The description is one concise sentence that directly states the action. While it is minimal, it avoids unnecessary verbosity and is appropriately sized for a simple tool. It could be slightly more informative without becoming verbose, but it does not waste words.

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

Completeness3/5

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

For a simple action, the description is minimally adequate. The schema fills in parameter details, but the description lacks usage context (e.g., when to use over close_app, behavior with multiple windows) and does not mention any return values or error conditions. Given the absence of annotations and output schema, a richer description would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema sufficiently documents both parameters (app and pid) including guidance for the pid parameter. The description adds no additional meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb ('minimize') and resource ('an app's window'), making the tool's purpose immediately clear. It distinguishes from siblings like focus_app and maximize_app by the action, and from minimize_folder_window by the resource type. However, it does not explicitly call out that it targets app windows as opposed to folder windows, though the name implies it.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as close_app, focus_app, or maximize_app. The only usage instruction ('Omit it first...') appears in the pid parameter schema, not in the description, and concerns parameter selection rather than tool selection. An agent must infer the appropriate context.

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

minimize_folder_windowMinimize folder windowA

Minimize an open File Explorer window for the given folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
hwndNoWindow handle (hwnd) to pick a specific window when more than one Explorer window shows this path. Omit it first - if there are multiple matches, the tool lists their hwnds so you can retry with the right one. Get it from list_open_folders or the error message.
pathYesFolder path, or a friendly name like "documents"

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral disclosure; it clearly communicates the core behavior of minimizing a window. However, it does not describe what happens when the window is not found, or the multi-match behavior with hwnds, although the input schema's hwnd description partially fills that gap. The absence of side-effect detail is a moderate gap for a state-changing operation.

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

Conciseness5/5

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

The description is a single, focused sentence with no filler. It front-loads the action and object, making it immediately scannable and easy for an agent to parse.

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

Completeness4/5

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

For a simple window-minimizing action, the description plus the detailed hwnd parameter guidance is nearly complete. There is no output schema or mention of failure modes, but the tool's low complexity and the schema's behavior notes make it unlikely an agent will be badly misled.

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 both parameters well, including the rich hwnd retry flow. The description itself adds little parameter meaning beyond 'given folder,' so the baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb ('Minimize') and resource ('an open File Explorer window for the given folder'), making the tool's purpose clear. It does not explicitly distinguish itself from siblings like minimize_app or focus_folder_window, but the 'File Explorer window' phrasing narrows the scope enough to avoid major confusion.

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

Usage Guidelines4/5

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

The description provides clear context: use this when you want to minimize an existing File Explorer window for a specific path. It does not mention alternatives or exclusions, but the single-purpose nature of 'Minimize an open File Explorer window for the given folder' gives sufficient situational guidance.

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

open_appOpen applicationA

Launch an application on the laptop. Known friendly names: chrome, google_chrome, edge, msedge, firefox, word, winword, excel, powerpoint, outlook, notepad, explorer, file_explorer, calculator, calc, paint, cmd, command_prompt, powershell, vscode, vs_code, spotify, task_manager. Any other value is tried as a literal .exe name.

ParametersJSON Schema
NameRequiredDescriptionDefault
appYesFriendly app name (e.g. "chrome", "word") or an .exe name
targetNoOptional argument to open with the app, e.g. a URL or file path

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose a useful behavioral trait: unknown values are attempted as literal .exe names. However, it does not say what happens on failure, whether launching is asynchronous, or whether target arguments apply to all apps.

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 front-loaded with the core action and then gives a practical vocabulary list plus fallback rule. Every sentence earns its place, and the length is justified by the useful enumeration.

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

Completeness4/5

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

For a simple two-parameter launch tool with no output schema, the description plus the input schema covers what an agent needs to invoke it correctly. Minor omissions like error behavior and target applicability prevent a perfect score.

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 already describes both parameters, so the baseline is 3. The description adds genuine value by enumerating accepted friendly names and clarifying the fallback behavior for the app parameter, which helps an agent pick valid inputs.

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

Purpose5/5

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

The description uses a specific verb and resource ('Launch an application') and clearly distinguishes itself from path-opening siblings like open_path and open_path_with by defining its input as application names or .exe values. The known-name list tightens the scope further.

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

Usage Guidelines3/5

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

The description implies when to use the tool: to launch applications by friendly name or .exe. However, it does not explicitly mention when to prefer alternatives like open_path or open_path_with, nor does it state exclusions, so usage guidance remains implicit rather than explicit.

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

open_chrome_profileOpen Chrome profileA

Open a new Chrome window under a specific profile. Matches by profile name (e.g. "Work") or exact directory (e.g. "Profile 1") - use list_chrome_profiles to see what's available. Reliable when Chrome is not already running; if Chrome is already open, it verifies whether a genuinely new profile-bound window appeared and returns an error (rather than a false success) if Chrome just opened another window in the profile that was already active.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileYesProfile name or directory to open

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It adds valuable non-obvious detail: when Chrome is already running, the tool verifies a genuinely new profile-bound window appeared and returns an error rather than a false success. This goes beyond the schema, though it stops short of describing exact return values.

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

Conciseness4/5

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

The description is three sentences long and every sentence earns its place: purpose, matching guidance, and the reliability edge-case. It is somewhat wordy but appropriately so given the non-obvious behavior when Chrome is already open.

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 single-parameter action with no output schema, the description covers the parameter, matching semantics, discovery prerequisite, and failure behavior. It does not spell out the exact success/error response shape, but that is not critical for a simple open action.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaning beyond the schema by explaining matching by profile name or exact directory, giving concrete examples like 'Work' and 'Profile 1', and pointing to list_chrome_profiles.

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 and resource: it opens a new Chrome window under a specified profile. It clearly distinguishes itself from siblings like open_chrome_tab and list_chrome_profiles by focusing on launching a profile-bound window.

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

Usage Guidelines4/5

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

The description gives clear context: use profile name or exact directory, and consult list_chrome_profiles to discover available profiles. It does not explicitly contrast with open_chrome_tab or state when not to use it, but the usage context is unambiguous.

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

open_chrome_tabOpen new Chrome tabA

Open a new Chrome tab, optionally navigating to a URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to open (opens a blank new tab if omitted)

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description is the sole behavioral source. It accurately conveys the core behavior and the optional blank-tab behavior, but it does not disclose whether Chrome is launched if not running, whether the window is focused, or how errors are handled. Adequate for a simple tool but not fully transparent.

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

Conciseness5/5

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

A single sentence that is direct, front-loaded, and free of filler. Every word contributes to understanding the action and the optional parameter behavior.

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 one optional parameter and no output schema, the description and schema together provide enough information to invoke it correctly. Minor gaps remain around preconditions and result behavior, but they are not blocking for this simple operation.

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

Parameters3/5

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

Schema coverage is 100% and the only parameter, url, already has a clear description. The tool description just paraphrases the schema ('optionally navigating to a URL') without adding new semantic detail, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the action ('Open') and the resource ('a new Chrome tab'), and the optional URL navigation adds precision. The phrase 'new tab' distinguishes it from sibling operations like close, focus, or scroll on Chrome tabs.

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

Usage Guidelines3/5

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

The intended use is implied: when the user wants to open a new Chrome tab, possibly with a URL. However, it does not explicitly guide the agent on when to prefer this over related tools such as open_chrome_profile or focus_chrome_tab, and it offers no exclusion criteria.

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

open_pathOpen file or folderA

Open a file or folder using the default Windows handler (Explorer for folders). Also accepts friendly names for standard folders: documents, desktop, downloads, pictures, music, videos, home.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute/relative filesystem path, or a friendly folder name like "documents"

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does mention that it uses the default Windows handler and that Explorer is used for folders, which is useful. However, it doesn't describe potential side effects like window focus changes, or whether it returns success/failure, or what happens if the path doesn't exist. It's adequate but not rich for a tool with zero annotation support.

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 tightly packed sentences with the core action and handler front-loaded, followed by a useful list of friendly names. Every word earns its place, and there is no redundancy or fluff.

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

Completeness4/5

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

For a simple one-parameter open command with no output schema and no annotations, the description covers purpose, input semantics, and the default handler. It doesn't mention error handling or return values, but these are arguably not critical for this operation. The description is essentially complete for the tool's complexity.

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

Parameters3/5

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

The schema description covers the `path` parameter fully, including both absolute/relative paths and friendly names. Since schema coverage is 100%, the baseline is 3. The description adds no additional parameter semantics beyond restating the friendly names, so it doesn't exceed the baseline.

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

Purpose5/5

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

The description states a specific verb ('Open') and resource ('file or folder'), and clarifies it uses the default Windows handler (Explorer for folders). This clearly differentiates it from siblings like `open_path_with` and `open_app`, so an agent can distinguish without inspecting other tools.

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

Usage Guidelines4/5

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

It clearly explains the tool's behavior (default handler) and the acceptable inputs (paths and friendly names). While it doesn't explicitly say 'use this instead of open_path_with', the contrast is implicit—this uses default handler, the sibling presumably uses a specific application. This is clear context but lacks explicit exclusion or alternative selection criteria.

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

open_path_withOpen file/folder with a specific appA

Open a file or folder using a SPECIFIC application (e.g. open a folder in VS Code, or a file in Chrome), instead of the OS default handler. Both path and app are required - if the user did not say which app to use, ask them before calling this tool rather than guessing. Use open_path instead if no specific app was requested.

ParametersJSON Schema
NameRequiredDescriptionDefault
appYesApp to open it with, e.g. "vscode", "chrome" - required, do not guess
pathYesFile/folder path, or a friendly folder name like "documents"

TDQS

A4.4/5.0
Behavior4/5

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

There are no annotations, so the description carries the behavioral burden. It clearly conveys that the tool launches a specific application rather than the OS default handler and that it requires an explicit app choice. It does not discuss side effects or failure behavior, but for a straightforward open action this is sufficient context.

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

Conciseness5/5

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

The description is three sentences with no wasted content. It front-loads the core purpose and examples, then covers the required-app caveat and the alternative tool. Every sentence earns its place.

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

Completeness4/5

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

For a low-complexity tool with two fully documented required parameters, the description covers purpose, selection criteria, parameter constraints, and the sibling alternative. It does not explain return values, but none are critical for invoking an open-file-with-app action.

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 both required parameters. The description reinforces the requirement and adds the 'ask rather than guess' guidance, but it does not meaningfully extend 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 specific verb and resource ('Open a file or folder using a SPECIFIC application') with concrete examples. It also distinguishes itself from the OS default handler and sibling tool open_path by emphasizing the explicit app requirement.

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

Usage Guidelines5/5

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

The description explicitly says when to call this tool (when a specific app is requested) and when not to (no specific app requested, use open_path instead). It also tells the agent to ask the user rather than guess, which fully resolves the ambiguity between this tool and its sibling.

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

restart_graphics_driverRestart graphics driverA

Fixes a frozen, stuck, black, or glitched screen WITHOUT closing apps or losing work. Sends the built-in Windows hotkey Ctrl+Shift+Win+B, which tells the graphics driver to reinitialize. Call this whenever the user says their system/screen is frozen, stuck, unresponsive, or visually glitching and a graphics reset is a reasonable first thing to try. The screen will flicker or go black for a couple of seconds - that is expected.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries full responsibility for behavioral transparency. It discloses that the tool sends a built-in Windows hotkey, that the driver reinitializes, and that the screen will flicker or go black briefly as an expected side effect. It also reassures that apps and work are preserved.

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 concise and front-loaded, stating the main benefit first, then the mechanism, then when to call it, then the expected side effect. Every sentence carries necessary information and no filler 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?

For a zero-parameter, no-output-schema tool, the description covers the essential context: what problem it solves, how it solves it, when to use it, and what side effects to expect. The agent has enough information to invoke it appropriately.

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 input schema has zero parameters, so there is no parameter semantics to add, earning the baseline of 4. The description's focus on the action and effect is appropriate because there is nothing to configure.

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

Purpose5/5

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

The description clearly states the tool fixes frozen, stuck, black, or glitched screens via a graphics driver restart, and specifies the exact mechanism (Ctrl+Shift+Win+B). It is easily distinguished from sibling tools like restart_pc or open_app because it targets graphics resets specifically.

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

Usage Guidelines4/5

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

It gives explicit usage guidance: call this whenever the user reports a frozen, stuck, unresponsive, or visually glitching screen and a graphics reset is a reasonable first step. It does not mention exclusions or alternatives, so it stops short of a 5, but the context is clear.

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

restart_pcRestart PCA

Schedule a restart of this machine. This server does NOT auto-start after reboot, so remote control ends the same way it would with shutdown_pc until someone starts it again locally. Requires confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true. Safety gate against accidental calls.
messageNoMessage shown to the user before restart
delaySecondsNoDelay in seconds before it fires (default 60, min 15, max 3600). Call cancel_shutdown before it elapses to abort.

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description takes on the full burden of disclosing consequences. It clearly states that the server does NOT auto-start after reboot, that remote control will be lost until local interaction, and that confirm:true is required as a safety gate.

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

Conciseness4/5

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

Three sentences, front-loaded with the core action, and each sentence adds behavioral value. 'Requires confirm: true' is slightly redundant with the schema but is short and reinforces a critical safety requirement.

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 mutating, potentially disruptive tool with no annotations, the description covers the essential consequences and safety gate. It could more explicitly reference cancel_shutdown as an abort path, but the schema already covers that in delaySeconds.

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%: every parameter already has a meaningful description, including the delay range and the pointer to cancel_shutdown. The description only repeats the confirm requirement that is already in the schema, adding no new parameter-level meaning.

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

Purpose5/5

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

States a specific action and resource: 'Schedule a restart of this machine.' It also distinguishes itself from shutdown_pc by explaining that remote control ends the same way after a restart until someone starts the machine locally.

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

Usage Guidelines4/5

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

Gives clear context that this is a restart and warns about the post-reboot consequence that matches shutdown_pc. It does not explicitly say 'use shutdown_pc instead when...', but it gives enough framing for an agent to understand the operational trade-off.

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

scroll_chrome_pageScroll Chrome pageA

Scroll the active page in the first Chrome window up or down by simulating PageUp/PageDown key presses.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountNoNumber of page-scrolls to send (default 3)
directionYesDirection to scroll

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It does reveal the mechanism (simulated PageUp/PageDown presses) and the target scope (first Chrome window, active page). However, it does not clarify whether Chrome needs to be focused first, how 'first window' is determined, or how the tool behaves if no Chrome window/page is available.

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

Conciseness5/5

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

A single, front-loaded sentence states the action, target, direction options, and mechanism with no filler. Every phrase contributes to understanding the tool.

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

Completeness4/5

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

For a simple two-parameter tool with a fully documented schema, the description is nearly sufficient. The main missing context is the behavioral precondition about focus and 'first window' ordering, but the action, scope, direction, and mechanism are all present.

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

Parameters3/5

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

The input schema fully documents both parameters, including the direction enum and the amount bounds with a default. The description adds no additional parameter semantics beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

The description names a specific action (scroll), a specific target (active page in first Chrome window), and the mechanism (PageUp/PageDown key presses). It clearly distinguishes this from sibling Chrome tools like open_chrome_tab or focus_chrome_tab, which handle tab management rather than scrolling.

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

Usage Guidelines3/5

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

The description implies applicability by specifying 'active page in the first Chrome window,' but it does not explicitly state when to prefer this tool over alternatives or mention exclusions such as requiring Chrome to be focused. No alternative scroll tool exists among the siblings, so the omission is less harmful, but the usage condition remains implicit.

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

shutdown_pcShut down PCA

Schedule a full shutdown of this machine. Ends ALL remote control until someone is physically at the machine to turn it back on. Requires confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true. Safety gate against accidental calls.
messageNoMessage shown to the user before shutdown
delaySecondsNoDelay in seconds before it fires (default 60, min 15, max 3600). Call cancel_shutdown before it elapses to abort.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It clearly warns about the major side effect: 'Ends ALL remote control until someone is physically at the machine to turn it back on.' It also states the safety requirement 'Requires confirm: true.' It does not mention possible data loss, but the core irreversible consequence is transparently disclosed.

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

Conciseness5/5

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

The description is two sentences with no wasted words. The primary action is front-loaded ('Schedule a full shutdown of this machine'), followed by the critical warning and the confirmation requirement. Every element earns its place.

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

Completeness4/5

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

For a high-impact, destructive action with no annotations and no output schema, the description covers the core facts an agent needs: it schedules a full shutdown, has an irreversible remote-control consequence, and requires confirmation. It could additionally mention that cancel_shutdown can abort before the delay elapses, but that is already in the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description only repeats 'Requires confirm: true,' which the schema already states. It adds no additional meaning for message or delaySeconds beyond what the parameter descriptions already provide.

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 and resource: 'Schedule a full shutdown of this machine.' It also distinguishes itself from siblings like restart_pc by emphasizing that it ends ALL remote control until physical intervention, which clearly separates shutdown from reboot or cancellation.

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

Usage Guidelines3/5

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

The severe consequence 'Ends ALL remote control until someone is physically at the machine' implies this should only be used when intentional and physical access is available. However, it does not explicitly say when to choose this over restart_pc or when not to use it, and the cancel_shutdown alternative is only mentioned in the schema parameter, not the description.

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

system_infoSystem infoA

Report this machine's OS, CPU, RAM (total/used/free/%), and disk usage per drive.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. The verb 'Report' implies a read-only, non-destructive operation, which is a useful behavioral cue. However, it doesn't disclose output format, potential delays, or whether elevated privileges are required, leaving some behavior implicit.

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

Conciseness5/5

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

The description is a single sentence, front-loaded with the verb and resource, and uses a compact enumeration of return categories. Every word earns its place and there is no filler.

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

Completeness4/5

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

For a parameterless tool, the description is nearly complete: it enumerates exactly what categories are reported. It omits the output format, but that's a minor gap given there is no output schema and the categories are self-explanatory.

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 input schema has zero parameters, so there are no parameter semantics to document; baseline 4 applies. The description appropriately avoids inventing parameters or adding schema-level details.

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

Purpose5/5

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

The description starts with a specific verb ('Report') and clearly names the resource (this machine) and the scope (OS, CPU, RAM breakdown, disk usage per drive). This fully distinguishes it from sibling tools that manage apps, folders, or Chrome.

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

Usage Guidelines4/5

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

The description establishes a clear context: use this tool when you need OS/hardware status of the local machine. It doesn't explicitly mention exclusions or alternatives, but the sibling list contains no other system-info tool, so the intended usage is unambiguous.

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. 27 tool updatesv1.0.0
    • First observedcancel_shutdown
    • First observedclose_all_folder_windows
    • First observedclose_app
    • First observedclose_chrome_tab
    • First observedclose_folder_window
    • First observedfind_duplicate_files
    • First observedfocus_app
    • First observedfocus_chrome_tab
    • First observedfocus_folder_window
    • First observedlist_chrome_profiles
    • First observedlist_chrome_tabs
    • First observedlist_folder_contents
    • First observedlist_open_folders
    • First observedlist_running_apps
    • First observedmaximize_app
    • First observedminimize_app
    • First observedminimize_folder_window
    • First observedopen_app
    • First observedopen_chrome_profile
    • First observedopen_chrome_tab
    • First observedopen_path
    • First observedopen_path_with
    • First observedrestart_graphics_driver
    • First observedrestart_pc
    • First observedscroll_chrome_page
    • First observedshutdown_pc
    • First observedsystem_info

TDQS

A3.8/5.0

Scored across 27 tools

Disambiguation5/5

Each tool targets a distinct resource-action pair: app launching/windowing, folder paths/windows, Chrome profiles/tabs, and system control are clearly separated. Even the three 'open' tools differ by target type (app name, default handler, specific app), and close/focus/minimize variants are unambiguous.

Naming Consistency5/5

Nearly all tools follow a verb_noun snake_case pattern (list_*, open_*, close_*, focus_*, minimize_*), with only system_info and open_path_with as minor deviations. The naming is highly predictable and makes the tool set easy to navigate.

Tool Count3/5

At 27 tools, this is on the heavy side, but the broad desktop-control scope justifies the count: app management, folder windows, Chrome control, and system power actions are all represented. A few niche tools (scroll_chrome_page, restart_graphics_driver) could be considered optional, making it feel slightly bloated.

Completeness4/5

The tool set covers the major desktop workflows: app launch/focus/window-state, folder browsing and window management, Chrome tab/profile control, and system shutdown/restart. Minor gaps exist—no maximize folder window, no way to pass command-line args to open_app—but nothing blocks the core use cases.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to seamlessly integrate with the Windows operating system, performing tasks such as file navigation, application control, UI interaction, and QA testing via the MCP protocol.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables remote control of a Windows desktop via MCP, including screenshots, mouse and keyboard, window management, PowerShell, files, services, registry, scheduled tasks, event log, and network checks.
    20 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables general-purpose Windows desktop automation via MCP tools: opening applications and URLs, taking screenshots, checking whether processes are running, and waiting.
    6
    MIT