01Safety
0.0 / 30
What changed in the harness
Selection accuracy 98→98, token cost up 6%, unconfirmed writes 0%→0%.
Category breakdown
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
0.0 / 30
28.4 / 30
20.0 / 20
11.1 / 20
Highest-impact fix
Estimated gain +30 pointsExpose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.
Description evidence
3 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 |
|---|---|---|
list_comments |
no_return_description |
List Loupe product-feedback comments for the project as a task backlog, optionally filtered by status or page URL. Returns an array of matching comment objects (id, status, url, request text) for a PM-flagged backlog you can work through. |
update_status |
params_unexplained no_return_description |
Update a comment's status by id (the id returned from list_comments) to one of open, in_progress, or done. Set to in_progress when you start work and done when the change is shipped, closing the loop back to the PM. Returns the updated comment object reflecting the new status. |
propose_change |
no_return_description |
Submit the modified UI for a comment (identified by its id from list_comments): the rewritten HTML, optional accompanying CSS if not inlined, and optional notes explaining the change. Stores the proposal on the comment for the dev team to review as code and a live preview in the dashboard, and returns the updated comment record including the stored proposal. Use get_comment first to see the original element, its computed styles, and the screenshot. |
Selection evidence
1 pair where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
list_comments |
get_comment |
low | Both operate on comments, but list_comments requires no id and returns a backlog while get_comment requires a specific comment id obtained from list_comments; the natural workflow order makes confusion between which to call first unlikely, though an agent asked to 'get feedback on a page' might briefly consider either. |
Compare the field