0.0 / 30
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
02Legibility
27.6 / 30
03Economics
17.5 / 20
04Discoverability
13.7 / 20
Highest-impact fix
Estimated gain +30 pointsAdd 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