30.0 / 30
What changed in the harness
Selection accuracy 98→100, token cost up 3%, 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
13.5 / 20
Highest-impact fix
Estimated gain +7 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 |
|---|---|---|
extract_links |
no_return_description |
Extract all links from a page, returning each link's href and anchor text. Resolves relative URLs to absolute form and skips in-page anchors and javascript: links. Use for site analysis, crawl lists, and navigation discovery. |
extract_metadata |
no_return_description |
Extract a page's metadata and return its title, description, Open Graph tags (og:title, og:description, og:image), canonical URL, and favicon. Use for link previews, sharing cards, and SEO checks. |
Selection evidence
Confusable tool pairs.
2 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
extract_links |
extract_metadata |
low | Both extract page-level information (title, URLs), so a vague task like 'gather the page's URLs and info' could be split either way; however, the descriptions clearly separate link hrefs/anchor text from metadata tags/canonical URL, making genuine mis-selection unlikely except for edge phrasing like 'get the page URL' where canonical URL vs link hrefs overlap. |
scrape_url |
scrape_multiple |
medium | Both scrape page content and return title/excerpt, so a task phrased as 'scrape content from these URLs for articles' is ambiguous: scrape_url advertises 'best for articles' with full main content, while scrape_multiple handles multiple URLs but returns only title/excerpt; an agent must infer cardinality from the prompt and may pick the wrong one when the user mixes plural URLs with full-content needs. |
Compare the field