30.0 / 30
What changed in the harness
Selection accuracy 93→93, token cost up 1%, 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.1 / 30
03Economics
20.0 / 20
04Discoverability
11.1 / 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.
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 |
|---|---|---|
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 up to <limit> tools ranked by rating, each with its 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.
5 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 |
high | Both are discovery tools. A task like "best AI tools for sales" or "top free productivity tools" fits both a keyword/use-case semantic search and a top-rated category/role listing, so the agent can plausibly pick the wrong one without reading that list_tools restricts to top-rated/active tools while search_tools is semantic discovery. |
search_tools |
get_tool |
medium | A request like "get the rating, pricing, and description of Jasper" can be satisfied by search_tools, which already returns slug, one-line description, pricing and rating, so an agent may stop at search_tools instead of calling get_tool for the full profile — or pick get_tool needing a slug it doesn't yet have. |
get_tool |
check_tool_status |
medium | Both report on a single tool. get_tool's profile includes lifecycle status, so a query like "is Gamma still active or shut down" could lead the agent to get_tool for the status field, even though check_tool_status is the dedicated, more reliable call. |
compare_tools |
list_tools |
medium | A task like "compare the top AI marketing tools" is ambiguous: list_tools returns the top tools in a role/category for manual comparison, while compare_tools only accepts two specific slugs and would be misused for category-level comparison, leading to a wrong (or failed) tool call. |
check_tool_status |
compare_tools |
low | A query like "check if these two tools are still alive" maps mostly to check_tool_status, but compare_tools also surfaces lifecycle status for both slugs, so an agent focused on status could pick either; only a weaker overlap since their primary intents (aliveness vs. comparison) differ. |
Compare the field