autoicd-mcp
AutoICD-MCP connects AI assistants to the AutoICD API for medical coding, code lookup, and clinical text processing.
Code Clinical Text (
code_diagnosis): Extract diagnoses from clinical text (progress notes, discharge summaries, etc.) and map to ICD-10-CM or ICD-11 codes, with negation detection, historical mentions, and confidence scores.Search ICD-10 Codes (
search_codes): Full-text search across 74,000+ ICD-10-CM 2025 codes by description keyword, with pagination.Get ICD-10 Code Details (
get_code): Retrieve descriptions, billable status, SNOMED CT/UMLS synonyms, parent/child hierarchy, and ICD-11 crosswalk mappings for a specific code.Search ICD-11 Codes (
search_icd11_codes): Search the ICD-11 directory by description, returning codes with descriptions and Foundation URIs.Get ICD-11 Code Details (
get_icd11_code): Retrieve synonyms, hierarchy, chapter classification, and ICD-10 crosswalk mappings for a specific ICD-11 code.De-identify PHI (
anonymize): Detect and mask Protected Health Information (names, dates, SSNs, MRNs, etc.) in clinical text, replacing them with type labels (e.g.,[NAME],[DATE]) for HIPAA-compliant de-identification.ICF Coding (
icf_code,icf_lookup,icf_search,icf_core_set): Code clinical text to WHO ICF categories, look up ICF codes, and retrieve ICF Core Sets for specific diagnoses.Translate Codes (
translate_code): Translate between ICD-10, ICD-11, SNOMED CT, UMLS, and ICF.Audit Clinical Text (
audit_clinical_text): Check submitted codes against clinical text for HCC gaps, unsupported codes, specificity upgrades, and denial risk.
AutoICD MCP Server
Give AI assistants the power of medical coding - ICD-10-CM, ICD-11, ICF, and LOINC diagnosis and functioning coding, chart audit (HCC gap capture, RADV, specificity, denial risk), cross-standard translate, unified reference lookup across ICD-10, ICD-11, ICF, LOINC, SNOMED CT, UMLS, and RxNorm, plus PHI de-identification via the AutoICD API.
An MCP (Model Context Protocol) server that connects AI assistants like Claude Desktop, Cursor, VS Code, and Windsurf to the AutoICD API for AI-powered medical coding, audit, and terminology lookup.
What's new - 2026-05-05
reference_lookupnow covers SNOMED CT, UMLS, and RxNorm in addition to ICD-10-CM, ICD-11, ICF, and LOINC.reference_search- new tool for free-text search of SNOMED CT, UMLS, and RxNorm.The unified reference resource gives every record
cross_referenceskeyed by target system, so AI agents can pivot across vocabularies without extra calls.
Related MCP server: OMOP MCP Server
Why AutoICD API?
Feature | Details |
AI-Powered Coding | Clinical text → ICD-10-CM, ICD-11, or ICF codes with NLP entity extraction |
74,000+ ICD-10 Codes | Full ICD-10-CM 2025 code set with descriptions and hierarchy |
ICD-11 Support | Search and look up ICD-11 codes with full ICD-10 ↔ ICD-11 crosswalk |
ICF Functioning Codes | Code clinical text to WHO ICF categories, search 1,400+ codes, and access Core Sets for 12+ conditions |
Negation Detection | Identifies negated, historical, uncertain, and family history mentions |
Confidence Scoring | High/moderate confidence labels with cosine similarity scores |
Spell Correction | Handles misspelled medical terms automatically |
PHI De-identification | HIPAA-compliant removal of names, dates, SSNs, and more |
Code Search | Full-text search across all ICD-10-CM codes and descriptions |
SNOMED CT & UMLS | Cross-references and synonyms from standard medical terminologies |
Get your API key at autoicdapi.com.
Setup
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"autoicd": {
"command": "npx",
"args": ["-y", "autoicd-mcp"],
"env": {
"AUTOICD_API_KEY": "sk_your_api_key"
}
}
}
}Cursor
Add to .cursor/mcp.json in your project:
{
"mcpServers": {
"autoicd": {
"command": "npx",
"args": ["-y", "autoicd-mcp"],
"env": {
"AUTOICD_API_KEY": "sk_your_api_key"
}
}
}
}VS Code
Add to .vscode/mcp.json in your project:
{
"servers": {
"autoicd": {
"command": "npx",
"args": ["-y", "autoicd-mcp"],
"env": {
"AUTOICD_API_KEY": "sk_your_api_key"
}
}
}
}Windsurf
Add to your Windsurf MCP configuration:
{
"mcpServers": {
"autoicd": {
"command": "npx",
"args": ["-y", "autoicd-mcp"],
"env": {
"AUTOICD_API_KEY": "sk_your_api_key"
}
}
}
}Available Tools
code_diagnosis
Extract medical diagnoses from clinical text and map them to ICD-10-CM codes.
Parameters:
text(required) - Clinical text to process (progress notes, discharge summaries, etc.)top_k(optional, 1-25, default: 5) - Number of top ICD-10 candidates per entityinclude_negated(optional, default: true) - Include negated entities in results
Example prompts:
"Code this note: Patient presents with acute lower back pain radiating to the left leg. Denies any numbness or tingling."
"What ICD-10 codes apply to: 65-year-old male with type 2 diabetes, hypertension, and chronic kidney disease stage 3"
"Code the following discharge summary: Patient admitted for COPD exacerbation with acute respiratory failure. History of CHF and atrial fibrillation."
The tool will extract medical entities, detect negations ("denies numbness"), and return ranked ICD-10 code candidates with confidence scores.
search_codes
Search the ICD-10-CM 2025 code set by description.
Parameters:
query(required) - Search text to match against code descriptionslimit(optional, 1-100, default: 20) - Maximum resultsoffset(optional, default: 0) - Pagination offset
Example prompts:
"Search for ICD-10 codes related to congestive heart failure"
"Find all ICD-10 codes for diabetes"
"What ICD-10 codes are there for anxiety disorders?"
"Look up hypertension ICD-10 codes"
get_code
Get comprehensive details for a specific ICD-10-CM code.
Parameters:
code(required) - ICD-10-CM code (e.g., "E11.9", "I10", "J44.1")
Example prompts:
"Look up the details for ICD-10 code M54.5"
"What does ICD-10 code I10 mean?"
"Is E11.9 a billable code? What are its synonyms?"
"Show me the SNOMED CT mappings for code J44.1"
Returns descriptions, billable status, SNOMED CT and UMLS synonyms, parent/child hierarchy, chapter classification, and ICD-11 crosswalk mappings.
search_icd11_codes
Search the ICD-11 code set by description.
Parameters:
query(required) - Search text to match against ICD-11 code descriptionslimit(optional, 1-100, default: 10) - Maximum results
Example prompts:
"Search for ICD-11 codes related to diabetes"
"Find ICD-11 codes for respiratory infections"
"What are the ICD-11 codes for anxiety disorders?"
get_icd11_code
Get comprehensive details for a specific ICD-11 code, including ICD-10 crosswalk mappings.
Parameters:
code(required) - ICD-11 code (e.g., "5A11", "BA00", "CA40.0")
Example prompts:
"Look up ICD-11 code 5A11"
"What is the ICD-10 equivalent of ICD-11 code BA00?"
"Show me the details and crosswalk for ICD-11 code CA40.0"
Returns descriptions, Foundation URI, synonyms, parent/child hierarchy, chapter classification, and ICD-10 crosswalk mappings.
anonymize
De-identify Protected Health Information (PHI) in clinical text.
Parameters:
text(required) - Clinical text containing PHI
Example prompts:
"Remove all patient identifiers from this note: John Smith (DOB 03/15/1980) was seen at 123 Main St..."
"De-identify this clinical text before I share it: Maria Garcia, MRN 789012, SSN 123-45-6789, diagnosed with pneumonia"
Detects and replaces names, dates, SSNs, phone numbers, emails, addresses, MRNs, and ages with type labels like [NAME], [DATE], [SSN].
icf_lookup
Look up details for a specific ICF code.
Parameters:
code(required) - ICF code (e.g., "b730", "d450", "s110")
Example prompts:
"Look up ICF code b730"
"What does ICF code d450 mean?"
"Show me the definition of ICF code s110"
Returns title, definition, component, chapter, parent/child hierarchy, inclusions, exclusions, and index terms.
icf_search
Search ICF codes by keyword.
Parameters:
query(required) - Search text to match against ICF code descriptionslimit(optional, 1-100, default: 20) - Maximum results
Example prompts:
"Search for ICF codes related to mobility"
"Find ICF codes for cognitive functions"
"What ICF codes are there for self-care activities?"
icf_core_set
Get the ICF Core Set for an ICD-10 diagnosis - a curated list of ICF categories relevant to a specific condition.
Parameters:
icd10_code(required) - ICD-10-CM code (e.g., "E11.9", "I63.9", "G35")
Example prompts:
"What ICF Core Set applies to diabetes (E11.9)?"
"Show me the ICF Core Set for stroke (I63.9)"
"Get the brief and comprehensive ICF Core Sets for multiple sclerosis (G35)"
Returns condition name, brief Core Set (key categories), and comprehensive Core Set (full assessment categories).
translate_code
Translate a code between healthcare coding systems. Forward from ICD-10 to ICD-11, SNOMED CT, UMLS, and ICF, plus reverse ICD-11 → ICD-10 and ICF → ICD-10. Built on CMS-published crosswalks, code-level SNOMED / UMLS concept IDs, and WHO ICF Core Sets.
Parameters:
code(required) - The source code (e.g., "E11.9" for ICD-10, "5A11" for ICD-11).system(required) -"icd10","icd11","snomed","umls", or"icf".to(optional) - Array of target systems. Omit for every system reachable from the source.
Example prompts:
"Translate ICD-10 E11.9 to ICD-11 and SNOMED."
"What's the SNOMED CT and ICD-11 equivalent of diabetes code E11.9?"
"Reverse-translate ICD-11 5A11 back to ICD-10."
"Show me the ICF categories that map to ICD-10 I63.9."
Targets not reachable from the source are returned in unsupported_targets rather than as errors, so a broad target list is safe.
reference_lookup
Look up canonical reference data for a code in any supported coding system through a single tool. Returns the same detail payload as the per-system tools (get_code, get_icd11_code, icf_lookup, loinc_lookup), which remain available but are now deprecated.
Parameters:
system(required) - One of"icd-10-cm","icd-11","icf","loinc","snomed-ct","umls","rxnorm".code(required) - Code in the chosen system.
Example prompts:
"Look up SNOMED CT concept 44054006."
"What is UMLS CUI C0011860?"
"Show me the RxNorm record for 860975 (metformin)."
"Use reference_lookup to get the canonical record for ICD-11 5A11."
SNOMED, UMLS, and RxNorm records carry cross_references to ICD-10, ICD-11, LOINC, and each other so agents can pivot across vocabularies without extra calls.
reference_search
Free-text search the Neon-backed reference vocabularies (SNOMED CT, UMLS, RxNorm). Returns matching codes with display labels and a system-specific meta field (semantic tag for SNOMED, term type for RxNorm). JSON-backed systems (ICD-10-CM, ICD-11, ICF, LOINC) keep their per-system search tools.
Parameters:
system(required) - One of"snomed-ct","umls","rxnorm".query(required) - Free-text search query.limit(optional, 1-100, default: 20) - Maximum results.
Example prompts:
"Search SNOMED CT for 'chronic systolic heart failure'."
"Find UMLS concepts related to metformin."
"Look up RxNorm codes for 'lisinopril 10 mg tablet'."
audit_clinical_text
Audit a chart against submitted codes. Surfaces missed HCCs with RAF-weighted revenue estimates, unsupported codes (RADV exposure), specificity upgrades, denial risk flags, and a reconciled problem list. Every finding carries extractive evidence spans.
Parameters:
text(required) - Clinical text (progress note, discharge summary, H&P).codes(required) - Array of{ code, kind }the clinician submitted (e.g.,[{ "code": "E11.9", "kind": "icd10" }]).capabilities(optional) - Subset of["hcc", "radv", "specificity", "denial", "problem_list"]. Defaults to all five.patient_age,patient_sex,coverage(optional) - Enrich denial and HCC reasoning.hcc_model(optional) -"v22","v28", or"both"(default). Note: V24 is the ESRD-specific model and is not accepted here.
Example prompts:
"Audit this progress note. Codes submitted: E11.9, I50.9. Text: 68yo M, type 2 diabetes, chronic systolic CHF on furosemide, stage 3 CKD, proliferative diabetic retinopathy."
"Run an HCC-only gap analysis on this discharge summary. Submitted codes: [...]."
"Check this encounter for unsupported codes and denial risk. Patient is male, age 45."
Uses the CMS PY2026 V22 and V28 community models for HCC gap capture.
Common ICD-10 Codes
Here are some of the most commonly coded conditions you can look up with this MCP server:
Condition | Code | Description |
I10 | Essential (primary) hypertension | |
E11.9 | Type 2 diabetes mellitus without complications | |
F41.1 | Generalized anxiety disorder | |
F32.9 | Major depressive disorder, single episode | |
M54.5 | Low back pain | |
J44.9 | Chronic obstructive pulmonary disease | |
I50.9 | Heart failure, unspecified | |
N39.0 | Urinary tract infection | |
J18.9 | Pneumonia, unspecified organism | |
I48.91 | Unspecified atrial fibrillation |
Browse the full ICD-10-CM Code Directory or find codes by condition.
Configuration
Environment Variable | Required | Description |
| Yes | Your AutoICD API key (starts with |
| No | Custom API base URL (default: |
Use Cases
EHR/EMR Integration - Automate diagnosis coding in electronic health record workflows
Medical Billing - Accelerate revenue cycle management with AI-assisted code assignment
Clinical Decision Support - Look up ICD-10 codes and hierarchies during clinical documentation
Health-Tech Development - Build and test medical coding features with live API access in your IDE
Research & Analytics - Search and explore the ICD-10-CM code set for epidemiological analysis
Compliance - De-identify clinical text before processing or sharing
Requirements
Node.js 18+
An AutoICD API key - Get one free at autoicdapi.com
Links
AutoICD API - autoicdapi.com
API Documentation - autoicdapi.com/docs
ICD-10-CM Code Directory - autoicdapi.com/reference/icd-10 - Browse all 74,000+ codes
ICD-11 Code Directory - autoicdapi.com/reference/icd-11 - Browse the WHO ICD-11 MMS hierarchy
ICD-10 ↔ ICD-11 Crosswalk - autoicdapi.com/icd10-to-icd11 - Map codes between revisions
ICD-10 Codes by Condition - autoicdapi.com/reference/icd-10/condition - Find codes for common conditions
TypeScript SDK - npmjs.com/package/autoicd
Python SDK - pypi.org/project/autoicd
SNOMED CT & UMLS Cross-References - autoicdapi.com/snomed-ct-umls
ICD-10-CM Reference - CMS.gov
License
MIT
Available Tools
6 toolsanonymizeDe-identify Clinical Text (PHI Removal)ARead-only
Detect and mask Protected Health Information (PHI) in clinical text. Replaces names, dates, SSNs, phone numbers, emails, addresses, MRNs, and ages with type labels like [NAME], [DATE], [SSN]. HIPAA-compliant de-identification.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Clinical text containing PHI to de-identify |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only and non-destructive behavior; the description adds valuable specifics about what entity types are detected (MRNs, ages, phone numbers) and the exact replacement format ('[NAME]', '[DATE]'). The HIPAA compliance claim adds important regulatory context not found in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two efficiently structured sentences with zero redundancy. The first states the core operation; the second details the specific PHI categories, replacement patterns, and compliance standard. Every clause conveys distinct, necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter text processing tool without an output schema, the description adequately covers the transformation logic (what gets replaced and with what). It would be marginally improved by explicitly stating that the tool returns the anonymized string, though this is reasonably implied by the 'replaces... with' phrasing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input parameter 'text' is fully documented in the schema itself. The description implies the content should be clinical text but does not add additional semantic constraints, format requirements, or examples beyond what the schema provides, warranting the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('Detect and mask') and clearly identifies the resource ('Protected Health Information in clinical text'). It effectively distinguishes itself from sibling code-lookup tools (get_code, search_codes, etc.) by specifying the domain is clinical text de-identification rather than medical coding.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool ('HIPAA-compliant de-identification') and lists specific entity types handled (names, dates, SSNs, etc.). While it doesn't explicitly name alternatives to avoid, the domain focus makes the appropriate use case unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_diagnosisCode Clinical Text to ICD-10/ICD-11ARead-only
Extract medical diagnoses from clinical text and map them to ICD-10-CM or ICD-11 codes. Identifies conditions, negations, historical mentions, family history, and severity. Returns ranked code candidates with confidence scores.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Clinical text to process (progress notes, discharge summaries, etc.) | |
| top_k | No | Number of top code candidates per entity (1-25, default: 5) | |
| include_negated | No | Include negated entities in results (default: true) | |
| output_system | No | Output coding system: 'icd10' (default) or 'icd11' | icd10 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations declare readOnlyHint=true and destructiveHint=false, the description adds valuable behavioral context: it discloses NLP capabilities (negation detection, historical mentions, family history, severity assessment) and output format (ranked candidates with confidence scores) that annotations do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two efficient sentences. The first sentence front-loads the core function (extraction and coding), while the second adds capability details (negations, severity) and output structure. Zero redundant words or tautologies.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a clinical NLP tool of moderate complexity, the description adequately covers the input domain, processing capabilities, and return format (compensating for the missing output schema). It could improve by mentioning input length constraints or privacy considerations given the PHI nature of clinical text, though the presence of the 'anonymize' sibling mitigates this gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the parameter details are fully documented in the schema itself. The description references 'clinical text' and coding systems which map to the text and output_system parameters, but does not add substantial semantic meaning beyond what the structured schema already provides, meeting the baseline for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Extract medical diagnoses from clinical text and map them to ICD-10-CM or ICD-11 codes,' providing specific verbs (extract, map) and resources (diagnoses, clinical text). It implicitly distinguishes from siblings like get_code/search_codes by emphasizing unstructured text processing vs. direct code lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'clinical text' (progress notes, discharge summaries), signaling when to use this over lookup-based siblings. However, it lacks explicit guidance contrasting with alternatives like 'use this when you have free text rather than a known diagnosis term.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_codeGet ICD-10 Code DetailsARead-onlyIdempotent
Get comprehensive details for a specific ICD-10-CM code including descriptions, billable status, SNOMED CT and UMLS synonyms, parent/child hierarchy, and chapter classification.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ICD-10-CM code (e.g., 'E11.9', 'I10', 'J44.1') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive safety. The description adds valuable behavioral context by detailing exactly what comprehensive data is returned (billable flags, medical ontologies like SNOMED/UMLS, hierarchical relationships), helping the agent understand the tool's informational scope beyond generic 'details'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, dense sentence efficiently packs six distinct data categories (descriptions, billable status, two synonym types, hierarchy, classification) without filler. Every clause serves to specify the return payload or resource type.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description excellently compensates by enumerating the specific data fields and relationships returned (parent/child hierarchy, chapter classification, external ontologies). For a simple single-parameter lookup tool, this provides sufficient context for the agent to understand both input requirements and output value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is appropriately met. The description reinforces that the parameter should be a 'specific' code but does not add syntactic guidance, validation rules, or semantic nuances beyond what the schema's examples ('E11.9', 'I10') already provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'Get' with clear resource 'ICD-10-CM code' and enumerates specific data returned (billable status, SNOMED CT/UMLS synonyms, hierarchy, chapter). It distinguishes from sibling 'get_icd11_code' by explicitly specifying 'ICD-10-CM' and from 'search_codes' by emphasizing 'specific' code retrieval versus search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While it lacks explicit 'when to use' statements, the phrase 'specific ICD-10-CM code' combined with the single required 'code' parameter clearly signals this is for lookup when the code is already known, implicitly contrasting with the 'search_codes' sibling. The ICD-10-CM specificity clearly differentiates from the ICD-11 variant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_icd11_codeGet ICD-11 Code DetailsARead-onlyIdempotent
Get comprehensive details for a specific ICD-11 code including descriptions, Foundation URI, synonyms, parent/child hierarchy, chapter classification, and ICD-10 crosswalk mappings.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ICD-11 code (e.g., '5A11', 'BA00', 'CA40.0') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare read-only/idempotent/safe properties, so the description appropriately focuses on disclosing return data structure (descriptions, URIs, hierarchies, crosswalks) rather than safety; however, it omits behavioral details like caching, rate limits, or 'not found' error behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that front-loads the action ('Get comprehensive details') and efficiently lists return components without redundancy; every clause serves to clarify the scope of 'comprehensive details.'
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description compensates effectively by enumerating the specific data fields returned (hierarchy, crosswalks, etc.); for a single-parameter lookup tool with strong annotations, this provides sufficient context despite omitting error-handling specifics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage and the schema providing clear examples ('5A11', 'BA00'), the description meets the baseline expectation by referencing 'ICD-11 code' but adds minimal semantic clarification beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('ICD-11 code'), clearly distinguishing it from siblings like 'get_code' (generic) and 'search_icd11_codes' (search functionality) by emphasizing 'specific' code retrieval and enumerating exact return fields (Foundation URI, synonyms, hierarchy, crosswalks).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The term 'specific ICD-11 code' implies usage when an exact code is known, contrasting with the sibling 'search_icd11_codes', but the description lacks explicit when-to-use/when-not-to-use guidance or explicit naming of alternatives for code discovery scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_codesSearch ICD-10 CodesARead-onlyIdempotent
Search the ICD-10-CM 2025 code directory by description text. Returns matching codes with descriptions and billable status. Useful for finding specific diagnosis codes by keyword.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to match against ICD-10 code descriptions | |
| limit | No | Maximum results (1-100, default: 20) | |
| offset | No | Pagination offset (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only, idempotent, non-destructive behavior. The description adds valuable behavioral context by disclosing return values ('matching codes with descriptions and billable status') which compensates for the missing output schema, and specifies the 2025 version of the directory being searched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences are perfectly weighted: first establishes core action, second discloses return structure (critical given no output schema), third provides usage context. No redundancy or wasted words. Information is front-loaded with the essential operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple search interface (3 params, 100% schema coverage) and strong annotations, the description is appropriately complete. It compensates for the missing output schema by describing return values, covers the specific version (ICD-10-CM 2025), and provides adequate context for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description mentions 'by description text' which aligns with the query parameter but does not add additional semantic context, examples, or usage notes beyond what the schema already provides for the three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'Search' with clear resource 'ICD-10-CM 2025 code directory' and scope 'by description text'. It distinguishes from siblings like search_icd11_codes and get_code by specifying the ICD-10-CM 2025 version and text-based search approach.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states it is 'Useful for finding specific diagnosis codes by keyword', providing implied usage context. However, it lacks explicit when-to-use guidance or named alternatives (e.g., does not mention to use get_code when the exact code is known).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_icd11_codesSearch ICD-11 CodesARead-onlyIdempotent
Search the ICD-11 code directory by description text. Returns matching codes with descriptions and Foundation URIs. Useful for finding specific ICD-11 diagnosis codes by keyword.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to match against ICD-11 code descriptions | |
| limit | No | Maximum results (1-100, default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety behavior. The description adds valuable functional context by specifying the return format: 'Returns matching codes with descriptions and Foundation URIs,' compensating for the lack of an output schema. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of three efficient sentences, each earning its place: (1) action and method, (2) return value disclosure, (3) usage context. It is front-loaded with the core action and contains no redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of annotations (covering safety/idempotency), 100% schema coverage, and the explicit mention of return values (codes, descriptions, Foundation URIs) in the description, the tool is well-documented. Minor gap: pagination behavior or fuzzy vs exact matching semantics are not specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input parameters are fully documented in the schema itself (query description covers the search text, limit covers the range). The description reinforces this with phrases like 'by description text' and 'by keyword,' but does not add syntax details or examples beyond the schema definitions, warranting the baseline score for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool 'Search[es] the ICD-11 code directory by description text' - a specific verb + resource + method combination. It distinguishes from sibling tools like get_icd11_code by specifying this is a search-by-text operation rather than a direct lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context stating it is 'Useful for finding specific ICD-11 diagnosis codes by keyword,' indicating when to use the tool. However, it does not explicitly name alternative tools (e.g., 'use get_icd11_code if you already know the exact code') or state exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose with no overlap: anonymize handles PHI detection/masking, code_diagnosis extracts diagnoses from text, get_code and get_icd11_code retrieve details for specific codes, and search_codes and search_icd11_codes perform keyword searches. The descriptions make it easy to differentiate between code retrieval vs. search vs. text processing functions.
All tools follow a consistent snake_case naming pattern with clear verb_noun structure: anonymize (verb only, but clear), code_diagnosis (noun_verb), get_code/get_icd11_code (verb_noun), and search_codes/search_icd11_codes (verb_noun). The naming is predictable and follows the same conventions throughout.
Six tools is well-scoped for this medical coding domain, covering core workflows: text anonymization, diagnosis extraction, code lookup (both ICD-10 and ICD-11), and code searching (both ICD-10 and ICD-11). Each tool earns its place without redundancy or obvious gaps.
The tool set provides complete coverage for medical coding workflows: starting with PHI anonymization of clinical text, extracting diagnoses from that text, searching for relevant codes, and retrieving detailed information about specific codes. Both major coding systems (ICD-10 and ICD-11) are supported consistently across lookup and search operations.
Maintenance
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
MCP server for US nursing facility search and ownership lookup (NursingHomeDatabase).
Hosted MCP server exposing US hospital procedure cost data to AI assistants
Hosted MCP for denial, prior auth, reimbursement, workflow validation, batch scoring, and feedback.
MCP server for medicare-coverage
Related MCP Servers
- AlicenseAqualityAmaintenanceUnified MCP server providing LLMs with reliable lookup access to ICD-11, LOINC, RxNorm, MeSH, ATC, CID-10, and (optionally) SNOMED CT.3128912MIT
- AlicenseBqualityDmaintenanceMCP server for mapping clinical terminology to OMOP concepts using LLMs, with vocabulary search and batch processing capabilities.240Apache 2.0
- AlicenseAqualityDmaintenanceOffline MCP server for ICD medical code lookup, search, and crosswalk translation with 124K codes and 102K mappings, all local with zero network calls.53MIT
- AlicenseAqualityFmaintenanceMCP server for Brazilian ICD-10 (CID-10) that enables search, lookup, hierarchy navigation, statistics, and validation of disease codes from official DATASUS data.61541MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/fcggamou/autoicd-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server