Skip to main content
Glama
ryota-murakami

mac-mcp-server

mac-mcp-server

npm version License: MIT Node.js Version macOS

A macOS AppleScript MCP (Model Context Protocol) server that enables Claude Code and other AI assistants to automate macOS through AppleScript and JXA (JavaScript for Automation).

Overview

This MCP server provides 44 tools for comprehensive macOS automation, allowing AI assistants to:

  • Retrieve system information (hardware, battery, displays)

  • Manage applications (launch, quit, activate, list running apps)

  • Control windows (move, resize, focus, minimize)

  • Simulate keyboard and mouse input

  • Interact with UI elements via Accessibility APIs

  • Capture screenshots (auto-optimized for API compatibility)

  • Access clipboard and notifications

  • Control audio settings

  • Navigate menus and status bar items

The server communicates over stdio for seamless Claude Code integration and uses AppleScript/JXA for system automation.

Related MCP server: Automation MCP

Quick Start

Prerequisites

  • macOS 10.15 (Catalina) or later

  • Node.js 20.11.0 or later

Install from npm

npm install -g mac-mcp-server

Configure Claude Code

Add the following to your Claude Code MCP configuration (~/.claude.json or Claude Desktop settings):

{
  "mcpServers": {
    "mac-mcp-server": {
      "command": "npx",
      "args": ["-y", "mac-mcp-server"]
    }
  }
}

Restart Claude Code to load the MCP server.

Grant macOS Permissions

On first use, macOS will prompt you to grant required permissions. See the Permissions Guide below for details.

Tool Reference

System Information

Tool

Description

get_system_info

Retrieves macOS version, hardware model, processor, and memory

get_battery_status

Gets battery percentage and charging status (MacBooks)

get_display_info

Lists connected displays with resolution information

Audio Control

Tool

Description

get_volume

Gets current system volume (0-100)

set_volume

Sets system volume to specified percentage

get_mute_status

Checks if system audio is muted

set_mute

Mutes or unmutes system audio

Clipboard and Notifications

Tool

Description

get_clipboard

Reads current clipboard content (text, image, or files)

set_clipboard

Sets clipboard to specified text

send_notification

Displays a macOS notification with optional subtitle and sound

Application Management

Tool

Description

list_running_apps

Lists all running GUI applications with bundle IDs and PIDs

launch_app

Launches an application by name

quit_app

Gracefully quits an application

activate_app

Brings an application to the foreground

Finder Integration

Tool

Description

reveal_in_finder

Opens Finder and selects the specified file or folder

get_selected_files

Gets paths of currently selected files in Finder

get_finder_window_path

Gets the path of the frontmost Finder window

Window Management

Tool

Description

list_windows

Lists all visible windows with position and size

focus_window

Brings a specific window to the front

move_window

Moves a window to specified coordinates

resize_window

Resizes a window to specified dimensions

minimize_window

Minimizes a window to the Dock

Mouse Control

Tool

Description

click

Performs a mouse click (left, right, or middle button)

double_click

Performs a double-click

move_mouse

Moves the cursor without clicking

drag

Performs a drag operation from start to end coordinates

Keyboard Input

Tool

Description

type_text

Types text at the current cursor position

press_key

Presses a key by name (Enter, Tab, Escape, F1-F12, etc.)

key_combination

Presses a focused-app/menu key combination (not guaranteed for OS-global hotkeys)

Scroll and Navigation

Tool

Description

scroll

Scrolls in a specified direction (up, down, left, right)

scroll_to_element

Scrolls until a UI element becomes visible

Screenshots

Tool

Description

take_screenshot

Captures screen, display, window, or region as PNG/JPEG

Screenshot Features:

  • Auto-resize: Screenshots are resized to max 1600px (configurable) for API compatibility

  • Auto-compress: File size limited to 1.8MB using JPEG compression when needed

  • Full resolution: Use rawFile: true for file output at full resolution

  • Disable processing: Set maxDimension: 0 and maxFileSize: 0 to disable all processing

UI Element Interaction

Tool

Description

get_ui_elements

Retrieves the UI element tree for an application

click_ui_element

Clicks a UI element by path

get_ui_element_value

Gets the value of a UI element

set_ui_element_value

Sets the value of an editable UI element

focus_ui_element

Sets keyboard focus to a UI element

Menu Bar Operations

Tool

Description

list_menu_items

Gets the menu hierarchy for an application

click_menu_item

Clicks a menu item by path (e.g., "File > Save")

get_menu_item_state

Gets enabled/checked state of a menu item

list_status_bar_items

Lists visible status bar items

click_status_bar_item

Clicks a status bar item to open its menu

click_status_bar_menu_item

Clicks a menu item within a status bar menu

get_menu_bar_structure

Gets complete menu bar hierarchy for a process

macOS Permissions

This server requires specific macOS permissions to function. The first time you use certain tools, macOS will prompt you to grant access.

Required Permissions

1. Accessibility

Required for: Keyboard input, mouse control, UI element interaction, window management

Grant access:

  1. Open System Settings > Privacy & Security > Accessibility

  2. Click the + button and add your terminal app (Terminal, iTerm2, or Claude Code)

  3. Toggle the switch to enable access

  4. Restart your terminal after granting permission

Quick access:

open "x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"

2. Automation

Required for: Controlling other applications (Finder, Safari, etc.)

Grant access:

  1. Open System Settings > Privacy & Security > Automation

  2. Find your terminal app in the list

  3. Enable checkboxes for target applications you want to control

  4. If prompted during first use, click OK to allow

Quick access:

open "x-apple.systempreferences:com.apple.preference.security?Privacy_Automation"

3. Screen Recording

Required for: Screenshots

Grant access:

  1. Open System Settings > Privacy & Security > Screen Recording

  2. Click the + button and add your terminal app

  3. Toggle the switch to enable access

  4. Restart your terminal after granting permission

Quick access:

open "x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture"

Troubleshooting Permissions

Issue

Solution

Permission added but not working

Restart your terminal app completely (Cmd+Q, then reopen)

App not appearing in permission list

Run the operation once to trigger the permission dialog

Permission still denied after granting

Remove the app from the list, restart, then re-add it

All permission issues persist

Restart macOS

"assistive access" error

Grant Accessibility permission specifically

"-1743" error code

Grant Automation permission for the target app

Screenshot returns black image

Grant Screen Recording permission and restart

Permission Checklist

Before using mac-mcp-server, verify these permissions are granted:

  • Accessibility - Terminal/Claude Code added and enabled

  • Automation - Target apps enabled under your terminal

  • Screen Recording - Terminal/Claude Code added and enabled

  • App restarted after granting permissions

Usage Examples

System Information

// Get system info
await get_system_info({})
// Returns: { macOSVersion: "15.0", hardwareModel: "MacBook Pro", ... }

// Get battery status
await get_battery_status({})
// Returns: { percentage: 85, isCharging: true, isDesktop: false }

Application Management

// List running applications
await list_running_apps({})
// Returns: [{ name: "Safari", bundleId: "com.apple.Safari", processId: 1234 }, ...]

// Launch an application
await launch_app({ name: 'Safari' })

// Quit an application
await quit_app({ name: 'Safari' })

Window Management

// List all windows
await list_windows({})

// Focus a specific window
await focus_window({ appName: 'Finder', windowIndex: 1 })

// Move a window
await move_window({ appName: 'Finder', x: 100, y: 100 })

// Resize a window
await resize_window({ appName: 'Finder', width: 800, height: 600 })

Keyboard and Mouse

// Type text
await type_text({ text: 'Hello, World!' })

// Press a key
await press_key({ key: 'enter' })

// Key combination (Cmd+C)
await key_combination({ modifiers: ['command'], key: 'c' })

