Skip to main content
Glama
qinisolabs
by qinisolabs

icdwise

Verified ICD-10-CM code lookup & validation for AI agents — official descriptions, not guesses.

Verified, trustworthy data tools for AI agents. "Qiniso" means "truth" in Zulu.

Website · npm · MCP endpoint · MCP Registry


Ask an LLM what an ICD-10-CM code means and it will answer confidently — and often wrongly: the wrong laterality, the wrong severity, the wrong condition entirely, and it will happily invent a description for a code that doesn't exist. icdwise looks the code up in the official U.S. ICD-10-CM code set and returns the real description — or an honest "not found" instead of a guess.

Asked to describe real ICD-10-CM codes, a frontier model with no tools was wrong ~38% of the time — e.g. it called H40.1131 "severe stage, right eye" (it's mild, bilateral) and T63.011A "ingested mushrooms" (it's rattlesnake venom) — and it fabricated a description for a code that doesn't exist. icdwise: the official text, or "not found." Never a guess.

Add it to Claude

Settings → Connectors → Add custom connector, and paste — no login, no key:

https://icdwise.qinisolabs.workers.dev/mcp

Stateless, reads no user data, requires no secrets. Prefer to run it locally over stdio? Add { "command": "npx", "args": ["-y", "icdwise"] } under mcpServers in your client config.

Related MCP server: mymedi-ai-mcp-server

Use it as a library

npm i icdwise
import { lookupIcd10, validateIcd10, searchIcd10 } from "icdwise";

lookupIcd10("E11.9").description;     // "Type 2 diabetes mellitus without complications"
lookupIcd10("H40.1131").description;  // "Primary open-angle glaucoma, bilateral, mild stage"
validateIcd10("E11.99").valid;        // false — well-formed but not a real code
searchIcd10("generalized anxiety");   // → [{ code: "F41.1", description: "Generalized anxiety disorder" }, ...]

Codes are accepted with or without the dot (E11.9 or E119). A well-formed code that isn't in the official set returns found: false with a clear note — it never invents a description.

Tools — 3

Tool

What it answers

lookup_icd10

The official description of a code (+ canonical form and 3-char category)

validate_icd10

Is this a real ICD-10-CM code? (well-formed and in the official set)

search_icd10

Reverse lookup — find the code(s) for a condition by keywords

Data

ICD-10-CM is U.S. public-domain data (NCHS/CMS). The full code set (~74,000 codes) is bundled and generated from the official CMS release via npm run build-data <icd10cm-codes-YYYY.txt> (see scripts/build-data.mjs); every response reports the datasetVersion it used. Descriptions are the official text — the curated, versioned dataset kept current is the moat.

What it is not

  • Not medical advice, and not a determination of billability, coverage, or clinical appropriateness.

  • Not ICD-10 (WHO) or ICD-11 — this is ICD-10-CM (the U.S. Clinical Modification).

  • Not a guesser — unknown/retired/non-leaf codes return an honest "not found", never a fabricated description.

Architecture

A single TypeScript package exposing one MCP server over two transports — stdio (local / npx) and a Cloudflare Worker (hosted edge endpoint) — both driven by the same core.ts tool definitions, which also power the importable library.

npm install
npm run build
npm test

Privacy

This tool runs locally on your machine and is built not to collect, store, or transmit your data — no analytics, no telemetry, no account. All reference data is bundled — no network calls, and nothing leaves your device. Full policy: https://qinisolabs.github.io/privacy.html.

License

Apache-2.0. ICD-10-CM data is U.S. public domain (NCHS/CMS); see NOTICE.

Available Tools

3 tools
lookup_icd10A

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe ICD-10-CM code, e.g. E11.9 or E119.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: returns official description, dotted form, category; handles missing codes gracefully; accepts codes with or without dot.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, well-structured paragraph. Every sentence adds necessary information, starting with a clear directive. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema or annotations, the description covers purpose, input format, return content, and error handling comprehensively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes the code parameter with an example. The description adds value by clarifying that dots are optional, which is a behavioral nuance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to get the official ICD-10-CM description, using the verb 'get' and specifying the resource. It distinguishes from sibling tools by addressing the problem of model misrecall.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (when needing official description instead of recalling) and provides edge-case behavior (code not found). Implicitly contrasts with sibling tools search_icd10 and validate_icd10.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_icd10A

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesCondition or keywords to search descriptions for.
limitNoMax results (default 20).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that the tool returns official codes, uses word-matching logic ('contains all your search words'), and orders results by shortest most general code. This is adequate for a read-only search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. It front-loads the purpose and usage, then explains behavior. Every sentence contributes meaningful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with 2 parameters and no output schema, the description explains input behavior, matching logic, and ordering. It is sufficiently complete for an agent to use correctly, though it could mention that results are codes with matched descriptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The description adds value by providing specific examples for 'query' (e.g., 'type 2 diabetes') and noting that 'limit' defaults to 20, which the schema does not specify.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to find ICD-10-CM codes for a condition via reverse lookup, distinguishing it from siblings like lookup_icd10 and validate_icd10. The verb 'find' and resource 'ICD-10-CM code' are explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'USE THIS to find the ICD-10-CM code for a condition (reverse lookup) instead of guessing the code', providing clear when-to-use guidance. It lacks explicit when-not-to-use or direct sibling comparisons, but the context includes sibling names for inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_icd10A

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe ICD-10-CM code to validate.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that the tool returns validity and description, and catches fabricated/retired codes. Lacks explicit statement on no side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff. First sentence is imperative and action-oriented; second adds behavioral detail. Every word contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one parameter and no output schema, description is fully sufficient. It covers purpose, usage, behavior, and return information. Sibling tools are mentioned in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds context beyond schema by explaining that 'validate' means checking both well-formedness and presence in official set, and mentions catching fabricated codes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to validate an ICD-10-CM code's existence and correctness. It distinguishes from siblings by focusing on validation vs. lookup or search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit instruction to use this tool before relying on a code and warns against assuming codes are valid. Implicitly differentiates from searching or looking up codes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv0.1.1
    • First observedlookup_icd10
    • First observedsearch_icd10
    • First observedvalidate_icd10

TDQS

A4.6/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: lookup retrieves description for a given code, search finds codes for a condition, and validate checks code existence. No overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (lookup_icd10, search_icd10, validate_icd10) using snake_case, making their actions predictable and clear.

Tool Count5/5

Three tools are well-scoped for the domain of ICD-10-CM code management—lookup, search, and validate—each earning its place without redundancy or excess.

Completeness4/5

The tool set covers the fundamental operations for ICD-10-CM codes: lookup, reverse search, and validation. Minor gaps like hierarchical navigation exist, but the core workflow is complete.

Maintenance

ActivityStale
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Healthcare billing AI for agents — 12 tools for ICD-10/CPT/HCPCS code lookup (80K+ codes), prior auth prediction, medical NER, claims validation, HIPAA compliance auditing, and provider/drug enrichment. Pay-per-call via credits or USDC.
    20
    44
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides keyless access to NIH clinical data including ICD-10/9, RxTerms, LOINC, NPI, and conditions search, allowing AI agents to query medical terminologies without authentication.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/qinisolabs/icdwise'

If you have feedback or need assistance with the MCP directory API, please join our Discord server