Skip to main content
Glama
SeanFDZ

AgentBridge

by SeanFDZ

AgentBridge

npm MCP Registry

Let AI talk to your Classic Mac.

AgentBridge is a native Classic Mac OS application that lets AI agents (like Claude) interact with Mac OS 7–9 through structured commands and responses. It works on real hardware and emulators — no modifications to your Mac required.

Drop AgentBridge into a shared folder, launch it on your Mac, and an AI agent can list windows, open apps, type text, read the clipboard, browse files, and more — all through a simple text-based protocol.

How It Works

┌──────────────────────┐
│    Claude / AI Agent │
│         │            │
│    MCP Protocol      │
│         │            │
│    MCP Server (Node) │
│         │            │
│    Shared Folder I/O │
└────────┬─────────────┘
         │  reads/writes text files
         │
    ┌────┴──────────────────────────┐
    │  Shared Volume (NAS / AFP /   │
    │  SMB / emulator extfs)        │
    │                               │
    │  AgentBridge-MyMac/           │
    │  ├── inbox/   ← commands in   │
    │  ├── outbox/  ← responses out │
    │  ├── assets/  ← file staging  │
    │  └── heartbeat                │
    └────┬──────────────────────────┘
         │
┌────────┴─────────────────────────┐
│  Classic Mac OS 7 / 8 / 9        │
│                                  │
│  AgentBridge.app                 │
│  - Polls inbox for commands      │
│  - Executes via Mac Toolbox      │
│  - Writes responses to outbox    │
│  - Heartbeat every 2 seconds     │
└──────────────────────────────────┘

The transport is just a folder. How that folder is shared between the AI and the Mac is up to you:

  • NAS/file server (AFP or SMB) — multiple Macs and your modern computer all mount the same share

  • Emulator shared folder — BasiliskII and SheepShaver both support host directory sharing

  • Any other shared filesystem — if both sides can read and write files, it works

No SSH. No special drivers. No modifications to your Mac's system. AgentBridge is a regular application — launch it, quit it, done.

Related MCP server: macos-mcp

MCP Tools Reference

The MCP server exposes these tools to AI agents. If the fleet has only one target, the target parameter is optional on all tools.

System & Status

classic_mac_list_targets List all configured Classic Mac targets and their status (heartbeat alive/dead). No parameters.

classic_mac_ping Health check — returns pong if AgentBridge is responding.

Parameter

Required

Description

target

No

Target ID or alias

classic_mac_heartbeat Read the heartbeat file — shows uptime, front app, free memory, timestamp.

Parameter

Required

Description

target

No

Target ID or alias

classic_mac_get_about System information — OS version, machine type, RAM, free memory, uptime.

Parameter

Required

Description

target

No

Target ID or alias

Windows & Processes

classic_mac_list_windows Enumerate all visible windows across all applications. Returns window index, title, bounds (left,top,right,bottom), and front/back layer.

Parameter

Required

Description

target

No

Target ID or alias

classic_mac_get_front_window Get details about the frontmost window — title, bounds, owning app.

Parameter

Required

Description

target

No

Target ID or alias

classic_mac_list_processes List running applications with name, creator code, PID, and memory partition.

Parameter

Required

Description

target

No

Target ID or alias

Menus

classic_mac_list_menus List the menu bar entries for the frontmost application.

Parameter

Required

Description

target

No

Target ID or alias

classic_mac_get_menu_items Get items within a specific menu by name.

Parameter

Required

Description

target

No

Target ID or alias

menu

Yes

Menu title (e.g. "File", "Edit")

classic_mac_menu_select Activate a menu item by name. Works for items with keyboard shortcuts.

Parameter

Required

Description

target

No

Target ID or alias

menu

Yes

Menu title

item

Yes

Menu item name

Mouse & Keyboard

classic_mac_click Click at screen coordinates.

Parameter

Required

Description

target

No

Target ID or alias

x

Yes

X coordinate (pixels from left)

y

Yes

Y coordinate (pixels from top)

clicks

No

Number of clicks (default 1, use 2 for double-click)

classic_mac_mouse_move Move the cursor without clicking.

Parameter

Required

Description

target

No

Target ID or alias

x

Yes

X coordinate

y

Yes

Y coordinate

classic_mac_mouse_drag Click and drag from one point to another.

Parameter

Required

Description

target

No

Target ID or alias

x1

Yes

Start X

y1

Yes

Start Y

x2

Yes

End X

y2

Yes

End Y

classic_mac_type_text Type a string of text into the frontmost application.

Parameter

Required

Description

target

No

Target ID or alias

text

Yes

Text to type

classic_mac_key_press Press a single key with optional modifiers.

Parameter

Required

Description

target

No

Target ID or alias

key

Yes

Key name: single character, or return, enter, tab, space, delete, escape, left, right, up, down, home, end, pageup, pagedown, f1f5

modifiers

No

Comma-separated: cmd, opt, shift, ctrl (e.g. "cmd,shift")

Clipboard

classic_mac_get_clipboard Read the current clipboard text contents.

Parameter

Required

Description

target

No

Target ID or alias

classic_mac_set_clipboard Set the clipboard text contents.

Parameter

Required

Description

target

No

Target ID or alias

text

Yes

Text to place on clipboard

Application Control

classic_mac_launch_app Launch an application by HFS path or creator code.

Parameter

Required

Description

target

No

Target ID or alias

path

No*

HFS path (e.g. "Macintosh HD:Applications:SimpleText")

creator

No*