// Note: key_combination uses AppleScript System Events. It is intended for
// focused-window shortcuts and app menu key equivalents, not OS-global hotkeys
// such as Electron globalShortcut/RegisterEventHotKey handlers. Prefer
// click_menu_item, click_status_bar_item, or an in-window shortcut for those.

// Click at coordinates
await click({ x: 500, y: 300 })

// Right-click
await click({ x: 500, y: 300, button: 'right' })

// Cmd+click
await click({ x: 500, y: 300, modifiers: ['command'] })

Screenshots

// Capture full screen (auto-resized and compressed for API)
await take_screenshot({})

// Capture to file (also auto-processed by default)
await take_screenshot({ filePath: '/tmp/screenshot.png' })

// Capture at full resolution (no processing)
await take_screenshot({ filePath: '/tmp/full.png', rawFile: true })

// Capture specific region
await take_screenshot({
  region: { x: 100, y: 100, width: 800, height: 600 },
})

// Custom compression settings
await take_screenshot({
  maxDimension: 1920, // Max 1920px
  maxFileSize: 1_000_000, // Max 1MB
  quality: 70, // JPEG quality 70
})

// Disable all processing for base64 output
await take_screenshot({ maxDimension: 0, maxFileSize: 0 })

UI Element Interaction

// Get UI element tree
await get_ui_elements({ appName: 'Safari', maxDepth: 3 })

// Click a button by path
await click_ui_element({
  appName: 'Safari',
  elementPath: 'window1/button1',
})

// Set text field value
await set_ui_element_value({
  appName: 'TextEdit',
  elementPath: 'window1/textfield1',
  value: 'New text',
})

Menu Operations

// List application menus
await list_menu_items({ appName: 'Finder' })

// Click a menu item
await click_menu_item({
  appName: 'Finder',
  menuPath: 'File > New Finder Window',
})

// Get menu item state
await get_menu_item_state({
  appName: 'Finder',
  menuPath: 'View > Show Path Bar',
})

Installation from Source

For development or customization:

git clone https://github.com/laststance/mac-mcp-server.git
cd mac-mcp-server
pnpm install
pnpm build

Then configure Claude Code to use the local build:

{
  "mcpServers": {
    "mac-mcp-server": {
      "command": "node",
      "args": ["/path/to/mac-mcp-server/dist/index.js"]
    }
  }
}

Development

Commands

Command

Description

pnpm build

Build for production

pnpm dev

Development mode (watch)

pnpm test

Run tests

pnpm typecheck

TypeScript type checking

pnpm lint

Lint code

pnpm lint:fix

Lint and auto-fix

pnpm format

Format code with Prettier

Project Structure

mac-mcp-server/
├── src/
│   ├── index.ts           # Entry point, MCP server setup
│   ├── lib/
│   │   ├── server.ts      # MCP server configuration
│   │   ├── executor.ts    # AppleScript execution
│   │   ├── permission.ts  # Permission checking and guidance
│   │   └── sanitizer.ts   # Input sanitization
│   └── tools/
│       ├── system.ts      # System information tools
│       ├── clipboard.ts   # Clipboard management
│       ├── notification.ts # Notification display
│       ├── audio.ts       # Audio control
│       ├── application.ts # Application lifecycle
│       ├── finder.ts      # Finder integration
│       ├── window.ts      # Window management
│       ├── mouse.ts       # Mouse control
│       ├── keyboard.ts    # Keyboard input
│       ├── scroll.ts      # Scroll operations
│       ├── screenshot.ts  # Screenshot capture
│       ├── ui-element.ts  # UI element interaction
│       └── menu.ts        # Menu bar operations
├── dist/                  # Compiled output
├── package.json
└── tsconfig.json

Security

This MCP server is designed with security in mind:

  • AppleScript-only execution: All automation is performed through AppleScript and JXA. No arbitrary shell commands are executed.

  • Input sanitization: All user inputs are sanitized before being included in AppleScript to prevent injection attacks.

  • No data persistence: The server does not store any user data or credentials.

  • Permission-gated access: All sensitive operations require explicit macOS permission grants.

  • Scoped automation: Each tool has a specific, limited purpose rather than providing general system access.

Requirements

Requirement

Version

macOS

10.15 (Catalina) or later

Node.js

20.11.0 or later

pnpm

10.28.0 (for development)

License

MIT

Author

Laststance.io

Contributing

Contributions are welcome. Please open an issue first to discuss what you would like to change.

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add some amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

Available Tools

44 tools
activate_appC

Brings an application to the foreground

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesApplication name to bring to foreground

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, description must disclose behavioral traits. It does not mention what happens if the app is not running, whether it activates all windows, or any permission requirements. The description is too brief for a mutation 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?

Single sentence, no wasted words. Efficient and to the point.

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

Completeness2/5

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

For a simple tool with one param and no output schema, the description is too minimal. It lacks details on success conditions, error states, and behavior when app is not running, making it 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 coverage is 100% and schema provides a clear description. The tool description adds no extra meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose4/5

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

Description clearly states the action: brings an application to the foreground. It is specific to activating an app, which distinguishes it from siblings like 'launch_app' (launching) and 'focus_window' (focusing a window). However, it does not explicitly differentiate from similar tools.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., 'focus_window' or 'click_ui_element'). Lacks context about prerequisites (e.g., app must be running?) or edge cases.

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

clickB

Performs a mouse click at specified coordinates. Supports left, right, middle buttons and modifier keys

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX coordinate for the click
yYesY coordinate for the click
buttonNoMouse button to click (left, right, or middle)left
modifiersNoModifier keys to hold during click

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It only describes the action without disclosing side effects, permissions, or limitations. A click can trigger various behaviors, but none are mentioned.

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

Conciseness5/5

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

A single, front-loaded sentence with no wasted words. Efficiently conveys the tool's core function and supported options.

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 click tool with complete schema and no output schema, the description is adequate. It could note that the tool returns nothing or is fire-and-forget, but the basic info is 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?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds nothing beyond echoing the schema, meeting the baseline of 3.

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 performs a mouse click at coordinates and supports various buttons and modifier keys. It is specific and distinguishes from sibling tools like double_click, drag, and scroll.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. With many click-related siblings (click_menu_item, click_ui_element, etc.), the description does not help the agent choose correctly.

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

click_menu_itemB

Clicks a menu item by path (e.g., "File > Save", "Edit > Copy")

ParametersJSON Schema
NameRequiredDescriptionDefault
appNameYesApplication name
menuPathYesMenu path (e.g., "File > Save As...")

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so description should disclose behavioral traits like side effects or error handling. It only states 'clicks' without mentioning what happens if the menu item or app does not exist, or if the action triggers destructive changes.

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

Conciseness5/5

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

The description is a single concise sentence with an example, no redundant words. It is front-loaded with the action and resource.

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

Completeness2/5

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

The tool has no annotations or output schema. The description does not cover return values, error cases (e.g., invalid path), or prerequisites (e.g., app must be active). This is insufficient for reliable use.

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% with descriptions for both parameters. The description adds an example for menuPath but does not provide new information beyond the schema. 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 clearly states the tool clicks a menu item by path, with examples like 'File > Save'. This distinguishes it from siblings like 'click' or 'click_ui_element' which are generic.

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

Usage Guidelines3/5

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

The description implies usage (click a menu item by path) but does not specify when not to use or compare with alternatives like 'click_ui_element'. No explicit exclusions or context.

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

click_status_bar_itemB

Clicks a status bar item to open its menu

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesStatus item description or process name

TDQS

B3.1/5.0
Behavior2/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 only states the action without disclosing prerequisites (e.g., item must be visible), side effects (menu remains open), or error handling.

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 sentence with zero waste. Highly efficient for the purpose.

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

Completeness3/5

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

