Look up a drug by name using GET https://rxnav.nlm.nih.gov/REST/rxcui.json?name={drugName}&search=1; the response contains idGroup.rxnormId[] with matching RxCUIs.
For approximate/fuzzy matching, use GET https://rxnav.nlm.nih.gov/REST/approximateTerm.json?term={drugName}&maxEntries=10 to get ranked candidate matches when exact lookup fails.
Retrieve full concept details for an RxCUI with GET https://rxnav.nlm.nih.gov/REST/rxcui/{rxcui}/allrelated.json to get related concepts across all term types (ingredient, brand, clinical drug, dose form).
To get NDC codes for a drug product, call GET https://rxnav.nlm.nih.gov/REST/rxcui/{rxcui}/ndcs.json.
Use GET https://rxnav.nlm.nih.gov/REST/rxcui/{rxcui}/properties.json to retrieve the canonical name, term type (TTY), and status for a given RxCUI.
Cache RxCUI lookups where possible; the RxNorm database is updated monthly, so refresh cached mappings on a monthly basis.
Known gotchas
RxCUIs are concept identifiers, not product identifiers; the same active ingredient exists at multiple levels (IN, SCD, SBD, GPCK) with different RxCUIs—ensure you are working with the appropriate term type for your use case (e.g. SCD for prescribing, IN for ingredient-level analysis).
RxCUIs can be retired and replaced; always check the concept status in the properties response and resolve remapped or retired CUIs before storing them long-term.
Drug name normalization via RxNorm covers FDA-approved drugs in the US market; compounded medications, investigational drugs, and some supplements may not be present or may have incomplete mappings.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp