macOS desktop assistant with a Swift client, local Python backend, project chat, and agent orchestration
Server has 9 tools with basic schemas and descriptions, but significant quality gaps. All tools have descriptions (10-100 chars, mostly adequate) and input schemas with type definitions. However, parameter descriptions are sparse or missing context. Tool naming follows verb_noun convention (list_, create_, get_, set_, toggle_) which is good. Critical issues: (1) No output schemas documented anywhere, LLMs cannot plan downstream calls or extract results. (2) No error handling guidance, tools return raw exception strings like 'Error reading directory...' with no recovery hints. (3) Parameters lack constraints (e.g., set_system_volume accepts 0-100 but no min/max in schema). (4) No pagination support for list_directory despite potential for large results. (5) Security concerns: create_email_draft and create_note_draft use unescaped AppleScript string interpolation, vulnerable to injection. (6) Tool descriptions are functional but terse, most under 100 chars, missing WHEN/WHY context. Baseline: 194 chars average for A+ tools; these average ~65 chars.
Create an email draft in the macOS Mail app.
Create a new note in the macOS Notes app.
Get the URL and Title of the currently active tab in Chrome or Safari. Useful for summarizing or reading web pages even if the browser is in the background.
Get the current directory path and the paths of any selected files in the macOS Finder. Useful when the user asks to operate on 'these files' or 'this folder'.
Get the absolute file path of the currently active document in Xcode.
List the contents of a directory on the user's local file system.
No output schemas documented. LLMs cannot infer what fields are returned, breaking downstream tool chaining and result extraction.
Error responses are raw exception strings ('Error reading directory...') with no recovery guidance. LLMs cannot determine if errors are retryable or what to do next.
AppleScript string interpolation in create_email_draft and create_note_draft is unescaped, vulnerable to injection attacks if recipient/subject/body contain quotes or special characters.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Extract readable text from a local image or screenshot using OCR. Useful when the user references an attached screenshot or image file.
Set the system volume to a specific level (0-100).
Toggle the macOS system appearance between Light and Dark mode.
Parameter descriptions are minimal or missing context. E.g., 'path' in list_directory lacks guidance on absolute vs relative, symlink handling, or permission errors. Baseline: 72 chars per param; these average ~40 chars.
set_system_volume accepts 'level' (0-100) but schema lacks minimum/maximum constraints. LLMs may pass invalid values like -50 or 150.