Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add cyanheads/medical-codes-mcp-server --skill medical-codes-guidegit clone --depth 1 https://github.com/cyanheads/medical-codes-mcp-serverWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/cyanheads/medical-codes-mcp-server/medical-codes-guide)<a href="https://agentmods.dev/skills/cyanheads/medical-codes-mcp-server/medical-codes-guide"><img src="https://agentmods.dev/badge/skills/cyanheads/medical-codes-mcp-server/medical-codes-guide/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/cyanheads/medical-codes-mcp-server/medical-codes-guide"><img src="https://agentmods.dev/badge/skills/cyanheads/medical-codes-mcp-server/medical-codes-guide.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00108 | $0.02546 |
| Opus 5.5 | $0.00043 | $0.01018 |
| Sonnet 5.5 | $0.00022 | $0.00509 |
| Haiku 4.5 | $0.00011 | $0.00255 |
Grade A, and why
medical-codes-guide scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 84 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Scope
Offline and keyless. Each system carries exactly one release: the current ICD-10-CM and ICD-10-PCS fiscal year, the current HCPCS Level II quarter, and the current RxNorm normalized set, with an RxClass layer over it. medcode_list_systems names each release and its effective window.
Not here, so say so instead of searching for a stand-in:
- CPT / HCPCS Level I (five-digit numeric codes such as 99213). A
medcode_get_codeormedcode_check_codemiss names them out of scope; a search simply finds nothing. Never offer a HCPCS Level II or ICD-10-PCS code as "the CPT equivalent". - SNOMED CT, LOINC, ICD-9-CM, ICD-11, the WHO ICD-10 base, MS-DRG, and ATC drug classes.
- Prior releases and successor links. No tool maps an old code to its replacement, a diagnosis to a procedure or HCPCS code, or an NDC to a HCPCS drug code.
- Coding rules and payment. Records carry descriptions, billability, and hierarchy only. They carry no Excludes1/Excludes2 or code-first notes, no sequencing rules, no coverage policy (NCD/LCD), and no pricing.
- Drug labels and safety data. Take the NDC or drug name to the openfda server.
Identifiers
| Identifier | Example | Where it comes from |
|---|---|---|
| ICD-10-CM code | E11.9, T36.0X1A |
medcode_search_codes, medcode_browse_hierarchy, medcode_map_codes children |
| ICD-10-PCS code | 0DTJ4ZZ |
medcode_search_codes only; browsing stops at the 17 sections |
| HCPCS Level II code | J9271 |
medcode_search_codes, medcode_browse_hierarchy |
| RXCUI | 6809 (ingredient), 861007 (product) |
medcode_map_codes name_to_rxcui, medcode_search_codes in RXNORM, or an NDC decoded by medcode_get_code |
| NDC | 00093104801 |
medcode_map_codes rxcui_to_ndc (11 digits, no hyphens), or the package label (0093-1048-01) |
| RxClass class ID | N0000000181, D006973, CV800, SCHEDULE2 |
medcode_map_codes rxcui_to_classes only; there is no class-name search |
Gates
- Choose the system from where the code came from, not from its shape. A diagnosis field is ICD-10-CM, an inpatient procedure field ICD-10-PCS, and a supply, drug, or service line HCPCS. An undotted letter plus four digits can be both an ICD-10-CM code and a HCPCS code:
A0100andJ0120come back ambiguous between ICD10CM and HCPCS, while the dottedA01.00resolves to ICD-10-CM. When the context tells you the system, pass it. - A verdict holds for today and the bundled release only.
medcode_check_codetakes no date of service. Before validating a claim, compare its date of service with the effective windows frommedcode_list_systems. When it falls outside them, report that this server cannot validate it rather than passing on today's verdict. valid_billablemeans reportable, not correct or payable. It says the code is a complete leaf in this release. Never claim that a code pair, sequence, or claim passes coding edits or coverage on the strength of it.- A header is where the search starts. For
valid_headerorvalid_not_billable, the billable code sits below. Children come one level per call, and ICD-10-CM chains run through placeholder and 7th-character levels (T36.0X→T36.0X1→T36.0X1A), so keep walking untilbillableis true. Never pad a code with X or a 7th character yourself; take the child the tool returns. - Treat an empty class result as unknown, not as a negative finding. Class coverage is uneven across types. Lisinopril has no EPC class here, but it has the MOA class "Angiotensin-converting Enzyme Inhibitors" (
N0000000181), and its products carry VA classCV800"ACE INHIBITORS". Check the other class types before saying a drug lacks a pharmacology. - DISEASE classes are MeSH descriptors, not diagnosis codes.
D006973is MeSH "Hypertension". To get the ICD-10-CM code for a disease a drug may treat, search the disease name withmedcode_search_codes.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- today First seen · 84 lines · 108 tokens per session scan A f537c53c4435
medical-codes-guide is a skill published in the GitHub repository cyanheads/medical-codes-mcp-server (2 stars, last pushed today), licensed Apache-2.0. It adds 108 tokens to every session and 2,546 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-28.
Other skills, from other repositories
annotating-variants
Annotates VCF variants and normalizes HGVS nomenclature with public, license-free annotators (Ensembl VEP REST, VEP/SnpEff/ANNOVAR offline) and links variants to gnomAD population frequencies and the clinical context OpenMed extracts. Use when the user wants to predict variant consequences, map HGVS to genomic…
assembling-fhir-bundles
Package multiple FHIR R4 resources produced from OpenMed output into a single valid transaction Bundle ready to POST to an EHR, using OpenMed's verified bundle assembler openmed.clinical.exporters.fhir.tobundle. Covers deterministic urn:uuid fullUrls, automatic in-Bundle reference rewriting, request blocks…
auditing-part11-trails
Generates and verifies 21 CFR Part 11-style audit trails — who/what/when, electronic signatures, and tamper-evidence — for OpenMed pipelines in GxP and clinical-trial (GCP) settings. Use when the user runs OpenMed in a regulated/validated environment and needs an attributable, time-stamped, tamper-evident record of…
batch-processing-clinical-text
Run large-scale batch NER, PII extraction, or de-identification over many clinical notes on-device with OpenMed, with sharding, checkpointing, resumability, and append-only JSONL output. Use when the user needs to process a corpus or folder of notes, de-identify a dataset, run NER over thousands of documents, build a…
coding-hcc-risk-adjustment
Maps chronic conditions extracted by OpenMed to CMS-HCC V28 risk-adjustment categories and estimates a RAF (Risk Adjustment Factor) score as decision support. Use when the user wants to surface risk-adjustable diagnoses from notes, map ICD-10-CM codes to HCC categories, estimate or reconcile a patient/panel RAF, find…
detecting-pv-signals
Computes disproportionality signals — PRR, ROR, EBGM, and IC (BCPNN) — over FAERS / OpenFDA drug-event data to flag potential safety signals. Use when the user wants to mine spontaneous-report data for drug-reaction associations, build a 2x2 contingency table, compute a Proportional Reporting Ratio or Reporting Odds…