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
25.7 / 30
19.9 / 20
9.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
7 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 |
|---|---|---|
publish_temp |
no_return_description |
Publish an artifact (HTML, Markdown, CSV, or Mermaid) to temp.md and return its public URL along with the temp_id and update_token needed for future updates; both are also saved to .tempmd automatically. Use only for a NEW artifact — if this project already has a Temp for it (check .tempmd), use update_temp to keep the same link. |
update_temp |
params_unexplained no_return_description |
Push a new version of an artifact behind the same temp.md URL — no re-sharing needed. Resets the 7-day active window. Reads temp_id and update_token from the project's .tempmd file when omitted. title optionally sets or updates the artifact's display title (omit to keep the current title). Returns confirmation of the update, including the unchanged public URL; if the update fails, the previous version stays live. |
get_temp_status |
params_unexplained no_return_description |
Check a Temp's lifecycle using its temp_id and update_token (read from the project's .tempmd file when omitted). Returns the Temp's current state (active/cooling/expired), when it expires or expired, and whether it can still be restored. |
restore_temp |
params_unexplained no_return_description |
Reactivate a recently expired Temp using its temp_id and update_token (read from .tempmd when omitted), bringing the same canonical URL back online. Only works within 7 days of expiry. Returns the reactivated Temp's status and public URL. |
snapshot_temp |
params_unexplained no_return_description |
Freeze the current version of a Temp, identified by temp_id and update_token (read from the project's .tempmd file when omitted), as a fixed reference — for sign-offs and 'approve exactly this' moments. label optionally names the snapshot (e.g. 'client sign-off v2'). The canonical link keeps serving the latest version; this call returns a separate, immutable snapshot URL to share only when exactness matters. |
set_comments |
params_unexplained no_return_description |
Toggle pinned visitor comments (Pindrop) on a Temp's page, identified by temp_id and update_token (read from the project's .tempmd file when omitted); enabled set to true turns comments on, false turns them off. Returns confirmation of the updated comments setting. |
list_temps |
name_restates_behavior no_return_description |
Read the project's .tempmd records file (no network call) and return the list of Temps recorded for this project, including each one's temp_id, title, and public URL. |
Selection evidence
5 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
publish_temp |
update_temp |
high | A request like 'publish this updated report' could match either publishing a new artifact or pushing a new version behind the same URL; both accept file/additional_files/title/spa_mode with nearly identical schemas. |
restore_temp |
snapshot_temp |
low | Both take only temp_id/update_token/project_dir and manipulate an existing Temp's state, but their purposes (reactivating expired vs freezing a version) are distinct enough that phrasing rarely overlaps. |
update_temp |
snapshot_temp |
medium | A task like 'lock in this version for approval' could be misrouted to update_temp instead of snapshot_temp since both deal with 'versions' of a Temp, though update_temp changes the live content while snapshot_temp freezes a reference copy. |
publish_temp |
snapshot_temp |
low | Both produce a URL for an artifact, but publish_temp is for brand-new content while snapshot_temp requires an existing temp_id, making confusion unlikely except in vague 'get me a link for this' phrasing. |
update_temp |
restore_temp |
low | Both can operate using only stored .tempmd credentials and affect an existing Temp, but restoring an expired link versus pushing new content are semantically distinct actions unlikely to be confused. |
Compare the field