01Safety
0.0 / 30
What changed in the harness
Selection accuracy 100→100, token cost up 3%, 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
29.1 / 30
16.2 / 20
15.3 / 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
1 defect 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 |
|---|---|---|
message_human_operator |
no_return_description |
Send a free-form message to the human operator — questions, scoping, custom or recurring projects, anything that is not yet a ready-made task. reply_to is REQUIRED (an email you or your principal can read); it is the only way the operator can answer. Returns a confirmation that the message was received and queued for the operator to read, along with any reference identifier for the message. |
Selection evidence
4 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
submit_human_task |
message_human_operator |
medium | For a vague or custom request ('ask a human to check X'), an agent might either submit it directly as a task or send a scoping message first, since both accept a free-text description of work for the human operator. |
get_human_services |
submit_human_task |
low | Both relate to initiating human work, but their purposes (catalog lookup vs actual task submission) are distinct enough that confusion is unlikely except for agents skipping the manifest check. |
submit_human_task |
check_task_status |
low | Submitting a task and checking its status are sequential, clearly different actions; unlikely to be confused despite sharing the 'task' token. |
get_human_services |
message_human_operator |
low | Fetching the manifest is informational while messaging is an action; a task asking 'what can the human do' vs 'ask the human about X' are distinguishable, though a vague scoping question could nudge toward either. |
Compare the field