30.0 / 30
What changed in the harness
Selection accuracy 98→98, token cost up 2%, 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
27.9 / 30
03Economics
20.0 / 20
04Discoverability
10.9 / 20
Highest-impact fix
Estimated gain +9 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 |
|---|---|---|
get_tool |
no_return_description |
Get the full profile of one AI tool by its directory slug. Returns an object with the tool's description, pricing, key features, editorial verdict and rating, the date it was last human-verified, lifecycle status, and the official site URL. |
list_tools |
no_return_description |
List the top-rated active AI tools in a category or for a job role, optionally filtered by pricing. Returns a ranked list of matching tools with slug, one-line description, pricing model, and rating. Good for "what are the best AI tools for sales" or "free tools in <category>". |
Selection evidence
Confusable tool pairs.
8 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
search_tools |
list_tools |
medium | A request like 'find the best AI tools for sales' could invoke either search_tools (keyword search) or list_tools (category/role-based top list); both discover tools and overlap in intent. |
get_tool |
compare_tools |
low | Both take slugs and return tool profiles, but compare_tools requires two slugs for head-to-head comparison, making confusion unlikely except in vague 'tell me about X vs Y' phrasing. |
get_tool |
check_tool_status |
medium | A query like 'is Jasper still around' could plausibly trigger get_tool (which includes lifecycle status) instead of the more specific check_tool_status. |
search_tools |
get_tool |
low | search_tools discovers via keyword while get_tool needs an exact slug; an agent might mistakenly call get_tool with a raw tool name expecting search-like behavior. |
check_tool_status |
compare_tools |
low | Both can surface lifecycle/alive status, but compare_tools needs two specific slugs, reducing overlap for single-tool status checks. |
search_tools |
compare_tools |
low | Little functional overlap since compare_tools requires two known slugs while search_tools is for open-ended discovery; unlikely to be confused. |
check_tool_status |
list_tools |
low | list_tools filters by category/role/pricing for top tools, while check_tool_status checks a specific tool's liveness; minimal overlap in typical phrasing. |
search_tools |
check_tool_status |
low | Both could be invoked from 'is X a good tool' style queries, but their outputs (discovery vs alive/dead status) are distinct enough to rarely be confused. |
Compare the field