For a simple click action, the description is minimally sufficient. However, it lacks context about return values (none), potential failures, or integration with other tools like list_status_bar_items.

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 already describes the 'identifier' parameter as 'Status item description or process name'. The description adds no further meaning, so 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 clearly states a verb and resource: 'Clicks a status bar item'. It distinguishes from siblings like 'click_menu_item' and 'click_ui_element', though 'click_status_bar_menu_item' is a related tool that could cause confusion.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'click_status_bar_menu_item' or 'click'. No prerequisites or exclusions are mentioned.

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

click_status_bar_menu_itemB

Clicks a menu item within a status bar menu

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesStatus item identifier
menuPathYesMenu item path

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose behavioral traits like whether clicking opens a menu or requires the status bar item to be already active.

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

Conciseness4/5

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

Very concise single sentence, no wasted words. However, could benefit from additional context without sacrificing conciseness.

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 click tool, the description is somewhat adequate, but it lacks context about preconditions (e.g., menu must be visible) and relation to sibling tools like list_status_bar_items.

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 has 100% coverage with descriptions for both identifier and menuPath. The tool description adds no extra meaning beyond what the schema already 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?

Description clearly states the action (clicks) and the target (menu item within a status bar menu), differentiating it from siblings like click_status_bar_item which clicks the status bar item itself.

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 usage guidance provided; no mention of when to use this tool versus alternatives or prerequisites such as the menu needing to be open.

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

click_ui_elementB

Clicks a UI element by path (e.g., "window1/button1")

ParametersJSON Schema
NameRequiredDescriptionDefault
appNameYesApplication name containing the element
elementPathYesPath to the element to click

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, and the description only states the basic action. It does not disclose behavior such as whether the element must be visible, what happens if the path is invalid, or if there are side effects. Minimal behavioral 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 concise (single sentence with an example) and front-loaded. No unnecessary words.

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 click tool, the description covers the essentials. However, it omits return value (no output schema) and error handling. Nearly complete given low 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?

Schema description coverage is 100%, so the description adds no extra parameter meaning. The example in the description provides some context but does not detail parameter formats or constraints beyond the schema.

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

Purpose5/5

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

The description clearly states the action (clicks), the resource (UI element), and the method (by path, with an example). It distinguishes from sibling tools like 'click' and 'click_menu_item' by specifying the use of a hierarchical path.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'click' or 'click_menu_item'. Does not mention prerequisites or context for use.

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

double_clickB

Performs a double-click at specified coordinates

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX coordinate for the double-click
yYesY coordinate for the double-click

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It does not disclose behavioral traits such as whether the mouse is moved first, what happens if coordinates are off-screen, or if there is any delay.

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

Conciseness4/5

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

One-sentence description is concise and front-loaded, but lacks structure (e.g., bullet points). For a simple tool, this is acceptable, though not exemplary.

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?

Given the simple nature of the tool and full schema coverage, the description is adequate but does not address prerequisites, return values, or potential side effects. No output schema to rely on.

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

Parameters3/5

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

Schema has 100% description coverage for 'x' and 'y', providing basic coordinate semantics. The description adds no additional meaning beyond repeating 'specified coordinates'.

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 ('double-click') and the target ('specified coordinates'), distinguishing it from sibling tools like 'click' (single click) and 'move_mouse'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'click' or 'move_mouse'. Could mention that double-click is often used to open files or select text.

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

dragC

Performs a drag operation from start to end coordinates

ParametersJSON Schema
NameRequiredDescriptionDefault
startXYesStarting X coordinate
startYYesStarting Y coordinate
endXYesEnding X coordinate
endYYesEnding Y coordinate

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior, but it merely states 'performs a drag operation' without details on mouse button state, duration, coordinate system, or error conditions. This is insufficient.

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

Conciseness3/5

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

The description is extremely concise (one sentence), but it sacrifices informative value. It earns a mid score for being brief yet complete for basic purpose, though more detail would improve it.

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

Completeness2/5

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

Given no output schema and no annotations, the description should provide richer context about the drag action, such as whether it simulates mouse down/move/up, how long it takes, or what happens on completion. It is 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 coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the property names and brief schema descriptions; no units, coordinate origin, or relationship between parameters is clarified.

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

Purpose4/5

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

The description clearly states the verb (performs) and resource (drag operation using start/end coordinates). It distinguishes from sibling tools like click or move_mouse by implying a continuous press-and-drag action, though not explicitly.

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

Usage Guidelines2/5

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

No guidance is provided on when to use drag versus alternatives like click+move. The description lacks any conditional or contextual hints for the AI agent.

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

focus_ui_elementB

Sets keyboard focus to a UI element

ParametersJSON Schema
NameRequiredDescriptionDefault
appNameYesApplication name containing the element
elementPathYesPath to the element to focus

TDQS

B3.4/5.0
Behavior2/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 does not disclose behavior beyond 'sets keyboard focus' – no mention of prerequisites, side effects (e.g., window activation), error conditions, or what happens if the element is not focusable.

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 a single, efficient sentence with no wasted words. It could be slightly improved by adding context, but it is appropriately sized for a simple action.

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?

Given the tool's simplicity and lack of output schema or annotations, the description is minimally adequate. It covers the basic action but omits guidance on path format, element visibility requirements, and typical use cases.

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

Parameters3/5

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

Schema coverage is 100%, and the description adds no extra meaning beyond what the input schema already provides for appName and elementPath. 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 'Sets keyboard focus to a UI element' uses a clear verb-resource pair distinguishing it from siblings like click_ui_element or get_ui_element_value. It immediately conveys the core action.

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?

No explicit guidance is provided for when to use this tool versus alternatives. The intended use (to set keyboard focus before typing) is implied but not stated, and no exclusions or sibling references are given.

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

focus_windowB

Brings a specific window to the front by app name and optional window index

ParametersJSON Schema
NameRequiredDescriptionDefault
appNameYesApplication name
windowIndexNo1-based window index
windowTitleNoWindow title to focus

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description must carry behavioral details. It only says 'brings to front' without disclosing side effects, error handling, or behavior when window is minimized or missing.

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

Conciseness5/5

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

Single sentence, perfectly concise, front-loaded with the core action. No unnecessary 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 tool with no output schema, description is adequate but lacks behavioral context like prerequisites and failure modes. Additional context would improve usability.

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% with clear descriptions. The description adds 'optional window index' but no additional meaning beyond schema. Baseline is appropriate.

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

Purpose5/5

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

The description clearly states the tool brings a window to front using app name and optional index. It differentiates from siblings like activate_app and focus_ui_element.

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

Usage Guidelines2/5

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

No guidance on when to use vs alternatives, no exclusions, and no mention of prerequisites like app running. With many sibling window/UI tools, this is a gap.

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

get_battery_statusA

Gets battery percentage and charging status (MacBooks only, returns isDesktop: true for desktop Macs)

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?

No annotations provided, so description carries full burden. Reveals return of isDesktop flag for desktop Macs, but contains slight contradiction: 'MacBooks only' vs 'returns isDesktop: true for desktop Macs'. Not fully clear if tool also works on non-MacBook Macs.

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

Conciseness5/5

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

Single sentence, front-loaded with key info. No filler words. Efficient.

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?

No output schema, so description must explain return values. Mentions battery percentage, charging status, and isDesktop. Lacks details on exact keys or types, but sufficient for a simple zero-parameter tool.

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

Parameters4/5

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

No parameters defined in schema (0 params, 100% coverage). Description adds no param details, but none are needed. Baseline 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?

Clearly states verb 'Gets' and resource 'battery percentage and charging status'. Explicitly scoped to MacBooks, distinguishing it from all sibling tools which deal with UI interactions.

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?

Specifies MacBooks only, which guides usage context. No explicit alternatives given but no alternative battery tools exist. Lacks guidance on when not to use, but clear enough.

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

get_clipboardA

Reads current clipboard content (text, image paths, or file paths)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It states the tool reads clipboard content but does not mention potential side effects (e.g., whether it modifies the clipboard), permissions needed, or error states. This is insufficient for a read operation without 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?

A single sentence that conveys the essential purpose and details. No extraneous text, front-loaded with the verb and resource. Perfectly concise.

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?

Given no parameters and no output schema, the description covers the basic return types. However, it does not explain the format of the returned data (e.g., a string or an object with keys), nor any conditions (e.g., what happens if clipboard is empty). Slightly incomplete for full clarity.

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?

Input schema has zero parameters, so baseline is 4. The description adds no parameter details, but since there are none, it is fully adequate.

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 'reads', the resource 'clipboard content', and specifies the types of content (text, image paths, file paths). It effectively distinguishes this tool from its sibling 'set_clipboard' by indicating read vs write.

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?

No explicit guidance on when to use or not, nor any mention of alternatives. The tool is straightforward, but the description lacks context like 'Use this to retrieve the current clipboard state' or exclusions. Implied usage is adequate for a simple read tool.

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

get_display_infoA

Lists connected displays with name, resolution, and main display indicator

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?

No annotations provided, so the description must convey behavioral traits. It adequately states it is a read-only operation listing displays, but does not mention any side effects, prerequisites, or performance implications. It is sufficient but minimal.

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 concise and front-loaded with the action verb 'Lists'. Every word contributes to the description; no unnecessary information.

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

Completeness4/5

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

For a zero-parameter tool with no output schema, the description provides sufficient detail about the returned fields. However, it could mention whether the display list includes all connected displays or only active ones, but overall it is complete enough.

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?

There are no parameters, and schema coverage is 100%. The description adds value by enumerating the output fields (name, resolution, main display indicator), exceeding the baseline of 3.

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 explicitly states the tool lists connected displays and specifies the returned fields: name, resolution, and main display indicator. This clearly distinguishes it from sibling tools like get_system_info.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as get_system_info or get_clipboard. The description lacks context for appropriate usage scenarios.

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

get_finder_window_pathA

Gets the path of the frontmost Finder window

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits, but it fails to mention edge cases like what happens when no Finder window is open, error handling, or the return format. This lack of transparency hinders proper invocation.

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

Conciseness5/5

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

The description is a single, concise sentence with no redundant information. It efficiently communicates the core functionality.

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 tool with no parameters and no output schema, the description is adequate but incomplete. It does not specify the return value type (e.g., string path) or potential error conditions, which an agent needs to handle 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 tool has zero parameters, so schema coverage is vacuously 100%. The description adds no parameter information, but per guidelines, 0 parameters earns a baseline of 4.

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 ('Gets') and the specific resource ('path of the frontmost Finder window'), making the tool's purpose unambiguous and distinguishable from siblings like 'get_selected_files'.

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 on when to use this tool versus alternatives such as 'get_selected_files' or 'list_windows'. The description lacks any context about prerequisites or exclusion criteria.

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

get_menu_bar_structureC

Gets the complete menu bar hierarchy for a process by PID

ParametersJSON Schema
NameRequiredDescriptionDefault
processNameYesProcess name

TDQS

C2.8/5.0
Behavior3/5

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

No annotations are provided, so the description must fully disclose behavior. It implies a read-only operation (get), but does not explicitly state it is non-destructive or require permissions. The context of sibling tools suggests safe data retrieval, but the description lacks explicit safety or side-effect info.

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 a single sentence with no wasted words. However, it could front-load the return value type (e.g., 'Returns a hierarchical JSON structure of menu bar items'). The conciseness is good but slightly under-informative.

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 tool with one simple parameter and no output schema, the description is minimally adequate. It does not explain the structure of the returned hierarchy, pagination, or limitations. More detail would help an agent use the result effectively.

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

Parameters2/5

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

Schema coverage is 100% (one param with description 'Process name'). However, the description says 'by PID' while the parameter requires a process name. This contradiction misleads the agent about the correct input. The description adds confusion rather than semantic clarity beyond the schema.

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

Purpose3/5

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

The description 'Gets the complete menu bar hierarchy for a process by PID' states the verb and resource, but mismatches the input schema: the parameter is 'processName', not PID. This confusion reduces clarity. It does distinguish from siblings like get_menu_item_state (which gets single item state) but the mismatch harms purpose clarity.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like list_menu_items or get_menu_item_state. No mention of prerequisites (e.g., process must be running). No indication of when not to use it.

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

get_menu_item_stateB

Gets the enabled/checked state of a menu item

ParametersJSON Schema
NameRequiredDescriptionDefault
appNameYesApplication name
menuPathYesMenu path

TDQS

B3.3/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. It implies a read-only operation but does not disclose return format, error handling (e.g., if menu item not found), or side effects. Minimal disclosure beyond the basic read 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, front-loaded sentence with no unnecessary words. It efficiently conveys the tool's purpose.

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

Completeness3/5

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

For a simple getter tool, the description is adequate but lacks output specification (return value format) and prerequisites (e.g., app must be running). Without an output schema, this gap is notable.

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% for both parameters (appName and menuPath), but schema descriptions are merely parameter names. The tool description does not add meaning beyond the schema; it does not explain the menuPath format (e.g., delimiter) or acceptable values.

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

Purpose5/5

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

The description clearly states the tool retrieves the enabled/checked state of a menu item, using a specific verb and resource. It distinguishes from sibling tools that perform actions (e.g., click_menu_item) or list items (e.g., list_menu_items).

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 click_menu_item or get_ui_element_value. No context on prerequisites or exclusions is given.

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

get_mute_statusA

Checks if system audio is currently muted

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are present, so the description must fully disclose behavior. It only states the tool 'checks' mute status but does not describe the return format, side effects, or any constraints, which is insufficient.

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 extraneous information, making it efficiently concise and front-loaded.

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?

Given the tool's simplicity and absence of parameters, the description is fairly complete but lacks specification of the output type (e.g., boolean), which is a gap for an agent to use the result 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?

There are no parameters, and schema coverage is 100%. The description adds no additional meaning beyond the schema, meeting the baseline for a zero-parameter tool.

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 'Checks if system audio is currently muted' clearly states the specific action (checks) and resource (mute status), and it distinguishes from sibling tools like set_mute and get_volume.

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 on when to use this tool versus alternatives such as get_volume or set_mute, leaving the agent to infer context without explicit direction.

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

get_selected_filesA

Gets paths of files currently selected in Finder

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states it 'gets paths', offering no details on behavior like error handling, permission requirements, or what happens when no files are selected.

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 with no wasted words. It is front-loaded with the key action and resource.

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

Completeness4/5

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

Given the tool's simplicity (no parameters, no output schema), the description is mostly complete. However, it could mention edge cases like no files selected or multiple selections, but lacks an output schema.

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

Parameters4/5

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

The tool has zero parameters and schema coverage is 100%. Per guidelines, 0 parameters earns a baseline of 4, and the description does not need to add parameter info.

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 'Gets' and the resource 'paths of files currently selected in Finder', making the purpose unambiguous. It distinguishes this tool from siblings like 'get_finder_window_path' or 'get_clipboard'.

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

Usage Guidelines3/5

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

The description implies usage when needing selected file paths in Finder, but provides no explicit guidance on when to use this vs. alternatives, nor any exclusions or prerequisites.

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

get_system_infoA

Retrieves macOS system information including version, hardware model, processor, and memory

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/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 indicates a read-only operation ('Retrieves'), but does not disclose permissions, rate limits, or any other behavioral traits. It is adequate but minimal.

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-loading the action ('Retrieves macOS system information') and listing key items. Every word contributes value; there is no waste.

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

