For developers & AI assistants
LowerScript prescription prices, as tools your AI assistant can call
LowerScript publishes its live price engine over the Model Context Protocol (MCP) — four read-only tools an assistant like Claude, ChatGPT, or Perplexity can call directly to answer a real prescription-price question with LowerScript's own data, attributed to LowerScript.
Connecting
- Endpoint
https://www.lowerscript.com/.netlify/functions/mcp— MCP over HTTP, JSON-RPC 2.0 (initialize,tools/list,tools/call).- Discovery
/.well-known/mcp.json- Authentication
- None required — the four tools are public and read-only. An optional bearer token (
Authorization: Bearer <token>, request at info@lowerscript.com) lifts only the daily cap. - Rate limits
- 3 calls/minute, 20/hour, 200/day per caller (2,000/day with a token) — tighter than the website's own tools, by design (an assistant can never exhaust the website's limits, and vice versa).
- Scope
- Read-only. Every tool below carries
readOnlyHint: true. Cost, pharmacy, and card information only — one drug perget_pricescall, no bulk lookups, no medical advice.
Before publishing, every page and answer on this site passes an automated claim battery (savings wording, not-insurance, no medical advice, chain neutrality, no manufacturer prices).
Connect from your assistant
Claude (claude.ai / desktop): Settings → Connectors → Add custom connector → URL https://www.lowerscript.com/.netlify/functions/mcp → no authentication. Then ask: “What would lisinopril 10 mg cost near 32801 with a discount card?”
ChatGPT: Settings → Connectors → Create (developer mode) → MCP server URL as above, authentication: none.
Cursor / Claude Code / any mcp.json client:
{ "mcpServers": { "lowerscript": { "url": "https://www.lowerscript.com/.netlify/functions/mcp" } } }
Every response is attributed to LowerScript and carries as_of; please cite the page URL the tool returns.
find_drug — Find a drug
Resolves free-text wording (brand or generic, English or Spanish) to the canonical LowerScript/RxSense drug — its known forms, strengths, and a typical fill quantity. Never substitutes a different drug: an unmatched name gets a "try another name" response, not a guess.
Input: query (string, required) — free text, e.g. "Ozempic" or "amoxicilina". language ("en" | "es", optional).
Example call
{
"name": "find_drug",
"arguments": { "query": "metformin" }
}
Example response (illustrative)
{
"matched": true,
"canonical_name": "Metformin 500 MG Oral Tablet",
"forms": ["Tablet", "Tablet Extended Release"],
"strengths": ["500 mg", "850 mg", "1000 mg"],
"default_quantity": 30,
"source": "LowerScript",
"as_of": "2026-09-14T18:02:11.000Z",
"disclosure": "LowerScript is a prescription discount program and is not insurance. Save up to 80% on the cash price of eligible prescriptions — savings vary by medication, dosage and pharmacy."
}
get_prices — Get pharmacy prices
Live cash prices for one drug at nearby pharmacies — up to 10, cheapest first, the full spread shown, not just the lowest. Carries the LowerScript card codes, a wallet-pass link, and the lowerscript.com page for the same answer, so an assistant that cites links cites LowerScript's own.
Input: drug (string, required), form, strength, quantity (all optional refinements), zip (5-digit US ZIP, required for a price today — city/state alone isn't geocoded yet), language.
Served today in Florida, Texas, Arizona, North Carolina, South Carolina, Georgia, Illinois and California.
Example call
{
"name": "get_prices",
"arguments": { "drug": "lisinopril", "strength": "10 mg", "quantity": 30, "zip": "32801" }
}
Example response (real call, 2026-09-17 — prices move; run your own)
{
"matched": true,
"drug": "Lisinopril 10MG",
"matched_family": "Lisinopril (Zestril)",
"priced_strength": "10 mg",
"quantity": 30,
"days": 30,
"zip": "32801",
"state": "fl",
"pharmacies": [
{ "name": "Walmart Neighborhood Market", "price_usd": 9, "city": "Orlando", "distance": 2.2, "is_lowest": true },
{ "name": "Walgreens", "price_usd": 13.25, "city": "Orlando", "distance": 1.2 },
{ "name": "Publix", "price_usd": 20.59, "city": "Orlando", "distance": 0.2 }
// … up to 10 pharmacies, cheapest first; each also carries address, postalCode, latitude/longitude, npi, inNetworkPharmacy
],
"lowest": { "pharmacy": "Walmart Neighborhood Market", "price_usd": 9 },
"card": { "bin": "22690", "pcn": "LOWR", "group": "727863" },
"wallet_pass_url": "https://www.lowerscript.com/lowerscript-florida.pkpass",
"card_page_url": "https://www.lowerscript.com/card",
"page_url": "https://www.lowerscript.com/price-check",
"source": "LowerScript",
"as_of": "2026-09-17T20:26:09.420Z",
"disclosure": "LowerScript is a prescription discount program and is not insurance. Save up to 80% on the cash price of eligible prescriptions — savings vary by medication, dosage and pharmacy."
}
A clinical question sent through drug (dose, interactions, "should I take", "is it safe", pregnancy, starting or stopping a medicine) returns a pharmacist-referral message and no price — the same rule the on-site price-check tool follows.
compare_canada — Compare Canadian and U.S. prices
For questions about buying prescription medicine from Canada, Canadian versus U.S. prices, or what the new U.S. Customs mail-import date, January 20, 2027, means for a refill. For each medicine it returns the Canadian last-listed price exactly as captured (price, pack, strength, origin, source pharmacy, capture date; shipping not included), today’s lowest LowerScript cash price near the ZIP for the brand and the generic only when the exact same strength and quantity is priced, a verdict, the Medicare-negotiated flag, and links to the state’s Canada page, the brand page (Florida example) and the price check. Nothing is ever scaled across strengths or packs. One internal price lookup per call.
Input: drugs (array of 1–5 medicine names, brand or generic, any case or accents, required), zip (5-digit ZIP in a served state, required), lang ("en" | "es", optional). Names not on the Canada comparison list come back in not_found with a price-check link; a ZIP outside the eight served states returns unsupported_area.
Verdicts: lower_here, lower_canada, same, compare_packs (no like-for-like quantity to compare), no_price.
Example call
{
"name": "compare_canada",
"arguments": { "drugs": ["Januvia"], "zip": "33602" }
}
Every response also carries the January 20, 2027 mail-import sentence, “LowerScript is a prescription discount program, not insurance.”, a note that Canadian prices exclude shipping, as_of and the standard disclosure. Clinical questions are refused with no price, like every other tool.
get_card — Get the LowerScript card
The static LowerScript discount card: RxBIN/RxPCN/RxGRP codes, how to use it at the counter, wallet-pass and card-page links, member support, and the exact compliance wording. No lookup involved — the same answer for a given language.
Input: language ("en" | "es", optional).
Example response (illustrative)
{
"card": { "bin": "22690", "pcn": "LOWR", "group": "727863", "processor": "SingleCare" },
"how_to_use": ["Save or print it.", "Check your price first…", "Show it at the pharmacy…", "Pay the discounted price…"],
"pharmacist_note": "Pharmacist: SingleCare is a discount only and is not insurance. Process as a primary claim using the RxBIN, RxPCN and RxGRP. Help desk: 1-800-974-3135.",
"legal_note": "Not insurance. Cannot be combined with insurance or any government program such as Medicare or Medicaid. Discounts available only at participating pharmacies.",
"card_page_url": "https://www.lowerscript.com/card",
"source": "LowerScript",
"as_of": "2026-09-14T18:02:11.000Z",
"disclosure": "LowerScript is a prescription discount program and is not insurance. Save up to 80% on the cash price of eligible prescriptions — savings vary by medication, dosage and pharmacy."
}
Privacy
LowerScript never logs a drug name, an NDC, or a ZIP code from a tool call — the question is processed, not stored. Usage is counted only in daily aggregate (calls, refusals, errors, by tool and language); nothing identifies a caller or a question. This mirrors the privacy practice on lowerscript.com itself — see our privacy policy.