Sign in to look up codes
HANK_CODESETS is access-controlled. Sign in with your Hank account to run CPT / ICD / HCPCS / anesthesia lookups, browse crosswalks, and connect agents over MCP.
No account yet? Get one at
console.hank.ai.
MCP endpoint: https://api.hank.ai/v1/codesets/mcp/
(needs an access token; full setup is on the MCP tab once you're in).
Look up any code
Every code system we cover - type a code, see everything we know about it.
Generic lookup
Unified profile
CPT detail
ICD detail
HCC detail
Modifier detail
RVU rows
Denial triage
Start with the code on the remittance. A CARC gives the reason the line was adjusted, a RARC gives the remark that explains it, and the Medicaid crosswalk shows which state edits produce that national code. X12 code descriptions need an X12 license.
National denial code
State Medicaid edit
Risk score (RAF)
Give one member's risk categories or diagnoses plus demographics. The answer itemises every term that built the score: disease categories after hierarchy trumping, the demographic factor, and each interaction. Give HCC numbers, ICD-10-CM codes, or both.
MS-DRG grouping
Give one inpatient encounter. The grouper returns the MS-DRG, its relative weight, the severity tier, and the secondary diagnoses that drove it. The payment figure is a national estimate, not a priced claim.
OPPS / APC grouping
Give the HCPCS lines on one outpatient claim. Each line
comes back with its status indicator, its APC, and what happened to it:
paid, discounted, packaged into another line, or paid from a different
fee schedule. Write a line as code, or as
code:units:YYYY-MM-DD when units or a line date matter.
Dataset catalog & status
Every code set, enrichment section, scope and compute operation this deployment can answer for, what it is made of, how much of it is loaded, what its license lets you do with it, and when the next version is expected.
HANK Crosswalk - Surgical ↔ Anesthesia
Anesthesia base units
Validate HANK crosswalk
RBCS browser
CPT groups
Group definitions are edited in Tools > CPT Groups (admin).
Scope from natural-language text
Codeset freshness & updates
Live state of every registered dataset - the same view
as hcs update status. Warnings (alarms) surface at the
top; the grid shows due-ness, the applied version, and last
check/apply per dataset. Recheck all probes sources
for changes; Run due now refreshes what's due; the
per-row Run force-refreshes one dataset. Triggers run
on the updater service and this view refreshes as they complete.
Updater run history
Every updater tick (most recent first) - what it checked, applied, failed or blocked, the gate/seed outcomes, and how long it took. Click a run to see its per-dataset actions and alarms.
Rule check
Guidance KRAC coding-guidance corpus
This database is the source of truth for coding guidance. Rows are content-addressed; retiring sets an EndYear window (ICD years are fiscal: Oct 1 rollover), never deletes. Every edit rides the proposal queue below for expert review.
review per-store drift, then push on the RAG tab
Browse the corpus
look a key up directly, or search when you don't know itProposal review queue
Guidance editors
emails allowed to approve/deny proposals (admins are implicit)RAG push guidance → vector stores
Pushing guidance into the OpenAI / Gemini file-search stores is a deliberate MANUAL step on our own interval (no scheduler). This console shows, per store, when it was last pushed and how many corpus changes have landed since, and warns while any store carries unpushed changes. Pushes update the existing (pinned) store ids in place, so KRAC's store-id settings never change. See docs/RAG_PUSH.md.
Stores & drift
Push history
DB viewer
Select a table
Schema
Rows
SQL console (read-only)
MCP server (for agents)
These codesets are exposed as Model Context Protocol tools: live CPT / ICD / HCPCS / modifier lookups for any MCP-capable agent (ChatGPT, Claude Desktop, Claude Code, Cursor, OpenAI Agents, or your own client). The server is token-gated; set it up below.
Live tool catalog
ScrapeGuard
Anti-scraping detection across the REST + MCP API. Admin-only; the same data is consumable by the parent console.
Settings
Live - no redeploy, no coverage reset. Env vars stay the persistent default (a change here reverts on restart).
Who's scraping - flagged principals, by risk score
Activity
The organizations this instance has served since it started. The record is kept in memory only: it holds counts, labels and times, never a code value or a token, and it clears when the service restarts. Billing lives in the control plane.
Observed organizations
Crosswalk the Hank Crosswalk — CPT to ASA
This table is the source of truth, not a build artifact. Edits here take effect on the very next lookup — nothing is rebuilt from a spreadsheet. Rows are retired by date, never deleted, and every change is attributed to whoever made it.
Browse the crosswalk
look a CPT up directly, or search codes / ASA / commentsAdd or edit a mapping
applies immediately — no rebuild, no deployA global row is the Hank-wide default. A customer id scopes the mapping to that customer only, and wins over global for them. Editing a retired row brings it back.
CPT Groups the grouping master: CPT ranges to named groups
This table is the source of truth, not a build artifact. Edits here change group membership everywhere: scope expansion, code profiles, guidance group keys, and RAG routing. Rows are retired by date, never deleted, and every change is attributed to whoever made it.
Browse the groups
Add or edit a group row
applies immediately, no rebuild or deployA row defines one CPT range for a group, or an extras / include-only row (leave the range blank). Preview shows exactly which codes each affected group gains or loses before you save. Editing a row keeps its identity; use New row to start a fresh one.
Export download a SQLite bundle
Dump codesets to a self-contained SQLite file for a system that
reads the library directly rather than the API. Every bundle carries
codeset_meta, so you can always tell which vintage you are holding.
Hank-internal only.
Standard bundles
published per data versionThe core bundle is what legacy library consumers used locally: the active-code core plus RVU values and the ASA anesthesia crosswalks. The updater republishes it automatically on every data refresh, so this normally redirects straight to the published copy. If that cache is cold it builds on demand instead and can take a few seconds before the file starts arriving.
Custom export
built on demand — takes a few secondsLicensing
Codesets owns its corpus licensing. Each corpus defaults to the registry classification; override it (e.g. a negotiated deal → make it public), and grant licensed corpora per customer. The control plane only supplies identity.
Pending access requests - approve writes the grant + entitles the org's next call
Corpora - license-protected? (override the registry default)
Per-customer grants
Grant (or explicitly deny) a customer organization access to a licensed corpus. A deny overrides the env-var fallback; clearing reverts to it.