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
28.0 / 30
03Economics
17.7 / 20
04Discoverability
14.3 / 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 |
Reads, creates, updates, and deletes reminders in the default or specified list. For read operations, returns the matching reminder(s) with their id, title, dates, completion status, and other fields; for create/update/delete operations, returns the resulting reminder object and its id so it can be used in later calls. |
reminders_lists |
no_return_description |
Reads, creates, updates, and deletes Reminders lists. For read operations, returns the available lists with their ids and names; for create and update operations, returns the created or updated list; for delete, returns confirmation of the removed list. |
calendar_events |
no_return_description |
Reads, creates, updates, and deletes calendar events within a specified or default calendar. For read operations, returns the matching events with their id, title, dates, notes, location, and availability; for create/update/delete operations, returns the resulting event object and its id for use in later calls. |
calendar_calendars |
no_return_description |
Reads the available calendar collections. Returns the list of calendars with their names and ids so you can select a target calendar (typically via targetCalendar on calendar_events) before creating or updating events. |
reminders_subtasks |
no_return_description |
Reads, creates, updates, deletes, toggles, and reorders subtasks/checklists within a reminder; subtasks are stored in the notes field and visible in the native Reminders app. Returns the reminder's subtasks (with their subtask ids and completion status) for read and toggle operations, and the updated subtask or subtask list for write and reorder operations. |
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 |
|---|---|---|---|
calendar_events |
calendar_calendars |
low | Descriptions clearly separate events (time blocks) from calendars (read-only collections for inspection), so a task like 'list my calendars' is unlikely to be misdirected to events. Confusion only in vague phrasing like 'show me my calendar', which the distinctio resolves. |
reminders_tasks |
reminders_lists |
medium | A natural task like 'create a new shopping list' or 'add a reminder list' is ambiguous: one tool creates Reminders list objects while the other creates reminder tasks. Users say 'make me a to-do list' when they actually want reminder items. |
reminders_lists |
reminders_subtasks |
low | Subtask tool is explicitly scoped to checklists within a reminder and requires reminderId, while lists manages top-level lists by name. A task like 'add a sublist' could waver, but the reminderId requirement usually disambiguates. |
reminders_tasks |
reminders_subtasks |
medium | Both manage reminder content and reminders_tasks even exposes a 'subtasks' property for create, so an agent may try to create subtasks directly via reminders_tasks instead of reminders_subtasks. Tasks phrased as 'add a checklist item' or 'add a subtask to my reminder' are genuinely ambiguous. |
Compare the field