4-character creator code (e.g. "ttxt")

*One of path or creator is required.

classic_mac_activate_app Bring a running application to the front.

Parameter

Required

Description

target

No

Target ID or alias

name

Yes

Application name

classic_mac_quit_app Send a quit Apple Event to a running application.

Parameter

Required

Description

target

No

Target ID or alias

name

Yes

Application name

classic_mac_send_appleevent Send a generic Apple Event to a running application.

Parameter

Required

Description

target

No

Target ID or alias

app

Yes

Target app name or 4-char creator code

event

Yes

Event type: oapp, quit

Files & Volumes

classic_mac_get_volumes List all mounted volumes with name, free space, and total size.

Parameter

Required

Description

target

No

Target ID or alias

classic_mac_list_folder List contents of a folder by HFS path. Returns name, type code, creator code, size, and whether each item is a folder.

Parameter

Required

Description

target

No

Target ID or alias

path

Yes

HFS path (e.g. "Macintosh HD:System Folder:")

Compatibility

Environment

Architecture

OS Versions

Status

68k Macs

68k

System 7.0–8.1

✅ Tested on System 7.6.1

PowerPC Macs

PowerPC

Mac OS 8.5–9.2.2

Builds, untested

BasiliskII

68k

System 7.0–8.1

✅ Tested on System 7.6.1

SheepShaver

PowerPC

Mac OS 8.5–9.2.2

Builds, untested

AgentBridge requires System 7.0 or later (for Apple Events support).

Quick Start

Pre-built Binaries

Download from the Releases page:

  • AgentBridge-68k.bin — MacBinary for 68k Macs (System 7–8.1)

  • AgentBridge-68k.dsk — HFS disk image for 68k Macs (System 7–8.1)

  • AgentBridge-ppc.bin — MacBinary for PowerPC Macs (OS 8.5–9.2.2)

  • AgentBridge-ppc.dsk — HFS disk image for PowerPC Macs (OS 8.5–9.2.2)

Setup

  1. Create a shared folder accessible to both your Mac and your modern computer. This can be a NAS share, an emulator's host directory, or any shared filesystem.

  2. Create the directory structure inside the shared folder:

    AgentBridge/
    └── AgentBridge-YourMacName/
        ├── inbox/
        ├── outbox/
        └── assets/
  3. Copy AgentBridge into the folder alongside inbox/outbox/assets.

  4. Launch AgentBridge on the Classic Mac. It will automatically find its folder and start polling for commands.

  5. Send a test command from your modern computer:

    printf "BRIDGE 1.0.1\rSEQ 00001\rCMD ping\rTS 20260308T170000\r---\r" > /path/to/shared/AgentBridge-YourMacName/inbox/C00001.msg
  6. Read the response:

    cat /path/to/shared/AgentBridge-YourMacName/outbox/R00001.msg | tr '\r' '\n'

    You should see RESULT pong and STATUS ok.

Multiple Macs

Each Mac gets its own subfolder with its own copy of AgentBridge:

NAS Share/
└── AgentBridge/
    ├── AgentBridge-SE30/          ← Mac SE/30 running System 7
    │   ├── AgentBridge (app)
    │   ├── inbox/
    │   ├── outbox/
    │   └── assets/
    ├── AgentBridge-G4/            ← Power Mac G4 running OS 9
    │   ├── AgentBridge (app)
    │   ├── inbox/
    │   ├── outbox/
    │   └── assets/
    └── AgentBridge-BasiliskII/    ← Emulator
        ├── AgentBridge (app)
        ├── inbox/
        ├── outbox/
        └── assets/

AgentBridge uses its own launch location as its working directory — no configuration needed.

MCP Server

The MCP server exposes AgentBridge commands as tools for AI agents like Claude. It's a Node.js TypeScript server that communicates via stdio (standard MCP transport).

Install via npm

npm install -g classic-mac-mcp

Or run directly with npx (no install needed):

npx -y classic-mac-mcp --config /path/to/fleet.json

Install from source

git clone https://github.com/SeanFDZ/agentbridge.git
cd agentbridge
npm install
npm run build

Configuration

Create a fleet.json file to point at your shared folders:

{
  "fleet": [
    {
      "id": "my-classic-mac",
      "alias": "Classic Mac",
      "arch": "68k",
      "os_version": "7.6.1",
      "shared_folder": "/Volumes/NASShare/AgentBridge/AgentBridge-MyMac"
    }
  ]
}

Claude Desktop

Add to your Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "classic-mac": {
      "command": "npx",
      "args": ["-y", "classic-mac-mcp", "--config", "/path/to/fleet.json"]
    }
  }
}

Or if you installed from source:

{
  "mcpServers": {
    "classic-mac": {
      "command": "node",
      "args": ["/path/to/agentbridge/dist/server.js", "--config", "/path/to/agentbridge/config/fleet.json"]
    }
  }
}

Protocol

AgentBridge uses a line-oriented key-value text protocol designed for Classic Mac constraints:

  • No JSON — parseable with ~50 lines of C, zero dynamic memory allocation

  • CR line endings (Classic Mac native)

  • MacRoman text encoding (translated to UTF-8 by the MCP server)

  • 32KB max message size

  • Files named C00001.msg (commands) and R00001.msg (responses)

Command Format

Commands are text files written to the inbox/ directory, named C{seq}.msg (e.g. C00001.msg). Sequence numbers are zero-padded to 5 digits.

BRIDGE 1.0.1
SEQ 00042
CMD list_windows
TS 20260308T153022
---

All lines are KEY value pairs, terminated by --- on its own line. Line endings are CR (0x0D, Classic Mac native). Text encoding is MacRoman (the MCP server handles UTF-8 conversion). Multi-line text uses + continuation lines after the TEXT key. Maximum message size is 32KB.

Response Format

Responses appear in the outbox/ directory as R{seq}.msg, matching the command's sequence number. AgentBridge deletes command files after processing; the MCP server deletes response files after reading.

BRIDGE 1.0.1
SEQ 00042
STATUS ok
COUNT 2
WINDOW 1|?|Untitled|10,40,400,300|front
WINDOW 2|?||0,0,640,480|back
TS 20260308T153022
---

STATUS is either ok or error. On error, ERRCODE and ERRMSG fields provide details. Multi-value responses (windows, processes, volumes, files, menu items) use repeated keys (WINDOW, PROCESS, VOLUME, FILEENTRY, MENUBAR, MENUITEM) with pipe-delimited fields.

Heartbeat

AgentBridge writes a heartbeat file in its working directory every ~2 seconds:

BRIDGE 1.0.1
UPTIME 218
TICKS 240498
FRONTAPP Finder
FREEMEM 4096
TS 20260308T173113
---

The MCP server monitors the heartbeat file's modification time to determine if AgentBridge is alive.

Building from Source

git clone https://github.com/SeanFDZ/agentbridge.git
cd agentbridge
npm install
npm run build

Requires Node.js 20+.

AgentBridge binaries are available as pre-built downloads — source code is not distributed.

Project Structure

agentbridge/
├── src/                            # MCP server (TypeScript, GPLv3)
│   ├── server.ts                   # MCP tool definitions and handlers
│   ├── fleet.ts                    # Fleet registry
│   ├── types.ts                    # Type definitions
│   └── bridge/
│       └── client.ts               # Shared folder I/O client
└── config/
    └── fleet.json                  # Fleet configuration

Design Principles

No host-side dependencies. AgentBridge does everything through the Mac Toolbox. There's no SSH, no screen capture, no input injection at the host OS level. This means it works identically on real hardware and emulators.

No system modifications. AgentBridge is a regular application. It doesn't modify your System Folder, install extensions, or change boot configuration. Launch it, quit it, delete it — your Mac is untouched.

Transport agnostic. The protocol is just text files in a folder. How that folder is shared (NAS, AFP, SMB, emulator extfs, USB drive, carrier pigeon) is not AgentBridge's concern.

Cooperative multitasking citizen. AgentBridge yields CPU via WaitNextEvent() every cycle. Other apps run normally.

Stateless commands. Every command is self-contained. The MCP server can crash and restart without the Mac side needing to know.

Credits

AgentBridge 1.0.1 Sean Lavigne © 2026 Falling Data Zone, LLC

Built with Retro68 by Wolfgang Thaller.

Also From Falling Data Zone

MacMind — a single-layer transformer neural network implemented entirely in HyperTalk, trained and running on a Macintosh SE/30. Proof that 1987 scripting can do machine learning.

More apps at apps.fallingdata.zone.

License

This project has two components with separate licenses:

MCP Server (TypeScript, src/ directory) — GNU General Public License v3.0 — free to use, modify, and distribute under GPL terms.

AgentBridge.app (Classic Mac application, source in classic-mac-src/) — modified PolyForm Noncommercial 1.0.0. © 2026 Falling Data Zone, LLC. Pre-built binaries are available for download.

Protocol — the AgentBridge protocol as documented in this README is open.

Available Tools

23 tools
classic_mac_activate_appA

Bring a running application to the front. Requires AgentBridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesApplication name (e.g. 'SimpleText')
targetNoTarget ID or alias. Optional if only one target is configured.

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 describes the core behavior (bringing an app to front) but does not disclose what happens if the app is not running, or if the activation fails. The description is adequate for a simple operation but lacks depth.

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 two short sentences. It is front-loaded with the essential purpose and includes a prerequisite. Every word earns its place without any filler.

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

Completeness4/5

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

For a simple tool with no output schema and full parameter documentation, the description is fairly complete. It specifies the action and a prerequisite. It could mention that the app must already be running, but that is implied. Overall, it provides sufficient context.

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 having clear descriptions. The tool description adds no additional meaning beyond the schema, 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 clearly states the action ('Bring a running application to the front') with a specific verb and resource. It distinguishes from sibling tools like classic_mac_launch_app (which starts an app) and classic_mac_quit_app (which quits an app).

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool: to activate an already running application. It mentions a prerequisite ('Requires AgentBridge') but does not explicitly state when not to use it or name alternatives. The context is clear enough for a straightforward tool.

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

classic_mac_clickB

Click at screen coordinates on a Classic Mac target. Coordinates are relative to the Mac's screen.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX coordinate
yYesY coordinate
buttonNoMouse button (1=left, default 1)
clicksNoNumber of clicks (1 or 2, default 1)
targetNoTarget ID or alias. Optional if only one target is configured.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations to compensate. Description only says 'click' without disclosing that button, clicks, or target parameters affect behavior. For a tool with multiple parameters, more detail is needed (e.g., click-and-release, double-click support).

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

Conciseness5/5

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

Two concise sentences with no redundant information. Front-loaded with the core action and coordinate explanation.

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?

No output schema, no annotations, and 5 parameters but description is minimal. Missing information about return values, prerequisites (target must be online), and coordination with other mouse 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 covers all 5 parameters with descriptions (100% coverage). Description adds minimal value beyond stating coordinates are screen-relative. No elaboration on button or clicks beyond what schema provides.

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

