Public leaderboard

Public assessment

fradser/mcp-server-apple-reminders (mcp-server-apple-events)

mcp-server-apple-events · v1.4.0 · scanned

What changed in the harness

Selection accuracy 100→100, token cost up 3%, unconfirmed writes 0%→0%.

Category breakdown

Where the score comes from.

Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.

01Safety

0.0 / 30

0.0 out of 30
02Legibility

27.6 / 30

27.6 out of 30
03Economics

17.5 / 20

17.5 out of 20
04Discoverability

13.7 / 20

13.7 out of 20

Highest-impact fix

Estimated gain +30 points

Add explicit identity and permission preflight tools

Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.

Description evidence

Defects and rewrites.

5 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.

Tool Defect types Suggested rewrite
reminders_tasks
no_return_description
Manages reminder tasks: reading (single or filtered list), creating, updating, and deleting reminders, including alarms, recurrence, location triggers, tags, and subtasks. Returns the created/updated reminder object, a confirmation of deletion, or an array of matching reminders for read operations.
reminders_lists
no_return_description
Manages reminder lists: reading, creating, updating (renaming/recoloring), and deleting reminder lists. Returns the created/updated list object, a confirmation of deletion, or an array of lists for read operations.
calendar_events
no_return_description
Manages calendar events (time blocks): reading (by date range, calendar, account, or search term), creating, updating, and deleting events, including alarms, recurrence rules, and structured locations. Returns the created/updated event object, a confirmation of deletion, or an array of matching events for read operations.
calendar_calendars
no_return_description
Reads and lists available calendar collections (with their names and accounts). Use to inspect available calendars before creating or updating events. Returns an array of calendar objects.
reminders_subtasks
no_return_description
Manages subtasks/checklists within a reminder, stored in the notes field and visible in the native Reminders app. Supports read (list subtasks), create (add new), update (modify title/completion), delete (remove), toggle (flip completion), and reorder (change order). Returns the updated subtask or array of subtasks reflecting the change.

Selection evidence

Confusable tool pairs.

4 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.

Tool A Tool B Confidence Why they collide
reminders_tasks reminders_subtasks high reminders_tasks itself can create subtasks via its 'subtasks' array on create, while reminders_subtasks manages the same checklist items directly. A request like 'add buy milk to my grocery reminder' could plausibly be routed to either tool since both can produce a subtask-like item.
reminders_lists reminders_subtasks medium Both involve a 'list' concept ambiguous in natural language: reminders_lists manages reminder containers (e.g. 'Shopping' list) while reminders_subtasks manages checklist items within one reminder. A phrase like 'add items to my shopping list' could be misread as creating a list vs. adding subtasks to an existing reminder titled 'Shopping'.
calendar_events calendar_calendars medium calendar_calendars only reads calendar collections/accounts, while calendar_events manages actual scheduled events; a vague request like 'show me my calendar' could be misrouted to calendar_calendars instead of calendar_events (read), especially since calendar_calendars is often a precursor tool used to find calendar names.
reminders_tasks reminders_lists low reminders_tasks manages individual reminder items and reminders_lists manages the containing lists; a request like 'delete my grocery reminders' is mostly clear as deleting tasks, but could momentarily be confused with deleting the list itself, especially with filterList vs name parameters overlapping conceptually.

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard