We count page visits with Google Analytics to see which pages are read. Nothing is stored until you accept, and we never store search queries. Privacy.
CounterScript - Drug Price Benchmarks — history · Wellknown
Append-only ledger
CounterScript - Drug Price Benchmarks
Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
⟨12 unchanged words⟩ CMS NADAC benchmark, per unit, with its datedate; for a pen, syringe, autoinjector or cartridge priced per mL whose description states what one holds, nadac.per_container gives the price of one, with container, ml and usd, as candidates and biosimilars do; box sizes are not in the data, so no fill estimate follows), a fair cash-price estimate range, FDA ⟨76 unchanged words⟩ of what the FDA Orange Book shows for it.it,with its ingredient where the file names one (status no_orange_book_match means our match did not pair the product with a listing, which says nothing either way about generics). A brand-name match can also carry cms_generic_price, CMS's ⟨293 unchanged words⟩ name unless the words before it are a whole drug name, so vanacof 2 does not get vanacof dm;dm, and stays part of it, whatever the basis, where catalog names put a number of their own after those words or an FDA label name holds it, so vagistat 3, a miconazole kit, does not get tioconazole of VAGISTAT-1, nor sore throat 911, a potassium lotion, the phenol SORE THROAT; for a trade name that is its only ⟨626 unchanged words⟩
150 words differ · removed · added
Tool surface changed
Changed the definition of "drug_price"
drug_pricechanged
description
⟨27 unchanged words⟩ equivalents, and Medicare negotiated prices where they apply.apply(medicare_negotiated_prices: one entry per year, including a year CMS has announced, with effective_date, price_30d for a 30-day equivalent supply, and per_unit where the NDCs share one). The input is a drug name with optional ⟨172 unchanged words⟩ for omeprazole); generics before brands, then alphabetical,withinwitheach.dosesWithinineachnumbergrouporder (2.5 mg before 10 mg), drugs
Tool surface changed
Changed the definition of "drug_price"
drug_pricechanged
description
⟨177 unchanged words⟩ fits several drugs. Up to 12 are listed,(genericeachdrugswithits description and price hint, in this order: the drug named on its own first, then alphabeticalcombinations with other drugs, then longer names that hold the word (esomeprazole for omeprazole); generics before brands, then alphabetical, within each. Within each withgroup,itsdrugsdescriptionthat
Tool surface changed
Changed the definition of "drug_price"
drug_pricechanged
description
⟨237 unchanged words⟩ : the index has no drug matching the query, with close drug names in did_you_mean where any exist;query; this does not mean the drug lacks a ⟨4 unchanged words⟩ covers only drugs with enough pharmacy survey data. did_you_mean, where present, lists drug names to search next, and did_you_mean_basis gives the reason: spelling (names spelled like the query; for a trade name that is its only active ingredient plus more words, such as theophylline-sr, that ingredient) or same_ingredient (the index has no drug under the ingredient name in the query, and the names are priced brands whose only active ingredient in the FDA Orange Book is that ingredient; store brands of the ingredient may still be priced under their own names). Names that differ from the query by a letter or two appear only when the query is not recognized in the loaded FDA Orange Book or Purple Book names. These catalogs omit some drug names; a spelling hint is a search aid, not an equivalent medicine. Every result also carries freshness, one entry ⟨150 unchanged words⟩
154 words differ · removed · added
Tool surface changed
Changed the definition of "drug_price"
drug_pricechanged
description
⟨362 unchanged words⟩ file ended more than 60 days ago, or when our newest attempt to fetch that source failed (last_attempt_failed then gives that attempt's date, and the file in use is the newest good one we hold), and then statement says so in plain words. stale is false forFor mfp, whose updates are irregular.irregular, stale is true only after a failed fetch. A source we have not fetched yet has no as_of or checked.
48 words differ · removed · added
Tool surface changed
Changed the definition of "drug_price"
drug_pricechanged
description
⟨76 unchanged words⟩ what the FDA Orange Book shows for it. A brand-name match can also carry cms_generic_price, CMS's NADAC figure for the corresponding generic drug, with its effective date, a fair cash estimate where a fill quantity applies, and the generic's name when exactly one generic in the index has that price, strength and ingredient. A biologic that the FDA Purple Book lists biosimilars to also carries biosimilars (each with proprietary and proper names, interchangeable, marketing_status, file_month, and a NADAC price where one is indexed) and biosimilars_statement; a biosimilar carries reference_product, with the same kinds of fields and a statement. candidates: the query fits several drugs. Up to ⟨84 unchanged words⟩ covers only drugs with enough pharmacy survey data. Every result also carries freshness, one entry per source (nadac, orangebook, mfp, purplebook) giving as_of, the publisher's date on the file in use (for purplebook, which FDA dates by month, the first day of that month); checked, the date of our newest successful fetch of that source; expected, the publishing cadence (weekly, monthly or irregular); and stale, which is true when the NADAC file is more than 10 days old, the Orange Book file more than 45 days old or the month of the Purple Book file ended more than 60 days ago, and then statement says so in plain words. stale is false for mfp, whose updates are irregular. A source we have not fetched yet has no as_of or checked.
246 words differ · removed · added
Tool surface changed
Changed the definition of "drug_price"
drug_pricechanged
title
before
—
after
Look up a US drug's fair cash price
description
LookLooks up what US pharmacies actually pay to acquire a drug (the CMS NADAC benchmark, per unit, with its date), a fair cash-price estimate range, FDA generic equivalents, and Medicare negotiated prices where applicable.theyReturnsapply.The input is a drug name with optional strength and form. result_type is one of three values. match: one drug
Tool surface changed
Changed the definition of "drug_price"
drug_pricechanged
annotations
before
—
after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Look up a US drug's fair cash price"}
TLS
Certificate recorded, valid to 2026-12-04
Authorization
Authorization not required
Tool surface
First tool surface recorded: 1 tool (server version 0.1)
within each group, drugs that hold every query word whole come first.
candidates_total gives how many drugs matched; when that
⟨69 unchanged words⟩
, and did_you_mean_basis gives the reason: spelling (
the name the query spells, apart from spaces and punctuation, without a dose the index lacks, or
names
spelled
beginning
like
with
it; a number typed with no unit is part of
the
query;
name
unless the words before it are a whole drug name, so vanacof 2 does not get vanacof dm;
for a trade name that is its only
⟨147 unchanged words⟩
not a statement that any product is a
substitute
substitute; a pack name a maker's label gives a brand counts as that brand, so z-pak, Pfizer's pack of Zithromax 250 mg tablets, gets azithromycin; a name current FDA labels use for other drugs gets none, so midol, ibuprofen in the Orange Book but acetaminophen, caffeine and pyrilamine on its label, gets no hint, nor does allay, a discontinued hydrocodone combination whose only current label is a sunscreen; and leading words of a trade name that begin a priced name of another drug get none, so 8 hour, of the discontinued aspirin 8-HOUR BAYER, is not aspirin, since the index prices 8 HOUR ACETAMINOPHEN ER; and leading words that are no name of a drug get none: three letters or fewer, such as cap of CAP-PROFEN (epi, short for epinephrine, aside
)
, and everyday words such as extended or junior, of EXTENDED PHENYTOIN SODIUM and JUNIOR STRENGTH ADVIL)
. A query that finds nothing as typed is read again: with a
hyphen between a number and a word as a space, so 8-hour finds what 8 hour finds; with a
bracketed part's brackets dropped, then with the part
⟨67 unchanged words⟩
ranexa gets its ingredient rather than TRANEXAMIC ACID.
Names that differ
No
from
name
the
is
query
guessed
by
from
a
letter
misspelling:
or
did_you_mean
two
holds
appear
no
only
name
when
with
letters
the query
is
lacks
not
or
recognized
changes
in
(lipiter
the
gets
loaded
none),
FDA
since
Orange
a
Book
real
name a letter
or
Purple
two
Book
from
names.
another
These
is
catalogs
often
omit
a
some
different
drug
names;
(afrin
a
is not errin). A
spelling hint is a search aid, not
⟨160 unchanged words⟩
416 words differ · removed · added
hold every query word
and
price
number
hint.
whole
come first, so a query for 5 mg lists 5 mg before 2.5 mg.
candidates_total gives how many drugs matched; when that
⟨91 unchanged words⟩
more words, such as theophylline-sr, that ingredient)
or
,
same_ingredient (the index has no drug under
⟨15 unchanged words⟩
ingredient in the FDA Orange Book is that
ingredient;
ingredient,
or, for a biologic, priced brands whose proper (ingredient) name in the FDA Purple Book is that name, such as trulicity for dulaglutide; message adds a sentence naming the catalog and its file;
store brands of the ingredient may still be priced under their own names)
or generic_name (the index has no drug under the brand name in the query; the one name is that brand's active ingredient, or its ingredients joined by "and", in the FDA Orange Book, such as tamsulosin hydrochloride for flomax, and searching it lists the priced products with it; message adds a sentence naming the file; the name is an ingredient, not a statement that any product is a substitute)
.
A query that finds nothing as typed is read again: with a bracketed part's brackets dropped, then with the part left out, such as eliquis for "eliquis (apixaban)"; and as a label writes a drug name, so a salt finds NADAC's short form or a description without it (sertraline hydrochloride finds SERTRALINE HCL) and amoxicillin and clavulanate potassium finds AMOX-CLAV. A name the FDA Orange Book or Purple Book lists that no description holds as whole words beginning its first or second word finds nothing, so ranexa gets its ingredient rather than TRANEXAMIC ACID.
Names that differ from the query by a
⟨195 unchanged words⟩
306 words differ · removed · added
,
with prices, provenance and honesty notes; a brand-name drug with no generic alternatives listed also carries generic_equivalence, a dated statement of what the FDA Orange Book shows for it.
candidates
:
the query fits several drugs. Up to 12 are listed
(
disambiguate
generic
and
drugs
call
first,
again
then alphabetical
),
each with its description and price hint. candidates_total gives how many drugs matched; when that is more than 12, message says the list was cut, and adding a strength
or
no_match.
form narrows it. A query equal to one candidate's description returns that drug as a match. no_match: the index has no drug matching the query, with close drug names in did_you_mean where any exist; this does not mean the drug lacks a fair price, since NADAC covers only drugs with enough pharmacy survey data.