Completeness4/5

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

For a simple read-only tool with no parameters and no output schema, the description covers the purpose and scope. It could note that the return format is not specified, but given the simplicity, it is substantially complete.

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 description coverage is 100%. The description adds no parameter info, but none is needed. Baseline for zero parameters is 4, and the description meets this standard.

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 retrieves macOS system information, listing specific categories (version, hardware model, processor, memory). This distinguishes it from sibling tools like get_battery_status or get_display_info, which focus on specific aspects.

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 using this tool when general system info is needed, but lacks explicit guidance on when to prefer it over other getters or when not to use it. No alternatives or context exclusions are mentioned.

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

get_ui_elementsA

Retrieves the UI element tree for an application. Use maxDepth to limit tree depth

ParametersJSON Schema
NameRequiredDescriptionDefault
appNameYesApplication name to get UI elements from
maxDepthNoMaximum tree traversal depth (default: 3)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It states the tool retrieves a tree but lacks details on read-only nature, performance impacts, authentication needs, or error handling. This is insufficient transparency.

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 long, front-loaded with the core purpose, and every word is functional. No unnecessary information.

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

Completeness3/5

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

The tool is simple with two parameters and no output schema. The description is adequate but lacks details about the content of the UI element tree, behavior for missing apps, or performance notes. Completeness is moderate.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents both parameters. The description adds minimal value by emphasizing 'maxDepth' usage, but does not significantly extend understanding beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('retrieves') and resource ('UI element tree'), clearly indicating the tool's function. It distinguishes from sibling tools like 'click' or 'focus_ui_element' which perform actions, while this retrieves structure.

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 mentions using 'maxDepth' to limit depth, providing a usage hint. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide conditions for when not to use it.

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

get_ui_element_valueB

Gets the value of a UI element (text field content, checkbox state, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
appNameYesApplication name containing the element
elementPathYesPath to the element

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so description bears full burden. It does not disclose prerequisites (e.g., app must be running), error behavior (element not found), or whether it waits for element. Lacks key behavioral details beyond basic purpose.

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

Conciseness5/5

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

Single clear sentence with no unnecessary words or repetition. Front-loaded with the core action. Every word adds value.

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

Completeness2/5

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

Tool has no output schema and no annotations. Description does not explain return value format, error handling, or prerequisites (e.g., element must be focused). For a simple read tool, missing crucial context for an agent to use it reliably.

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 parameters are already well-documented in the schema. The description adds no additional meaning or context about parameter formats or usage beyond what the schema provides, thus baseline 3.

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

Purpose5/5

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

Description clearly states it gets the value of a UI element and gives concrete examples (text field content, checkbox state), differentiating it from siblings like set_ui_element_value and click_ui_element.

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

Usage Guidelines2/5

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

No explicit guidance on when to use vs alternatives like get_selected_files or get_clipboard. The description only states what it does, not context for selection.

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

get_volumeA

Gets the current system volume as a percentage (0-100)

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?

With no annotations, the description carries full burden. It discloses that the tool returns the current volume as a percentage. It could be more specific (e.g., system output volume), but it is clear and unlikely to mislead.

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 unnecessary words. Every word contributes to understanding.

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 tool with no parameters and no output schema, the description is complete. It explains the return value sufficiently.

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?

Input schema has no parameters, so description need not add param info. The baseline of 4 is appropriate as the schema coverage is 100% and there is nothing to explain.

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 (Gets), the resource (current system volume), and the output format (percentage 0-100). It distinguishes this tool from siblings like set_volume and get_mute_status.

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

Usage Guidelines3/5

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

The description implies usage for reading volume, but does not explicitly state when to use this tool vs alternatives, nor does it provide any conditions or exclusions. For a simple getter, this is acceptable but not exemplary.

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

key_combinationA

Presses a focused-app or menu key combination with modifiers; OS-global hotkeys such as Electron globalShortcut are not guaranteed

ParametersJSON Schema
NameRequiredDescriptionDefault
modifiersYesModifier keys to hold (command, shift, option, control)
keyYesKey to press with modifiers in the focused app/menu shortcut path; OS-global hotkeys are not guaranteed

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 full burden. It discloses that the tool works on focused apps/menus and does not guarantee global hotkeys. This adds important behavioral context, though it could mention prerequisites like app focus.

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 redundancy. It conveys the essential behavior and limitation without extra words.

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

Completeness4/5

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

The tool is simple with 2 parameters and no output schema. The description plus schema adequately convey usage for app/menu key combinations. Minor missing context about needing a focused app is implied but not explicit.

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

Parameters3/5

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

Schema description coverage is 100% with both parameters well described. The tool description does not add new parameter-level information beyond reinforcing the context of focused apps, so the schema already carries the burden.

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 presses a key combination with modifiers in a focused app or menu. It distinguishes from sibling tools like press_key (no modifiers) by explicitly including modifiers and from click_menu_item by specifying keyboard vs mouse action.

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 clarifies that OS-global hotkeys are not guaranteed, providing a clear when-not-to-use condition. However, it does not explicitly mention alternatives like press_key for single keys or click_menu_item for menu items.

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

launch_appB

Launches an application by name (e.g., "Safari", "Finder")

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesApplication name to launch

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states 'Launches an application'. It does not disclose whether it starts a new instance or brings existing to foreground, what happens if the app is already running, success/failure indications, or permission requirements.

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

Conciseness5/5

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

The description is a single concise sentence that communicates the core function immediately. No extraneous words. Well-structured for an agent to parse quickly.

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

Completeness4/5

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

For a simple tool with one parameter and no output schema, the description covers the essential purpose and parameter. However, it lacks behavioral details like whether it errors on unknown app names or how it handles already running apps, which are relevant for an agent.

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 only parameter 'name' has a description). The tool description adds minimal value by providing examples of valid names, but does not elaborate on format or constraints beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Launches'), the resource ('application by name'), and provides concrete examples ('e.g., Safari, Finder'). It is specific and distinguishes from siblings like 'activate_app' which focuses an already running app.

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 on when to use this tool vs alternatives like 'activate_app' for focusing an app or 'click_menu_item' for interacting within an app. There is no mention of prerequisites or conditions under which launching fails.

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

list_menu_itemsC

Gets the menu hierarchy for an application

ParametersJSON Schema
NameRequiredDescriptionDefault
appNameYesApplication name to get menu hierarchy from

TDQS

C2.9/5.0
Behavior1/5

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

With no annotations, the description carries full burden but provides minimal behavioral detail. It implies a read-only operation ('Gets') but omits specifics like whether the app must be running, the format of the returned hierarchy, or any side effects.

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

Conciseness4/5

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

The description is a single concise sentence, avoiding unnecessary words. However, it could include more essential information without becoming verbose.

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

Completeness2/5

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

Given the lack of output schema and annotations, the description is incomplete. It does not explain what the tool returns, error conditions, prerequisites (e.g., app must be running), or how the hierarchy is structured.

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 sole parameter 'appName' is already described in the input schema ('Application name to get menu hierarchy from'), and the tool description adds no additional meaning. Schema coverage is 100%, so baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves the menu hierarchy for an application, using a specific verb ('Gets') and resource ('menu hierarchy'), distinguishing it from siblings like get_menu_bar_structure or click_menu_item.

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 on when to use this tool versus alternatives such as get_menu_bar_structure or get_menu_item_state. The description lacks context for appropriate usage.

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

list_running_appsA

Lists all running GUI applications with name, bundle ID, and process ID

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior2/5

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

No annotations provided. Description only states what it lists, not whether it is read-only, has side effects, or performance considerations. Minimal behavioral insight beyond the name.

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

Conciseness5/5

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

Single sentence that is front-loaded with the action and output. No unnecessary words. Eminently 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?

Given zero parameters, no output schema, and the tool's simplicity, the description fully covers what the tool does and what it returns. No additional context needed.

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

Parameters4/5

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

No parameters exist, and schema coverage is 100%. Description does not need to add parameter info. Baseline 4 is appropriate for a zero-parameter tool.

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

Purpose5/5

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

Description clearly states it lists all running GUI applications with specific fields (name, bundle ID, process ID). Verb 'list' and resource 'running GUI applications' are precise and unique among 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?

No explicit guidance on when to use this tool vs alternatives. It is implied for obtaining app information before actions like activate_app or quit_app, but no exclusions or recommendations are given.

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

list_status_bar_itemsB

Lists visible status bar (menu bar extras) items

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden. It only states 'lists' implying a read operation, but lacks details on permissions, side effects, or return format. Insufficient for full transparency.

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 a single, clear sentence with no wasted words. It is appropriately concise for a simple tool.

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

Completeness2/5

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

The tool has no output schema to describe return values, and the description does not specify what format the list returns (e.g., names, objects). For a tool with no annotations and no output schema, the description should compensate by detailing the output. It is incomplete.

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 with 100% coverage, so no parameter documentation is needed. The description adds no parameter info, which is acceptable per guidelines (baseline 4 for 0 params).

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 'Lists' and the resource 'visible status bar (menu bar extras) items'. It distinguishes this tool from similar siblings like 'list_menu_items' by focusing on status bar extras.

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 'get_menu_bar_structure' or 'list_menu_items'. No exclusions or when-not scenarios are mentioned.

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

list_windowsB

Lists all visible windows with app name, title, position, and size. Optional: filter by app name

ParametersJSON Schema
NameRequiredDescriptionDefault
appNameNoFilter windows by application name

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It only states what the tool does but does not mention prerequisites (e.g., accessibility permissions), whether it's a snapshot or live list, or performance implications. This is insufficient transparency.

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 very concise: two sentences, first explaining the core purpose and second noting the optional filter. No redundant words, and the key information is front-loaded.

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 description specifies the fields returned (app name, title, position, size) but does not detail the format of position/size or whether the result is an array. Without an output schema, more structural context would be helpful. Adequate but not 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?

The schema covers the only parameter fully, describing it as a filter by app name. The description repeats this without adding new meaning, so it meets the baseline for high schema coverage but does not enhance understanding.

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 lists all visible windows with specific fields (app name, title, position, size) and mentions optional filtering. It distinguishes itself from sibling tools like focus_window, move_window, etc., by being a listing tool.

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 on when to use this tool versus alternatives. It does not mention any context for using it, e.g., before focusing or moving windows, or any conflicts with similar tools like get_ui_elements.

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

minimize_windowA

Minimizes a window to the Dock

ParametersJSON Schema
NameRequiredDescriptionDefault
appNameYesApplication name
windowIndexNo1-based window index
windowTitleNoWindow title

TDQS

A3.5/5.0
Behavior2/5

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

No annotations exist, and the description fails to disclose behavioral details such as behavior when the window is already minimized, effects on multi-window apps, or system permissions required.

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 extremely concise with a single sentence. While efficient, it could include a brief note on behavior without becoming verbose.

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 action tool with full schema coverage, the description is adequate. It could better handle edge cases or return value, but is sufficient given low 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?

Schema description coverage is 100%, so the description does not need to add parameter details. The description adds no additional meaning beyond the schema definitions.

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 (minimizes), resource (window), and destination (to the Dock). It effectively distinguishes from sibling tools like resize_window or focus_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 description does not provide any guidance on when to use this tool versus alternatives like closing or hiding windows. No exclusions or prerequisites are mentioned.

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

move_mouseA

Moves the mouse cursor to specified coordinates without clicking

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX coordinate to move the cursor to
yYesY coordinate to move the cursor to

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 clarifies that no clicking occurs but omits potential side effects like triggering hover events or coordinate system details.

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

Conciseness5/5

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

Single sentence, no wasted words, efficiently communicates the core action.

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 2-parameter tool with no output schema, the description is mostly complete but lacks details about coordinate system (e.g., screen coordinates) and bounds, which could 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 coverage is 100% with descriptions for x and y. The tool description adds no additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'moves' and the resource 'mouse cursor', and explicitly says 'without clicking', which distinguishes it from sibling tools like 'click' and 'drag'.

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

Usage Guidelines3/5

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

The description implies usage for moving the cursor without clicking but provides no explicit when-to-use or when-not-to-use guidance, nor mentions alternatives.

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

move_windowB

Moves a window to specified x, y coordinates

ParametersJSON Schema
NameRequiredDescriptionDefault
appNameYesApplication name
windowIndexNo1-based window index
windowTitleNoWindow title
xYesNew X coordinate
yYesNew Y coordinate

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states the basic action. It does not disclose important behaviors such as what happens if the window is minimized, whether coordinates are absolute or relative, error handling, or permission requirements.

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 a single sentence, concise and front-loaded. However, it could be improved by adding a bit more detail without becoming verbose, such as clarifying how window identification works.

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

Completeness2/5

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

Given the complexity (5 parameters, 3 required, no output schema, no annotations), the description is insufficient. It does not explain how to select a window when multiple exist, what the output or return value is, or any edge cases.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are already documented in the schema. The description adds no additional meaning beyond 'to specified x, y coordinates', which is already implied by the parameter names.

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

Purpose5/5

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

The description 'Moves a window to specified x, y coordinates' clearly states the action (move) and the resource (window) with specific parameters (x, y). It distinguishes itself from sibling tools like resize_window (resize) and focus_window (focus).

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 on when to use this tool versus alternatives (e.g., resize_window or drag). No context about prerequisites or typical use cases.

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

press_keyB

Presses a key by name (Enter, Tab, Escape, F1-F12, Arrow keys, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesKey name to press (e.g., "enter", "escape", "tab", "delete", "f1"-"f12", arrow keys)
repeatNoNumber of times to press the key

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It only states the action without disclosing behavioral traits like what happens on invalid keys, whether it requires focused window, or if repeated presses are immediately sent. Minimal transparency.

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 directly states the action and lists representative keys. No redundancy or wasted words.

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

Completeness3/5

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

For a simple tool with two parameters, the description is adequate but misses behavioral context and usage guidance. Agent can infer core function but may misinterpret edge cases or fail to choose the correct tool among siblings.

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

Parameters3/5

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

Schema coverage is 100% and already includes clear descriptions for both parameters. The tool description adds examples but does not enrich beyond schema. Baseline of 3 is appropriate.

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

Purpose5/5

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

Description uses a specific verb 'Presses' and specifies resource 'a key by name' with concrete examples (Enter, Tab, etc.), making the purpose immediately clear. It distinguishes from sibling tools like click or type_text by focusing on single key presses.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as key_combination (for multi-key shortcuts) or click (for mouse interactions). The agent is left to infer usage without explicit context.

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

quit_appA

Gracefully quits an application by name

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesApplication name to quit

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided, so description must carry behavioral info. 'Gracefully quits' implies a normal quit signal, but lacks details on error handling, unsaved changes, or permissions. Baseline level beyond schema.

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

Conciseness5/5

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

Single sentence, no wasted words, front-loaded with the action. Highly concise and efficient.

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 tool with one param and no output schema, missing context about error behavior (if app not found) and what 'gracefully' entails. Adequate but not exhaustive.

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

Parameters3/5

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

Schema coverage is 100%, so description adds little beyond 'by name' which is already in schema. Baseline score applies because description does not provide additional 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 uses a specific verb 'quits' and clarifies the resource is 'application by name'. It clearly distinguishes from siblings like 'launch_app' which is the opposite operation.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. No mention of prerequisites (e.g., app must be running) or when not to use (e.g., force quit scenarios).

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

resize_windowB

Resizes a window to specified width and height

ParametersJSON Schema
NameRequiredDescriptionDefault
appNameYesApplication name
windowIndexNo1-based window index
windowTitleNoWindow title
widthYesNew width in pixels
heightYesNew height in pixels

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description bears full responsibility for behavioral disclosure. It only states the action but does not mention failure modes, error handling, or whether the window must be active. Important traits like idempotency or constraints are omitted.

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 a single, clear sentence that is front-loaded and wastes no words. However, it is slightly underspecified given the tool's complexity, which prevents a perfect score.

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

Completeness2/5

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

With 5 parameters, no output schema, and no annotations, the description should provide more context on how to identify the window (e.g., when to use windowIndex vs windowTitle) and what happens when specifications are invalid. The current text is insufficient for reliable agent usage.

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 already provides descriptions for all 5 parameters (100% coverage). The tool description adds no additional semantic information beyond what the schema offers, so it meets the baseline but does not exceed it.

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 ('Resizes a window') and the parameters (width and height). It distinguishes this tool from sibling tools like move_window or minimize_window, which have different purposes.

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

Usage 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, nor does it mention prerequisites such as the window needing to be open or focused. Users are left to infer context from the tool name and siblings.

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

reveal_in_finderB

Opens Finder and selects the specified file or folder

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFile or folder path to reveal in Finder

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It fails to mention what happens if the path does not exist, whether it activates Finder, or if accessibility permissions are required. This lack of detail could lead to incorrect usage.

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 of 9 words. It is front-loaded with the main action and contains no unnecessary information.

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

Completeness3/5

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

For a simple one-parameter tool with no output schema, the description is nearly adequate. However, it lacks behavioral context such as error handling and permission requirements, which 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 coverage is 100% with a clear description for the 'path' parameter. The tool description adds no new semantic value beyond the schema, which already explains the parameter adequately.

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

Purpose5/5

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

Description clearly states the verb 'opens' and the resource 'Finder' with the specific action 'selects the specified file or folder'. It effectively distinguishes from sibling tools like get_finder_window_path or launch_app, which do not select files.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, such as launch_app or get_selected_files. The description lacks context about prerequisites or scenarios where this tool is appropriate.

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

scrollA

Scrolls in a specified direction (up, down, left, right) at optional coordinates

ParametersJSON Schema
NameRequiredDescriptionDefault
directionYesDirection to scroll
amountNoScroll amount in pixels
xNoX coordinate to scroll at
yNoY coordinate to scroll at

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It fails to disclose key behavioral traits: whether coordinates are relative to window or screen, behavior when coordinates are omitted, or whether the amount parameter is required. Only direction and optional coordinates are mentioned.

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

Conciseness5/5

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

Single sentence, front-loaded, no wasted words. Every word earns its place.

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

Completeness3/5

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

Given 4 parameters with full schema coverage and no output schema, the description is adequate for a simple action. However, it lacks context on coordinate system, scroll behavior with or without coordinates, and relation to sibling tools.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds 'optional coordinates' but no extra semantic beyond what's in the schema. No new meaning or clarification of edge cases.

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 ('Scrolls'), the resource ('in a specified direction'), and scope ('at optional coordinates'). It distinguishes from sibling tools like 'scroll_to_element' which scrolls to a specific element.

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?

No explicit guidance on when to use this tool versus alternatives (e.g., scroll_to_element). The description implies usage for direction-based scrolling but does not specify when to choose this over other scrolling methods.

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

scroll_to_elementC

Scrolls until a UI element with specified text or role becomes visible

ParametersJSON Schema
NameRequiredDescriptionDefault
appNameYesApplication name containing the element
elementPathYesPath to the element to scroll into view

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided. The description implies repeated scrolling until visibility, but does not disclose behavior like auto-stopping criteria, timeout, or side effects. Lacks details on what happens if element is not found.

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

Conciseness4/5

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

Single sentence, front-loaded with action. Efficient but slightly vague. No extraneous content, but could be more precise.

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

Completeness2/5

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

For a simple tool with no output schema and siblings like 'scroll', the description lacks needed context. It does not explain the format of 'elementPath' or scroll behavior. Incomplete for effective selection.

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

Parameters3/5

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

Schema coverage is 100%. The parameter descriptions are adequate but the tool's description introduces 'text or role' which does not correspond to the provided parameters, causing a mismatch. The description adds minimal value beyond schema.

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

Purpose4/5

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

The description clearly states the tool scrolls until a UI element becomes visible. The verb 'scrolls' and resource 'UI element' are clear. However, it mentions 'text or role' which are not reflected in the input schema, causing some confusion.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus siblings like 'scroll'. No conditions or alternatives mentioned. The description is too brief to differentiate usage context.

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

send_notificationB

Displays a macOS notification with title, optional message, subtitle, and sound

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesNotification title
messageYesNotification body message
subtitleNoOptional subtitle
soundNoPlay notification sound

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided; description does not disclose behavioral traits such as synchronous execution, permission requirements, or what happens on failure. Simply states the action without deeper context.

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

Conciseness4/5

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

Single sentence, no wasted words. Could be considered slightly terse but adequately concise for a simple tool.

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?

No output schema; description does not explain return value or error states. For a simple display tool, it covers the basics but lacks completeness on behavior and output.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. Description restates parameters ('title, optional message, subtitle, and sound') without adding new meaning beyond the schema.

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

Purpose5/5

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

Clearly states the action ('Displays'), the resource ('macOS notification'), and lists components (title, message, subtitle, sound). Distinguishes from sibling tools as they focus on other macOS interactions (clicking, typing, etc.).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives or prerequisites. The description only states what it does, not when it's appropriate.

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

set_clipboardB

Sets clipboard to specified text content

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText content to set on clipboard

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must fully convey behavioral traits. While 'Sets clipboard' implies mutation, it does not disclose whether the operation overwrites existing content, requires permissions, or has side effects. This minimal transparency is insufficient for a complete understanding.

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 extremely concise with a single sentence that conveys the essential information. No unnecessary words or redundant details are present, making it efficient and front-loaded.

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 setter tool with one parameter and no output schema, the description is adequate but not rich. It explains the basic action but lacks additional context such as what happens on success or failure, which would be beneficial for 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?

The input schema has 100% coverage with a clear description for the single 'text' parameter. The tool description adds no extra meaning beyond the schema, so a 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 clearly states the verb 'Sets' and resource 'clipboard' with the specific content type 'text content', making the purpose unambiguous. However, it does not distinguish itself from the sibling 'get_clipboard' tool, which could be useful for completeness.

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 'get_clipboard'. There is no mention of prerequisites, contexts, or exclusions, leaving the agent without context for appropriate invocation.

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

set_muteA

Mutes or unmutes system audio

ParametersJSON Schema
NameRequiredDescriptionDefault
mutedYesMute state

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 states the tool sets mute state, which is adequate for a simple boolean mutation. However, it could mention that setting 'muted' to true mutes and false unmutes, which is already implied.

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

Conciseness5/5

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

The description is a single concise sentence with no unnecessary words. It is front-loaded and 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?

Given the tool's simplicity (one boolean parameter, no output schema), the description fully covers what the tool does and what the parameter means. No additional information is needed.

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% but the schema description for 'muted' is minimal ('Mute state'). The tool description adds context by linking the parameter to muting/unmuting system audio, providing meaning beyond the schema.

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

Purpose5/5

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

The description clearly states 'Mutes or unmutes system audio', using a specific verb and resource. It distinguishes from sibling tools like 'get_mute_status' (read) and 'set_volume' (volume level).

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?

No explicit guidance on when to use versus alternatives. The usage is implied: to change mute state. No exclusions or context like prerequisites are provided.

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

set_ui_element_valueB

Sets the value of an editable UI element (text fields, sliders, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
appNameYesApplication name containing the element
elementPathYesPath to the element
valueYesValue to set

TDQS

B3.1/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 burden of behavioral disclosure. It only states the basic action without detailing idempotence, error handling, waiting behavior, or what happens after setting (e.g., whether it returns a result or throws).

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 a single sentence of 14 words, front-loaded with the core action. It is concise and to the point, though it could include more behavioral details without losing conciseness.

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

Completeness2/5

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

The tool has no output schema and no annotations. The description does not explain return values, success/failure indicators, or side effects. Given the presence of 40+ sibling tools, more context is needed for correct tool selection.

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

Parameters3/5

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

The input schema already describes all three parameters with 100% coverage. 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.

Purpose5/5

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

The description uses a specific verb ('Sets') and resource ('value of an editable UI element'), with examples (text fields, sliders). It clearly distinguishes from siblings like 'click_ui_element' and 'type_text' by focusing on direct value assignment to editable elements.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as 'type_text' or 'click_ui_element'. The description does not mention prerequisites, limitations, or context for choosing this tool.

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

set_volumeB

Sets the system volume to a specified percentage (0-100)

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesVolume percentage (0-100)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It does not mention side effects (e.g., whether change is immediate, persistent, or requires permissions). The description is too minimal for full transparency.

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

Conciseness4/5

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

Single sentence with no fluff, but slightly redundant with the parameter description. Efficient for a simple 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 single-parameter setter with no output schema, the description covers the essential information. However, mentioning that the volume scale is linear or that get_volume can be used to read current volume 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 coverage is 100%, and the parameter 'value' is already well-described with min/max and description. The description adds no new semantic value beyond what the schema provides, so baseline 3 applies.

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

Purpose5/5

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

The description clearly states the action ('Sets'), the object ('system volume'), and the allowed range ('0-100'). It distinguishes from sibling tools like get_volume (reads) and set_mute (toggles mute).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., set_mute, or checking current volume with get_volume). No mention of prerequisites or typical use cases.

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

take_screenshotA

Captures a screenshot of the screen, display, window, or region. Auto-resized to max 1600px and compressed to max 1.8MB for API compatibility (both file and base64 output). Use rawFile: true to save at full resolution, or maxDimension/maxFileSize: 0 to disable processing

ParametersJSON Schema
NameRequiredDescriptionDefault
displayNoDisplay number to capture (1-based)
windowIdNoWindow ID to capture
regionNoRegion coordinates for partial capture
formatNoOutput format (png or jpg)png
filePathNoFile path to save screenshot (returns base64 if not specified)
maxDimensionNoMaximum dimension (width or height). Default: 1600. Set to 0 to disable resizing. Applies to both file and base64 output.
maxFileSizeNoMaximum file size in bytes. Default: 1800000 (1.8MB). Set to 0 to disable compression. Applies to both file and base64 output.
qualityNoJPEG quality for compression (1-100). Default: 85. Only used when compression is applied.
rawFileNoSkip resize/compression for file output. Default: false. Set to true to save at full resolution.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description discloses key behaviors: auto-resizing to 1600px, compression to 1.8MB, and how to disable them. It also mentions both file and base64 output. Minor omissions like timeout or error handling are acceptable for a screenshot 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 three sentences, front-loaded with purpose, and every sentence adds crucial information. No unnecessary words.

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 complexity (9 parameters, nested region object, no output schema, no annotations), the description covers purpose, default behaviors, and options. It could mention return format details more explicitly, but overall it is complete enough for an agent to use 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?

All 9 parameters have descriptions in the schema (100% coverage). The description adds value by explaining default values (e.g., maxDimension 1600) and how to disable processing, which enhances the schema's information.

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 captures a screenshot of screen, display, window, or region. It distinguishes itself from siblings by being the only screenshot capture tool among many UI interaction 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?

The description provides usage context (e.g., when to use rawFile for full resolution) and notes that processing is applied by default. It does not explicitly state when not to use it or list alternatives, but the sibling list shows no other screenshot tool, making the guidance adequate.

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

type_textB

Types text at the current cursor position with optional delay between characters

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to type at the current cursor position
delayNoDelay between keystrokes in milliseconds

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries full behavioral burden. It fails to disclose important traits: app focus requirement, character simulation detail, or side effects like overwriting existing text.

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

Conciseness5/5

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

Single sentence, front-loaded with action and location, no wasted words.

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

Completeness3/5

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

For a simple tool with 2 params and no output schema, the description is minimal but adequate. It misses context on focus, error handling, and special character behavior.

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 already describes both parameters with 100% coverage. The description adds 'with optional delay' but does not significantly enhance understanding beyond the schema.

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

Purpose5/5

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

The description clearly states the action (types text), the location (current cursor position), and an option (delay). It distinguishes from siblings like click, key_combination, and set_clipboard.

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

Usage Guidelines2/5

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

No guidance on when to use vs. alternatives (e.g., set_clipboard + paste). Does not mention when not to use or prerequisite conditions like app focus.

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. Dates show when Glama detected each change.

  1. 44 tool updatesv0.1.3
    • Addedactivate_app
    • Addedclick
    • Addedclick_menu_item
    • Addedclick_status_bar_item
    • Addedclick_status_bar_menu_item
    • Addedclick_ui_element
    • Addeddouble_click
    • Addeddrag
    • Addedfocus_ui_element
    • Addedfocus_window
    • Addedget_battery_status
    • Addedget_clipboard
    • Addedget_display_info
    • Addedget_finder_window_path
    • Addedget_menu_bar_structure
    • Addedget_menu_item_state
    • Addedget_mute_status
    • Addedget_selected_files
    • Addedget_system_info
    • Addedget_ui_element_value
    • Addedget_ui_elements
    • Addedget_volume
    • Addedkey_combination
    • Addedlaunch_app
    • Addedlist_menu_items
    • Addedlist_running_apps
    • Addedlist_status_bar_items
    • Addedlist_windows
    • Addedminimize_window
    • Addedmove_mouse
    • Addedmove_window
    • Addedpress_key
    • Addedquit_app
    • Addedresize_window
    • Addedreveal_in_finder
    • Addedscroll
    • Addedscroll_to_element
    • Addedsend_notification
    • Addedset_clipboard
    • Addedset_mute
    • Addedset_ui_element_value
    • Addedset_volume
    • Addedtake_screenshot
    • Addedtype_text

TDQS

B3.4/5.0
Disambiguation4/5

Most tools have distinct purposes, but the multiple click variants (click, click_menu_item, click_status_bar_item, etc.) and focus tools (focus_window, focus_ui_element) could cause slight confusion. Descriptions help differentiate them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case, e.g., `launch_app`, `set_volume`, `take_screenshot`. No mixing of conventions.

Tool Count3/5

44 tools is on the high side for a single server, covering a broad range of Mac automation tasks. While each tool serves a purpose, the count is borderline heavy and might benefit from consolidation.

Completeness4/5

The tool set covers core macOS automation areas: UI interaction, system info, app management, clipboard, notifications, and screenshots. Minor gaps exist (e.g., no AppleScript execution), but the surface is largely complete for its domain.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides native macOS computer control tools including mouse and keyboard simulation, screenshot capture, and application management for MCP-compatible agents. It enables AI assistants to directly interact with the macOS operating system and installed apps through standard tool calls.
    24
    61
    8
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables AI assistants to automate macOS desktop tasks including mouse control, keyboard input, screenshots, window management, and UI interaction.
    14
    414
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to control macOS desktop apps via screenshots, mouse clicks, keyboard input, accessibility queries, and AppleScript.
    11
    15
    MIT

Appeared in Searches

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ryota-murakami/mac-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server