30.0 / 30
What changed in the harness
Selection accuracy 100→100, 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
28.0 / 30
03Economics
19.4 / 20
04Discoverability
15.0 / 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.
3 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 |
|---|---|---|
suggest_recipe |
params_unexplained |
Suggest a recipe for a target beer style, with quantities scaled to the finished batch volume. Returns grain bill, hop schedule, yeast selection, and process parameters; batch_size_litres sets the batch volume the recipe is scaled to (default 20 litres when omitted). |
calculate_ibu |
no_return_description |
Calculate the International Bitterness Units (IBU) of a batch using the Tinseth formula. Accepts batch volume, original gravity, and a list of hop additions with weight, alpha acid percentage, and boil time; returns the estimated total IBU value for the batch. |
calculate_water_additions |
no_return_description |
Calculate the mineral salt additions needed to adjust brewing water from a source profile to a target profile. Supports named profiles or custom ion values; for the given water volume, returns the required amount of each mineral salt to add. |
Selection evidence
Confusable tool pairs.
4 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
search_styles |
search_ingredients |
medium | Both descriptions promise searching 'by name... or characteristic', so a characteristic-only query like 'find something with a smoky/spicy flavor' without naming a domain (style vs. ingredient) is genuinely ambiguous; style results even list typical ingredients and ingredient results list flavour profiles, blurring the line. |
suggest_recipe |
suggest_substitution |
medium | The shared verb 'suggest' with style context can make a task like 'suggest something for an American IPA' ambiguous — the agent must infer whether the user wants a full recipe or an ingredient/substitute suggestion, and both tools accept a style field. |
calculate_ibu |
calculate_water_additions |
medium | Both are 'calculate' tools centered on 'additions' — calculate_ibu takes hop_additions while calculate_water_additions computes mineral salt additions — so a vague task like 'calculate the additions for my brew' is plausibly routed to the wrong one. |
match_water_profile |
calculate_water_additions |
high | Both focus on brewing 'water profile'; a natural task like 'match my water to Burton-on-Trent' could mean looking up a profile (match_water_profile) or computing the salts needed to reach it (calculate_water_additions), and neither description cleanly separates lookup from calculation. |
Compare the field