30.0 / 30
What changed in the harness
Selection accuracy 94→96, token cost up 19%, 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
23.8 / 30
03Economics
20.0 / 20
04Discoverability
12.1 / 20
Highest-impact fix
Estimated gain +8 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.
9 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_tools |
name_restates_behavior no_return_description |
List every running calculator and tool available on RunDida, returning each one's name, slug, and short description, so you can choose the right tool before fetching full details with get_tool. |
get_tool |
name_restates_behavior no_return_description |
Fetch full details for a single running tool by its slug (e.g. "pace-calculator" or "heart-rate-zones"), returning its FAQs and related tools; call list_tools first to discover available slugs. |
list_marathons |
name_restates_behavior no_return_description |
Return all marathon events tracked by RunDida, each with its date and location, so you can find upcoming races before fetching full details with get_marathon. |
get_marathon |
name_restates_behavior no_return_description |
Fetch detailed information for a specific marathon by its ID or slug (e.g. "tokyo" or "berlin2026"), returning details including a countdown to race day and Schema.org data; use list_marathons to find the slug first. |
predict_race |
name_restates_behavior |
Estimate your finish time for a target distance from a known race result using the Riegel formula: provide the known_distance and known_time you ran, and optionally a target_distance (defaults to showing all standard distances such as 5k, 10k, half, and marathon). |
heart_rate_zones |
name_restates_behavior no_return_description |
Compute your heart rate training zones and return them as bpm ranges using the Karvonen method: provide your age (required), plus optionally your resting heart rate (default 60 bpm) or a known max heart rate (auto-calculated if omitted). |
marathon_countdown |
name_restates_behavior no_return_description |
Return the countdown (time remaining until race day) for the marathon with the given ID or slug (e.g. "tokyo", "boston", "kobe2026"). |
list_guides |
name_restates_behavior no_return_description |
Return every running guide and educational article available on RunDida, each with its slug, so you can pick one before fetching the full article with get_guide. |
get_guide |
name_restates_behavior no_return_description |
Fetch full details for a single running guide by its slug (e.g. "first-marathon-training" or "couch-to-5k-complete-guide"), returning the article content along with FAQs and related tools; call list_guides first to find available slugs. |
Selection evidence
Confusable tool pairs.
3 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
get_tool |
get_guide |
medium | The two definitions are near-identical ('Get detailed information about a specific running tool/guide including FAQs and related tools') and both take a slug, so a task like 'tell me about the heart-rate-zones resource' or 'what is the couch-to-5k program' could plausibly select either since tools and guides overlap as running resources. |
get_marathon |
marathon_countdown |
high | get_marathon's description explicitly says it includes a countdown, and both take the same marathon id/slug parameter, so a task like 'get the countdown for the boston marathon' matches both definitions and could yield the wrong member. |
get_marathon |
get_guide |
low | Both are 'Get detailed information about a specific marathon/guide' with a concrete existing guide slug 'first-marathon-training', so a vague task like 'get detailed information about running the marathon' has residual ambiguity; however event-vs-article context usually disambiguates since one takes a marathon id and the other a guide slug. |
Compare the field