01Safety
0.0 / 30
What changed in the harness
Selection accuracy 100→100, token cost up 9%, 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
14.7 / 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
2 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 |
|---|---|---|
search_sounds |
name_restates_behavior no_return_description |
Search myinstants.com for sound clips whose titles match the given query. Returns a list of matching sound buttons so you can select one to play via play_sound. |
browse_category |
name_restates_behavior no_return_description |
List the sound buttons available under a given myinstants.com category, such as memes, games, reactions, or sound effects. Returns the sound buttons in that category so you can pick one to play via play_sound. |
Selection evidence
3 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
search_sounds |
play_sound |
medium | play_sound's input schema includes a 'query' field described as 'Quick search — plays first result', so it embeds search semantics. A task like 'search for a meme sound' could make an agent pick play_sound (mixing up search with immediate playback), while a task like 'play a sound matching X' could make it pick search_sounds first, blurring the search/play boundary. |
search_sounds |
browse_category |
medium | Both tools produce sound listings and differ only in navigation strategy (free-text query vs fixed category list), with no schema signal to disambiguate. A task like 'find sounds about games' or 'find funny sounds' plausibly maps to search_sounds('games'/'funny') or to browse_category('games'/'memes'), so a task framed as 'find' is genuinely ambiguous between the two. |
browse_category |
play_sound |
low | One tool explicitly plays audio while the other only browses listings, and category names are predefined, reducing ambiguity. However, a task like 'play a sound from the pranks category' forces a multi-step browse-then-play plan; an agent could wrongly use browse_category to fulfill a 'play' intent or call play_sound without a slug. The action words mostly disambiguate, so confusion is unlikely. |
Compare the field