01Safety
30.0 / 30
Public assessment
What changed in the harness
Selection accuracy 100%, destructive-action safety rate 100% (baseline only -- no rewrite pass applied).
Category breakdown
Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.
30.0 / 30
25.8 / 30
9.2 / 20
14.0 / 20
Highest-impact fix
Estimated gain +11 pointsConsolidate overlapping tools and trim repetitive schema text while preserving behavior, parameter, and return semantics.
Description evidence
0 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 |
|---|---|---|
| No description defects were flagged in this assessment. | ||
Selection evidence
16 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.
| Tool A | Tool B | Confidence | Why they collide |
|---|---|---|---|
cid10_chapters |
cid10_chapter |
high | Nearly identical names (plural list-all vs singular get-by-number); a request like 'show CID-10 chapter info' doesn't clearly signal whether the user wants the full list or one chapter by number, and an agent could call the wrong one or supply a bogus 'num' to the plural-intent request. |
icd11_search |
icd11_lookup |
medium | Both resolve an ICD-11 disease reference to details; if a user's query names a disease in plain text but the agent mistakenly treats it as a code (or vice versa), it may call lookup instead of search or skip the necessary search-then-lookup sequence. |
loinc_search |
loinc_details |
medium | loinc_details requires an exact 'XXXXX-X' code while loinc_search takes free text; if a user's query contains something that looks like a code fragment or a lab test name loosely resembling a code, the agent could pick details prematurely instead of searching. |
mesh_search |
mesh_descriptor |
medium | Search-by-term vs get-details-by-ID is a common confusion pattern; a task like 'get info on the MeSH term for diabetes' could plausibly trigger descriptor lookup with a guessed/wrong ID instead of a proper search. |
rxnorm_search |
rxnorm_concept |
medium | rxnorm_search finds drugs by name while rxnorm_concept needs an RxCUI; a request phrased as 'get details on drug X' could cause the agent to call concept with a fabricated or mis-derived RxCUI instead of first searching. |
atc_classify |
atc_lookup |
medium | Both resolve ATC classification information, but atc_classify takes a drug name and atc_lookup takes a code; a task like 'what's the ATC classification of metformin' could tempt an agent to call atc_lookup with the drug name instead of atc_classify. |
atc_classify |
atc_members |
medium | These are inverse operations (drug→codes vs code→drugs); a task like 'find other drugs in the same class as metformin' requires chaining classify then members, and an agent might call only atc_classify believing it returns member drugs. |
atc_lookup |
atc_members |
medium | Both take an atc_code and return information about that class; a vague request like 'tell me about ATC class A10BA' is ambiguous between getting just the class name (lookup) and getting the full member drug list (members). |
icd11_chapters |
cid10_chapters |
medium | Users unfamiliar with the CID-10/ICD-10 naming distinction may ask for 'ICD-10 chapters', which has no dedicated tool — the agent could route to either the Brazilian cid10_chapters or mistakenly the icd11_chapters tool for a different revision. |
icd11_lookup |
icd11_hierarchy |
medium | Both take an ICD-11 code and return descriptive info about it; a request like 'tell me about this ICD-11 category and its place in the classification' blends lookup's definition with hierarchy's parent/child structure. |
rxnorm_concept |
rxnorm_ingredients |
medium | rxnorm_concept's include_related option can surface ingredient info, overlapping with the dedicated rxnorm_ingredients tool; a request for 'what's in this drug' could go to either. |
rxnorm_concept |
rxnorm_classes |
medium | rxnorm_concept's include_related option can return class-like related concepts, overlapping with the dedicated rxnorm_classes tool for a request like 'what class is this drug in'. |
loinc_answers |
loinc_panels |
medium | Both take a loinc_num and return a sub-structure of the code (valid answers vs panel components); a vague request like 'what does this LOINC code include' is ambiguous between the two. |
terminology_versions |
terminology_diff |
medium | Both are terminology metadata tools; a request like 'has ICD-11 changed recently' could trigger terminology_versions (current version info) instead of terminology_diff (change summary), since both cover version-related metadata. |
icd11_search |
cid10_search |
low | Both are free-text disease search tools differing only by classification system/language; an ambiguous request like 'search for diabetes' without specifying ICD-11 vs Brazilian CID-10 could route to either. |
mesh_tree |
mesh_qualifiers |
low | Both take a mesh_id and return supplementary structural info about a descriptor (tree position vs allowed qualifiers); a broad request like 'give me more context on this MeSH term' doesn't clearly indicate which is wanted. |
Compare the field