Purpose5/5

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

Description clearly states the action (click), resource (screen coordinates on Classic Mac target), and distinguishes from siblings like move or type. The verb+resource combination is specific.

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. With 21 sibling tools, explicit context (e.g., 'use this to perform a click instead of a move or key press') would help an agent decide.

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

classic_mac_get_aboutA

Get system information about a Classic Mac target: OS version, machine type, RAM, free memory, AgentBridge uptime. Requires AgentBridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoTarget ID or alias. Optional if only one target is configured.

TDQS

A3.6/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 mentions 'Requires AgentBridge' as a prerequisite and lists the information returned, but does not disclose side effects, authorization needs, or rate limits.

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 with no wasted words. It is front-loaded with the purpose and followed by specific details.

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 information retrieval tool with no output schema, the description adequately explains what is returned. However, it lacks usage guidance or error scenarios, which would make it more complete.

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

Parameters3/5

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

Schema description coverage is 100% (the single parameter 'target' has a description). However, the tool description does not add any additional meaning or usage hints 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?

The description clearly states the verb 'Get' and the resource 'system information' and lists specific items (OS version, machine type, RAM, free memory, AgentBridge uptime). This distinguishes it from sibling tools that perform actions like clicking or listing windows.

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 when not to use it. It only states what it does, without contextual cues like prerequisites or exclusions.

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

classic_mac_get_clipboardC

Read the clipboard (scrap) contents as text. Requires AgentBridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoTarget ID or alias. Optional if only one target is configured.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, so the description must carry full behavioral disclosure. It only mentions 'Requires AgentBridge' and reading text, but does not state if the operation is read-only, has side effects, or what happens on failure.

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 concise with two short sentences, front-loading the action. It avoids unnecessary words, but could be slightly more structured with separate sections.

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 read tool with one parameter and no output schema, the description covers the basic purpose but lacks details like return format, error handling, or behavior when clipboard is empty. It is minimally viable.

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% for the single optional parameter. The description does not add further meaning beyond the schema. 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 tool reads clipboard contents as text, using a specific verb and resource. It distinguishes from sibling classic_mac_set_clipboard, which writes. However, it lacks a title and could further clarify what 'scrap' means.

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 is provided. The description does not mention scenarios where reading the clipboard is appropriate or any prerequisites beyond 'Requires AgentBridge'.

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

classic_mac_get_front_windowA

Get detailed info about the frontmost window: title, app, bounds. Requires AgentBridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoTarget ID or alias. Optional if only one target is configured.

TDQS

A3.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 disclose behavioral traits. It states 'Get detailed info' implying read-only, but does not explicitly confirm no side effects, required permissions, or potential errors. The phrase 'Requires AgentBridge' is a prerequisite, not a behavioral trait. Some transparency is present but incomplete.

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

Conciseness5/5

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

The description is a single sentence, front-loading the purpose and key outputs. Every word contributes meaning; no redundant or filler content.

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

Completeness4/5

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

The description lists the specific information returned (title, app, bounds), which is sufficient for a simple query tool. It does not describe the return format (e.g., JSON), but given the simplicity and no output schema, this is acceptable. The sibling context shows many similar tools, but this one is self-contained.

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 covers the one parameter ('target') with description 'Target ID or alias. Optional if only one target is configured.' The tool description does not mention this parameter or add any extra meaning. Since schema description coverage is 100%, baseline is 3, and the description provides no additional value here.

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 gets detailed info about the frontmost window, listing title, app, and bounds. It uses a specific verb ('Get') and resource ('front window'), distinguishing it from sibling tools like classic_mac_list_windows (which lists all windows) and classic_mac_get_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 Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives. It mentions 'Requires AgentBridge' but provides no guidance on when to use this tool over classic_mac_list_windows (e.g., for the front window vs. all windows). Usage context is only implied.

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

classic_mac_get_menu_itemsA

Get all items in a specific menu, including enabled/disabled state and keyboard shortcuts. Requires AgentBridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
menuYesMenu title (e.g. 'File', 'Edit')
targetNoTarget ID or alias. Optional if only one target is configured.

TDQS

A4/5.0
Behavior4/5

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

No annotations provided, so the description carries the full burden. It clearly indicates a read operation (get items) and specifies the returned data includes enabled/disabled state and keyboard shortcuts. It does not mention permissions or side effects, but as a read tool, this is reasonably transparent.

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

Conciseness5/5

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

The description is two sentences, front-loading the purpose and a key requirement. Every sentence adds value without redundancy or unnecessary detail.

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

Completeness4/5

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

For a simple tool with two parameters and no output schema, the description is largely complete. It explains what the tool retrieves (menu items with state and shortcuts). It could optionally describe the return format, but the current level is sufficient for an AI 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%, with the description adding no additional meaning beyond what the schema provides for the two parameters. 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 'Get' and resource 'items in a specific menu', clearly distinguishing from sibling tools like classic_mac_list_menus (lists menus) and classic_mac_menu_select (selects an item). It uniquely identifies what the tool retrieves.

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 states 'Requires AgentBridge' as a prerequisite but does not provide explicit context on when to use this tool versus alternatives like classic_mac_list_menus or classic_mac_menu_select. Usage is implied but lacks exclusions or direct guidance.

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

classic_mac_get_volumesA

List mounted volumes (disks) with free and total space. Requires AgentBridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoTarget ID or alias. Optional if only one target is configured.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It adds the 'Requires AgentBridge' dependency but does not disclose read-only nature, potential errors, or other behavioral traits. It provides some transparency but is incomplete.

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

Conciseness5/5

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

The description is two sentences, efficient, and front-loaded. Every word adds value with no redundancy.

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 simplicity of the tool, the description is adequate but lacks details on return format (units) and error conditions. It meets minimum viability but has gaps.

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 one parameter already described. The description does not add 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.

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'mounted volumes (disks)' with specific data returned ('free and total space'). It uniquely identifies the tool among siblings like list_windows and list_processes.

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 'Requires AgentBridge' as a prerequisite but does not provide guidance on when to use this tool versus alternatives or specify exclusions. Usage context is implied but not explicit.

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

classic_mac_heartbeatA

Read the heartbeat status of a Classic Mac target. Returns uptime, front app, free memory, and whether the bridge is alive.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoTarget ID or alias. Optional if only one target is configured.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It states the tool is a read operation and lists the returned fields, which is adequate but lacks details about potential side effects, failure modes, or performance characteristics. The term 'Read' implies non-destructiveness, but more explicit behavior (e.g., network dependency, real-time nature) would improve 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 consists of two efficient sentences: the first states the core purpose, and the second lists the return data. No extraneous words, perfect front-loading of the 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?

For a simple read tool with one optional parameter and no output schema, the description covers the essential information: what it does and what it returns. It omits error handling or usage notes, but given the low complexity, it is nearly 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 input schema covers 100% of the parameter (target) with a description, so the baseline is 3. The tool description adds no additional meaning beyond what the schema already provides, simply mentioning 'Classic Mac target' which echoes the resource description.

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 ('Read') and resource ('heartbeat status of a Classic Mac target'), and lists specific return values (uptime, front app, free memory, bridge alive). This distinguishes it from siblings like classic_mac_ping which also checks aliveness but without the detailed state.

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 does not provide any guidance on when to use this tool versus alternatives such as classic_mac_ping or classic_mac_list_targets. No explicit context, prerequisites, or exclusions are mentioned, leaving the agent without criteria for tool selection.

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

classic_mac_key_pressA

Press a key with optional modifiers. Use for keyboard shortcuts (e.g. Cmd+S to save) and special keys (return, escape, arrows).

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesKey name: a-z, 0-9, return, tab, escape, space, delete, left, right, up, down, f1-f12, or any single character
targetNoTarget ID or alias. Optional if only one target is configured.
modifiersNoComma-separated modifiers: cmd, opt, shift, ctrl

TDQS

A3.8/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. Discloses pressing keys with modifiers but lacks details on side effects, failure behavior, permissions, or targeting context (e.g., need for focused target). Basic transparency but could be more thorough.

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

Conciseness5/5

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

Two concise, front-loaded sentences with no wasted words. Core action and examples provided efficiently.

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?

Adequate for a simple key press tool with 3 parameters all described. Missing return value information (e.g., success/failure) but overall sufficient given tool simplicity and schema richness.

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. Description adds examples of keys and modifiers (e.g., Cmd+S) but does not significantly extend beyond schema descriptions. No additional semantics for the target parameter.

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

Purpose5/5

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

Description clearly states 'Press a key with optional modifiers' and gives specific examples like Cmd+S, return, escape, arrows. It distinguishes from sibling tools like classic_mac_type_text and classic_mac_click.

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?

Provides clear use cases (keyboard shortcuts, special keys) and an example (Cmd+S), but does not explicitly state when not to use it or compare with alternatives like type_text or click. Implicit guidance is present but not exhaustive.

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

classic_mac_launch_appA

Launch an application on the Classic Mac by path or creator code. Creator codes are 4-character identifiers (e.g. 'ttxt' for SimpleText, 'WILD' for HyperCard). Requires AgentBridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoHFS path to application (e.g. 'Macintosh HD:Applications:SimpleText')
targetNoTarget ID or alias. Optional if only one target is configured.
creatorNo4-character creator code (e.g. 'ttxt', 'WILD', 'CWIE')

TDQS

A3.9/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 says 'Launch an application' but does not disclose what happens if the app is already running, potential side effects, permissions, or return behavior. This is insufficient 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?

Two sentences: first states the purpose, second explains creator codes. No wasted words, front-loaded with key 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?

No output schema, but description does not mention return values (e.g., success, PID). For a launch tool, this is a notable gap. However, all parameters are documented and sibling context is clear.

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

Parameters4/5

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

Schema coverage is 100%, and description adds context: creator codes are 4-character identifiers with examples, path is HFS path, target is optional. This adds 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 it launches an application by path or creator code, with examples of creator codes. It is specific and distinct from siblings like 'activate_app' (which activates an already running app) and 'quit_app'.

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 mentions 'Requires AgentBridge' as a prerequisite and implies two methods (path or creator code). However, it does not explicitly state when to use one over the other or when to consider alternatives like 'activate_app'.

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

classic_mac_list_folderB

List contents of a folder on the Classic Mac. Returns file names, types, creator codes, and sizes. Path uses ':' as separator (e.g. 'Macintosh HD:Documents'). Requires AgentBridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesHFS path using ':' separator (e.g. 'Macintosh HD:System Folder')
targetNoTarget ID or alias. Optional if only one target is configured.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided; description carries full burden. It mentions 'Requires AgentBridge' but omits permissions, side effects, error behavior, or whether it modifies state. Return values are listed but not behavioral traits.

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

Conciseness5/5

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

Three concise sentences covering purpose, output, and path format. No wasted words, front-loaded with key 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?

Given no output schema, description adequately covers return values and path syntax. Could mention error handling or path validation, but remains complete for a simple list tool.

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

Parameters3/5

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

Schema coverage is 100%; description adds context on path separator and return values but does not add significant new meaning beyond schema. 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?

The description clearly states the tool lists folder contents on Classic Mac, specifies return values (file names, types, creator codes, sizes), and notes the path separator. It distinguishes from siblings like classic_mac_list_volumes or classic_mac_list_targets.

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 this tool vs alternatives (e.g., list_targets, list_windows). The description does not mention scenarios or exclusions.

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

classic_mac_list_menusB

List the menu bar contents for the frontmost application. Returns menu titles. Requires AgentBridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoTarget ID or alias. Optional if only one target is configured.

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 the full burden. It states the tool lists menus and returns titles, but does not disclose whether it affects the application state, requires special permissions, or handles errors. Minimal behavioral disclosure.

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

Conciseness5/5

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

The description is extremely concise: two short sentences with no redundant information. It front-loads the main action and includes the return value and a prerequisite, making it efficient for an agent to parse.

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 list tool with one optional parameter and no output schema, the description adequately covers the core functionality. However, it lacks details on how the target parameter affects the output, what happens if multiple targets are configured, or any example output, leaving some gaps.

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 the single parameter 'target', which has a description in the schema. The tool description does not add any additional meaning beyond the schema, so no extra value is provided. 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 tool lists menu bar contents for the frontmost application and returns menu titles. This distinguishes it from sibling tools like classic_mac_get_menu_items and classic_mac_menu_select, which operate on specific menus or select 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?

No guidance is provided on when to use this tool versus alternatives. The description only mentions the requirement for AgentBridge but does not specify when this tool is appropriate or when to use sibling tools like classic_mac_get_menu_items for more detailed menu information.

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

classic_mac_list_processesA

List running applications on a Classic Mac target. Returns app name, creator code, PID, and memory partition. Requires AgentBridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoTarget ID or alias. Optional if only one target is configured.

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the return fields (app name, creator code, PID, memory partition) and the AgentBridge requirement. No negative side effects are implied, which is appropriate for a read-only listing tool.

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

Conciseness5/5

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

Two concise sentences with no superfluous information. The description is front-loaded and 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?

For a simple listing tool with one optional parameter and no output schema, the description adequately covers the purpose, return values, and a key prerequisite. It could note whether system processes are included, 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.

Parameters3/5

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

Schema coverage is 100%, and the schema already describes the 'target' parameter. The description adds no additional meaning beyond the schema, 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 clearly states the action ('List') and the resource ('running applications on a Classic Mac target'), distinguishing it from sibling tools like classic_mac_list_windows and classic_mac_launch_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 versus alternatives. It only mentions a prerequisite ('Requires AgentBridge') but offers no context for selection among sibling listing tools.

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

classic_mac_list_targetsA

List all Classic Mac targets in the fleet with their current status, including architecture, OS version, and whether AgentBridge is alive.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description bears full burden. It describes output but does not explicitly state read-only nature or other behavioral traits (e.g., rate limits, side effects). Being a list operation, it is likely non-destructive, but this is implied rather than stated.

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, front-loaded sentence with no wasted words. Efficiently conveys purpose and output content.

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?

Simple listing tool with no output schema; description covers returned fields (architecture, OS version, alive status). No omitted information for its complexity level.

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, so schema covers 100% of specifications. Description adds no parameter info because none exist. Baseline 4 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?

Clearly states verb 'List', resource 'Classic Mac targets', and includes specific fields (architecture, OS version, AgentBridge alive). Distinct from sibling tools like classic_mac_ping or classic_mac_list_windows.

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 when-to-use or when-not-to-use guidance. While context implies it is for overview, alternatives like classic_mac_ping for specific targets are not mentioned.

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

classic_mac_list_windowsA

List all visible windows on a Classic Mac target. Returns window title, owning application, screen bounds, and layer order. Requires AgentBridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoTarget ID or alias. Optional if only one target is configured.

TDQS

A4/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 the read-only nature (listing windows) and specific return fields (title, app, bounds, layer order). No hidden behaviors or contradictions.

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

Conciseness5/5

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

Two concise sentences with front-loaded purpose and additional details. Every word serves a clear function; no redundancy or vague phrasing.

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 no output schema, the description adequately specifies return content. However, it could mention ordering or pagination details. Still sufficiently complete for a list operation.

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

Parameters3/5

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

The input schema describes the 'target' parameter with 100% coverage. The tool description does not add further meaning to the parameter beyond what the schema already 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 'List all visible windows on a Classic Mac target' with specific verb and resource, and distinguishes from sibling tool 'classic_mac_get_front_window' which targets a single 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 explicitly state when to use this tool versus alternatives, though the sibling tool set suggests differentiation. It does mention a prerequisite ('Requires AgentBridge') but lacks explicit exclusion or context guidance.

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

classic_mac_menu_selectB

Select a menu item by menu title and item name (e.g. menu='File', item='Save As...'). Requires AgentBridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemYesMenu item name (e.g. 'Save As...')
menuYesMenu title (e.g. 'File')
targetNoTarget ID or alias. Optional if only one target is configured.

TDQS

B3.4/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 mentions 'Requires AgentBridge' which is infrastructure, not behavioral. No disclosure of side effects, permissions, or safety implications of selecting a menu item.

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

Conciseness5/5

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

Two concise sentences with minimal waste. The example is helpful and front-loaded.

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

Completeness4/5

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

For a simple tool with well-described parameters and no output schema, the description is largely complete. However, it could mention that selecting an item might be a no-op if already selected, or that it requires the target to be the frontmost application.

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 all three parameters. The description adds an example but no additional semantics beyond the schema. Baseline 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 action ('select a menu item') and the method (by menu title and item name), with an example. It distinguishes itself from siblings like 'list_menus' which list rather than select.

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., using list_menus first to discover available items). No exclusions or prerequisites mentioned beyond 'Requires AgentBridge'.

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

classic_mac_mouse_dragB

Click and drag from one point to another.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesStart X
x2YesEnd X
y1YesStart Y
y2YesEnd Y
targetNoTarget ID or alias. Optional if only one target is configured.

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must disclose behaviors but only says 'click and drag'. It omits whether it simulates mouse down/move/up, coordinate system (screen vs window), timing, or blocking behavior. This is insufficient for safe 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 front-loading the action. Every word is necessary; no redundancy or filler.

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 tool's moderate complexity (5 params, no output schema, no annotations), the description is too sparse. It fails to explain the drag simulation, coordinate system, or optional target usage, leaving the agent with incomplete context.

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 basic descriptions (Start X, End X, etc.). The tool description adds 'from one point to another' but no new semantic detail beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

The description clearly states the action ('click and drag') and the resource ('from one point to another'), which distinguishes it from siblings like classic_mac_click (just click) and classic_mac_mouse_move (move without clicking).

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, prerequisites, or scenarios where it applies. An agent has no context to decide between drag, click, or move.

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

classic_mac_mouse_moveB

Move the cursor to screen coordinates without clicking.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX coordinate
yYesY coordinate
targetNoTarget ID or alias. Optional if only one target is configured.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided. The description does not disclose important behavioral details such as whether coordinates are absolute or relative, what happens with out-of-bounds coordinates, or if mouse events are generated. It only states 'without clicking'.

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 that directly communicates the tool's purpose. It is concise and front-loaded, with no superfluous information. However, it could benefit from slightly more detail 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 no output schema and no annotations, the description is incomplete. It fails to specify coordinate units, screen vs. window coordinates, or behavior with multiple displays. For a mouse movement tool, these details are important for correct invocation.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for x, y, and target. The description adds no additional meaning to the parameters beyond what the schema already provides, resulting in a baseline score 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 action ('Move the cursor') and the resource ('to screen coordinates without clicking'). It effectively distinguishes the tool from siblings like classic_mac_click (clicking) and classic_mac_mouse_drag (dragging).

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 it is for moving without clicking, but it does not explicitly state when to use it versus alternatives or clarify when the optional 'target' parameter is needed. No guidelines on coordinate system or prerequisites.

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

classic_mac_pingB

Ping a Classic Mac target to check if AgentBridge is responding.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoTarget ID or alias. Optional if only one target is configured.

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 must cover behavior fully. It only states the purpose but omits details such as whether the tool is read-only, what the response looks like, or side effects like network timeouts.

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 single-sentence description is maximally concise and front-loads the purpose. Every word is meaningful.

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 no output schema, the description should indicate return values (e.g., boolean or error). It lacks details on success/failure indicators, timeout behavior, or how to interpret results, making it incomplete for a diagnostic tool.

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

Parameters3/5

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

The single parameter 'target' is fully described in the schema (100% coverage). 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.

Purpose5/5

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

The description clearly states the action 'Ping' and the resource 'Classic Mac target' with the explicit purpose 'to check if AgentBridge is responding.' This distinguishes it from sibling tools like classic_mac_list_targets or classic_mac_launch_app.

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 connectivity testing before other operations, but does not explicitly state when to use vs. alternatives (e.g., classic_mac_heartbeat) or provide when-not-to-use guidance.

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

classic_mac_quit_appB

Quit a running application by name. Requires AgentBridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesApplication name (e.g. 'SimpleText')
targetNoTarget ID or alias. Optional if only one target is configured.

TDQS

B3.2/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 only states the requirement for AgentBridge but does not describe what happens if the app is not running, multiple instances, or whether the quit is graceful versus forceful, leaving significant gaps 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.

Conciseness4/5

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

The description is concise with two sentences and front-loaded with the action. It is efficient, though it sacrifices some informativeness for brevity.

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 low complexity (2 parameters, no output schema), the description is minimally adequate but lacks completeness. It does not mention error handling, return values, or behavioral nuances, which are especially needed since no annotations exist.

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% (both parameters described in schema). The description adds no additional meaning beyond the schema; it merely restates the parameter descriptions, 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 ('Quit') and resource ('a running application by name'), which is specific and distinguishes it from sibling tools like classic_mac_launch_app or classic_mac_activate_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?

The description only mentions 'Requires AgentBridge' but provides no guidance on when to use this tool versus alternatives, such as force quitting or using system commands, and no exclusions or prerequisites.

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

classic_mac_send_appleeventC

Send a generic Apple Event to an application. TARGET is app name or creator code, EVENT is the event type (e.g. 'oapp'). Requires AgentBridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
appYesTarget app name or creator code
eventYesApple Event type (e.g. 'oapp', 'odoc')
paramsNoOptional event parameters
targetNoTarget ID or alias. Optional if only one target is configured.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavioral traits. It only states the action without side effects, permissions, error handling, or state changes. Sending a generic Apple Event can alter application state and may require specific privileges, which are not 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?

