Skip to main content
Glama

What do US pharmacies pay for this drug? CMS’s National Average Drug Acquisition Cost (NADAC) per unit for an NDC, the generic’s NADAC for a brand and the weekly price history since January 2025, from CMS’s NADAC files on data.medicaid.gov

drug_nadac
Read-only

What do US pharmacies pay for this drug? CMS’s National Average Drug Acquisition Cost (NADAC) per unit for an NDC, the generic’s NADAC for a brand and the weekly price history since January 2025, from CMS’s NADAC files on data.medicaid.gov. From CMS’s weekly NADAC files on data.medicaid.gov (2025 on): the current per-unit NADAC of one NDC, its effective date and explanation codes, the corresponding generic’s NADAC for a brand, the range over NDCs with the same description, and every price period since January 2025. An NDC never listed answers 404 and is not charged; one no longer listed answers with listed: false and its last NADAC. Refreshed weekly (live freshness: /status). Price: $0.01 per call. Free tier: 3 free calls a day per IP, at most 3 rows per answer, taken by an unpaid call unless its _meta["distill/free-tier"] is "skip". Answers in a summary view of about 3,000 tokens; view: "full" for every row. Confidence: Freshness only (the values are CMS’s, read deterministically): 1 until 9 days after the latest weekly file’s as-of date, then halving every 14 days. National Average Drug Acquisition Cost as CMS publishes it weekly: a survey average of what retail pharmacies pay per unit, not a retail price, a reimbursement rate, a quote or medical advice. See /terms.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "ndc": "<ndc>"
    },
    "name": "drug_nadac"
  }
}

Input Schema

NameRequiredDescriptionDefault
ndcYesThe NDC: 11 digits (00378410591) or dashed (0378-4105-91, 5-4-2, 5-3-2 or 4-4-2).
viewNosummary (the default): the answer a model needs, budgeted; full: every row (a free answer stays capped).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / view
      Added value: +{
      +  "description": "summary (the default): the answer a model needs, budgeted; full: every row (a free answer stays capped).",
      +  "enum": [
      +    "summary",
      +    "full"
      +  ],
      +  "type": "string"
      +}
  2. Added

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint, but the description goes well beyond: per-call price ($0.01), free-tier quota (3 calls/day per IP, 3 rows, skip flag), weekly refresh cadence, an explicit freshness-confidence decay rule, and the 404 vs listed:false distinction. It also pre-empts misinterpretation by stating NADAC is a survey average of pharmacy acquisition cost, not a retail price or reimbursement rate.

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

Conciseness3/5

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

The opening restates the title almost verbatim, then the second sentence begins by re-stating the same source ('From CMS's weekly NADAC files on data.medicaid.gov (2025 on)'), which is redundant. The remaining content is dense and mostly earns its place, but the lead is not front-loaded efficiently and the pricing/quota/confidence block competes with the core purpose statement.

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?

With no output schema, the description carries the full burden of describing returns, and it does: current per-unit NADAC, effective date, explanation codes, the generic's NADAC for a brand, the range across NDCs sharing a description, and all price periods since January 2025. Edge-case return shapes (404, listed:false) and freshness semantics are also covered, leaving nothing material an agent would need before calling.

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 the baseline is 3; the description adds real meaning on top by tying view to output size (summary ~3,000 tokens, full returns every row but a free answer stays capped). It also clarifies that the NDC can be a brand's NDC yet yield the corresponding generic's NADAC, which the schema's pattern alone does not convey.

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?

Names a specific resource and metric (per-unit NADAC for an NDC, the generic's NADAC for a brand, weekly price history since January 2025) with a concrete source. An agent can distinguish this from drug_nadac_search or hospital_prices purely from the description, since the scope is pinned to a single NDC's CMS NADAC record.

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?

Gives clear operative context: lookup is by NDC, an unlisted NDC returns 404 and is not charged, a delisted NDC returns listed:false with its last NADAC, and the free tier's 3-row cap is lifted only via _meta skip. It never names drug_nadac_search as the alternative for searching by name or description, so the boundary with the sibling is left implicit rather than stated.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources