Three tools with basic schemas and descriptions, but significant gaps in parameter documentation and output structure. Tool names follow verb_noun convention (create-note, search-notes, get-note-content). Descriptions exist but are minimal (10-50 chars). Input schemas use Zod validation with type constraints, but lack detailed parameter descriptions beyond basic requirements. No output schema documentation. Error handling returns text responses but lacks actionable recovery guidance. Missing idempotency hints for write operations.
Creates a new note in Apple Notes
Retrieves the content of a specific note by title
Searches for notes by query string
Tool descriptions are too brief (10-50 chars). Descriptions must be 50-200 chars to provide LLM context for tool selection. Current descriptions lack WHEN to use, WHAT it returns, and any prerequisites.
Parameter descriptions are minimal or missing. 'tags' in create-note lacks description. 'query' and 'title' parameters have only constraint info, not usage context. LLMs cannot infer parameter meaning from names alone.
No output schema documented. LLMs cannot plan downstream calls or extract structured data. search-notes returns a formatted text list; get-note-content returns raw text. Both should return structured objects with typed fields.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
create-note is a destructive operation but lacks idempotency hint or confirmation pattern. Agents retrying on ambiguous failures risk duplicate note creation. No dry-run or confirmation step offered.
Error responses are generic text strings without actionable recovery guidance. 'Error creating note: ...' tells the LLM nothing about whether to retry, ask the user, or give up. No error classification (retryable vs fatal).