Verified ICD-10-CM code lookup & validation for AI agents — official descriptions, not guesses.
Three well-named, focused tools with strong descriptions that guide LLM selection. All tools have clear input schemas with typed parameters and descriptions. Tool names follow verb_noun pattern (lookup_, validate_, search_). Descriptions are detailed (150-250 chars) and explain WHEN to use each tool, addressing common LLM failure modes (hallucination, fabrication). Output schemas are documented in code but not formally exposed in the tool registration. Error handling returns structured JSON with error fields but lacks actionable recovery guidance. No security concerns (read-only operations, no secrets). Composition is clean, each tool has one responsibility and outputs chain naturally (search returns codes that lookup/validate accept).
USE THIS to get the OFFICIAL description of an ICD-10-CM diagnosis code instead of recalling it — models confidently misstate the specifics (laterality, severity, encounter type) and invent descriptions for codes that don't exist. Returns the official description, the canonical dotted form, and its 3-character category; if the code is well-formed but not in the dataset it says so rather than guessing. Accepts codes with or without the dot (E11.9 or E119).
USE THIS to find the ICD-10-CM code for a condition (reverse lookup) instead of guessing the code — e.g. 'type 2 diabetes' or 'generalized anxiety'. Returns official codes whose description contains all your search words, shortest (most general) first.
USE THIS to check whether an ICD-10-CM code is real before relying on it — never assume a plausible-looking code exists. Returns whether it is well-formed AND present in the official code set, plus the description when valid. Catches fabricated or retired codes a model would otherwise accept.
Output schemas not formally documented in tool registration. Descriptions mention return fields (description, canonical dotted form, category) but JSON Schema output type is not visible in server.ts tool registration.
Error responses return structured JSON with 'error' field but lack actionable recovery guidance. E.g., if a code is malformed, the error should suggest 'Try search_icd10() to find the correct code' rather than just reporting the error.
search_icd10 'limit' parameter lacks numeric constraints in description. Should specify 'Max results (default 20, range 1-100)' to prevent LLM from requesting unreasonable result counts.
Tool descriptions do not include dependency hints. E.g., lookup_icd10 should note 'If you only have a condition name, call search_icd10() first to find the code.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |