01Safety
0.0 / 30
What changed in the harness
Selection accuracy 100→100, 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
26.5 / 30
19.4 / 20
10.0 / 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
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 |
|---|---|---|
confirm_regeneration |
no_return_description |
Finalize a regeneration by selecting one of the 4 candidates. Free — credit was charged during regenerate_icon. Returns the finalized icon's identifier so you can download it with download_icon. |
check_credits |
name_restates_behavior no_return_description |
Free to call. Returns the current credit balance along with account information (e.g., plan and usage details) so you can decide whether you have enough credits for paid operations. |
save_to_library |
params_unexplained no_return_description |
Save a generated icon to your library for free re-downloads. Free. Provide generationId from generate_icon or bundleId from generate_bundle, plus the prompt used to generate it. Set variations to the number of variations that were produced so the library entry records them. Returns confirmation of the saved library entry. |
list_library |
no_return_description |
Browse your saved icons. Free. Use download_from_library with a library item's id. Returns the matching library items (filtered by status and type) with their ids, paginated by limit and offset. |
claim_daily_credits |
name_restates_behavior no_return_description |
Free and available once per day. Adds 2 credits to your account balance. Returns the updated credit balance after claiming. |
Selection evidence
6 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
normalize_bundle |
generate_bundle |
medium | Both plan/generate an icon bundle and return a bundleId; a task like 'create an icon bundle for my app' could make the agent call normalize_bundle (which only plans, not generates) or call generate_bundle without the prerequisite planning |
generate_icon |
regenerate_icon |
medium | A task like 'I don't like my icon, make another version' is ambiguous: the agent might call generate_icon fresh instead of regenerate_icon, since both take a prompt and produce previews and the regenerate flow requires an existing session/bundle plus a confirm step |
generate_icon |
download_icon |
medium | The generation tool explicitly notes previews are watermarked and points to download_icon for final assets, so a task like 'I want the final icon' could trigger download_icon without first generating (no generationId), or generate only and never download the real asset |
download_icon |
download_from_library |
medium | A task like 're-download my icon' is ambiguous about the ID source: download_icon expects a generation/bundle ID from the fresh generation flow while download_from_library expects a libraryId from list_library; the agent could pass the wrong ID type and fail |
generate_icon |
generate_bundle |
medium | A task like 'generate icons for my project' leaves the single-vs-bundle scope unclear; both tools accept prompts, styles, and reference images and cost credits, so the agent might pick the single generator when several related icons were intended |
check_credits |
claim_daily_credits |
low | A task like 'I want more credits' could make the agent check the balance instead of claiming, but the verbs (check vs claim) and descriptions are distinct enough that confusion is unlikely |
Compare the field