The description is extremely concise: two sentences with no redundant information. It front-loads the core action and includes key details (target, event, dependency) without waste, earning every sentence.

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 of sending Apple Events and the lack of output schema or annotations, the description is incomplete. It omits success indicators, error handling, return behavior, and contextual constraints, leaving the agent inadequately informed for proper invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds examples ('oapp') and clarifies target as app name/creator code, but mostly restates schema. It provides minimal extra semantic value beyond structured fields.

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 sends a generic Apple Event to an application, specifying the verb 'send' and resource 'Apple Event'. It provides example event types ('oapp'), but does not explicitly distinguish from sibling tools, though their names suggest different operations.

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 given on when to use this tool versus alternatives like specific app control tools (e.g., classic_mac_launch_app). The description lacks indications of prerequisites beyond 'Requires AgentBridge' and does not mention situations where this tool should not be used.

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

classic_mac_set_clipboardA

Set the clipboard (scrap) to the given text. Useful for pasting content into Classic Mac applications. Requires AgentBridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to place on clipboard
targetNoTarget ID or alias. Optional if only one target is configured.

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description must cover behavior. Mentions 'Requires AgentBridge' but does not disclose that the clipboard is overwritten or what happens on failure.

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

Conciseness5/5

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

Two sentences, no extraneous words. Front-loaded with the action and purpose.

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 required parameter and optional target, the description is nearly complete. Could mention overwriting behavior, but not critical.

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?

Parameter descriptions in schema cover 100% of the parameters. The tool description adds no additional semantic value 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 verb 'Set' and resource 'clipboard (scrap)' with a specific action. Differentiates from the sibling tool `classic_mac_get_clipboard` by being the write operation.

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?

Provides context: 'Useful for pasting content into Classic Mac applications.' Does not explicitly exclude alternative tools like `classic_mac_type_text` or `classic_mac_menu_select`.

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

classic_mac_type_textB

Type text on a Classic Mac target. Characters are typed one by one. Make sure the correct text field or application is focused first.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to type
targetNoTarget ID or alias. Optional if only one target is configured.

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 disclose behavioral traits. It mentions character-by-character typing (implying sequential keystroke simulation), but omits details like error handling, timeout, or behavior when no focus is present. This leaves significant ambiguity for the agent.

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-loading the core action and then a usage tip. Every sentence is essential, and there is no redundant 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 tool with no output schema, the description is adequate but lacks completeness about return values, error cases, and behavior when the target is invalid. The focus prerequisite is helpful, but more context would improve reliability.

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?

Both parameters have schema descriptions (100% coverage), so the baseline is 3. The description adds the behavioral nuance 'characters are typed one by one' which relates to the `text` parameter, providing marginal added value beyond the 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 it types text on a Classic Mac target and specifies the character-by-character nature. It distinguishes from the sibling `classic_mac_key_press` implicitly, but does not explicitly differentiate its use case from pressing individual keys.

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 provides a prerequisite ('make sure the correct text field or application is focused first') but does not explain when to use this tool versus alternatives like `classic_mac_key_press` or what the limitations are (e.g., cannot type special keys).

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

Tool Schema Changelog

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

  1. 23 tool updatesv1.0.2
    • First observedclassic_mac_activate_app
    • First observedclassic_mac_click
    • First observedclassic_mac_get_about
    • First observedclassic_mac_get_clipboard
    • First observedclassic_mac_get_front_window
    • First observedclassic_mac_get_menu_items
    • First observedclassic_mac_get_volumes
    • First observedclassic_mac_heartbeat
    • First observedclassic_mac_key_press
    • First observedclassic_mac_launch_app
    • First observedclassic_mac_list_folder
    • First observedclassic_mac_list_menus
    • First observedclassic_mac_list_processes
    • First observedclassic_mac_list_targets
    • First observedclassic_mac_list_windows
    • First observedclassic_mac_menu_select
    • First observedclassic_mac_mouse_drag
    • First observedclassic_mac_mouse_move
    • First observedclassic_mac_ping
    • First observedclassic_mac_quit_app
    • First observedclassic_mac_send_appleevent
    • First observedclassic_mac_set_clipboard
    • First observedclassic_mac_type_text

TDQS

A3.7/5.0

Scored across 23 tools

Disambiguation5/5

Every tool has a clearly distinct purpose, from system info to UI interaction. No two tools overlap in functionality.

Naming Consistency5/5

All tools follow a consistent 'classic_mac_' prefix with verb_noun snake_case pattern (e.g., classic_mac_list_targets, classic_mac_click).

Tool Count5/5

23 tools cover a comprehensive range of operations for Classic Mac targets without being excessive. Each tool serves a clear need.

Completeness4/5

Covers system info, process/app control, UI automation, clipboard, file listing, and Apple Events. Minor gaps like file creation/deletion or reading file contents, but core remote control scenarios are well-supported.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • 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.
    7 npm
    415
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A lightweight MCP server that bridges AI agents and macOS, enabling automation of file navigation, application control, UI interaction, browser automation, and system operations.
    176
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to control macOS applications through the Accessibility API, AppleScript, and CGEvents, providing structured text output of UI elements and actions without needing screenshots.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    macOS MCP server that enables AI agents to directly control the host OS, including mouse, keyboard, windows, files, and accessibility automation for computer-use workflows.
    1
    -