30.0 / 30
What changed in the harness
Selection accuracy 93%, destructive-action safety rate 100% (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
27.8 / 30
03Economics
19.6 / 20
04Discoverability
14.6 / 20
Highest-impact fix
Estimated gain +5 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.
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.
5 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
detect_document |
analyze_document |
medium | Both names share 'document' and accept the same path input. A task phrased 'analyze this document photo' or 'detect the document edges' can route an agent to the wrong one — especially since analyze_document also returns rectangles, so a user wanting corner points might get analyze_document instead of the dedicated detector, and vice versa. |
ocr_image |
classify_image |
medium | Both take an image path and are described as extracting information. Vague phrasings like 'read this image', 'analyze this screenshot', or 'tell me what's in this image' genuinely straddle text extraction (OCR) vs content classification, and both surface an 'apple vision, offline' profile. |
detect_document |
classify_image |
low | detect_document's own doc warns 'DO NOT USE for classifying the image (use classify_image)', signaling that 'is this a document/receipt?' or 'identify what this image is' tasks can be misrouted to the boundary detector or to classify when the user wants the other. |
ocr_image |
detect_barcodes |
low | Both decode content from an image: 'read the code on this label' or 'scan the code from this file' is ambiguous between extracting printed text and decoding a QR/barcode, especially since ocr_image's doc says it should not be used for barcode detection but the plain 'extract the code' phrasing could pick either. |
detect_faces |
classify_image |
low | 'Identify the people in this photo' or 'are there faces here' could be answered by classify_image (which returns a 'person'/face-ish category) or detect_faces (which counts and locates faces); both share the same image-path interface, making the choice depend on subtle wording. |
Compare the field