01Safety
0.0 / 30
What changed in the harness
Selection accuracy 98→95, token cost down 0%, 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.0 / 30
20.0 / 20
15.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
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 |
|---|---|---|
releases |
no_return_description |
List the Common Crawl releases the API can query, returning each release with its `id`. Does not count against any quota; pass a release `id` to the backlinks tool to query a specific snapshot instead of the latest. |
Selection evidence
1 pair where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
gap_analysis |
gap_outreach_targets |
medium | Both start with the same 'gap' token and share nearly identical input schemas and workflow; gap_outreach_targets literally runs a gap analysis then ranks the results. A natural-language task like 'find backlink gap opportunities' or 'give me prospects that link to competitors but not me' could lead an agent to either tool: gap_analysis returns the raw gap domains, while gap_outreach_targets is the purpose-built ranked version, and neither description clearly flags the other. A user asking to 'run a gap analysis and see which domains link to competitors' would likely pick gap_analysis, whereas 'get outreach targets from the gap analysis' points to gap_outreach_targets — a genuinely ambiguous wording space despite only one shared token. |
Compare the field