30.0 / 30
What changed in the harness
Selection accuracy 100→100, token cost up 4%, unconfirmed writes 100%→100%.
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
20.0 / 20
04Discoverability
17.1 / 20
Highest-impact fix
Estimated gain +3 pointsMake target tools discoverable on the first call
Clarify tool names, decision boundaries, and required argument schemas so an agent can choose and construct the target call without exploratory steps.
Description evidence
Defects and rewrites.
2 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 |
|---|---|---|
list_headings |
name_restates_behavior no_return_description |
Return a table of contents for a markdown file by listing every heading level (# through ######) in document order with each heading's text and level, so callers can navigate long documents or build an index. |
find_code_blocks |
name_restates_behavior no_return_description |
Find all fenced code blocks in a markdown file and return each block's source text and language tag when present. If a language is provided, only blocks matching that language (e.g. typescript, python) are returned, useful for locating examples of a specific code type. |
Selection evidence
Confusable tool pairs.
1 pair where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
list_files |
search_docs |
medium | A task like 'find which markdown docs mention installation' or 'which files cover topic X' is plausibly misread as listing files vs full-text searching content, since both take a directory and both descriptions center on '.md files'. The word 'find' in the task points to search_docs, but an agent could pick list_files to enumerate paths instead of content matches. |
Compare the field