0.0 / 30
What changed in the harness
Selection accuracy 100%, destructive-action safety rate 0% (baseline only -- no rewrite pass applied).
Category breakdown
Where the score comes from.
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
01Safety
02Legibility
28.7 / 30
03Economics
17.3 / 20
04Discoverability
14.7 / 20
Highest-impact fix
Estimated gain +30 pointsAdd explicit identity and permission preflight tools
Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.
Description evidence
Defects and rewrites.
0 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 |
|---|---|---|
| No description defects were flagged in this assessment. | ||
Selection evidence
Confusable tool pairs.
4 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
tracepass_passport_fields |
tracepass_passport_parties |
high | Both tools write data onto an existing passport, and passenger-facing terms like 'update the manufacturer/importer on passport X' could be routed to either: passport_fields sets arbitrary fieldKey/value pairs while passport_parties sets named economic-operator roles. Since party roles often read like fields, an agent can pick the wrong one. |
tracepass_passports |
tracepass_passport_fields |
medium | A generic task like 'fix/update the data on passport 123' is ambiguous between the catch-all passport manager (which handles lifecycle reads) and the dedicated field-updater, especially since the user says 'passport' for both and the passports tool is the first place an agent looks. |
tracepass_passports |
tracepass_passport_parties |
medium | 'Manage the parties on passport X' or 'add the manufacturer to passport Y' involves the same entity name (passport), and the passports tool is the umbrella manager (list/get/create), so a task phrased as 'manage passport 123's manufacturer' could select the wrong tool before reading that parties handles roles. |
tracepass_passport_fields |
tracepass_templates |
medium | The word 'field(s)' appears in both descriptions: templates.get returns the full field schema per category, while passport_fields updates field values on an instance. A task like 'what fields must a battery passport have' or 'get the fields for passport X' could be routed to either, even though one is schema reference and the other is write-only. |
Compare the field