Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

FineRx

PYPI · FINERX-MCP · 2 COMPONENTS · SCANNED SEP 20

US Rx prices by pharmacy + free discount card; also US equivalents of foreign brands, 12 languages

+5 this week 68 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
  • 0 of 29 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency19
Schema Quality & AI Usability76
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 2454 tokens (~188/item across 13 items; 10 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management37
  • Stability observed for 11 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 0% of tool parameters carry a description.Fail
  • Structured output schemas are declared (90% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
  • Supports UI / widget rendering.Pass
Install

How do I install the FineRx MCP server?

FineRx runs locally as a PyPI package, launched with uvx finerx-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · finerx-mcp

# add to Claude Code
claude mcp add com-finerxfinder-finerx -- uvx finerx-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "com-finerxfinder-finerx": {
      "command": "uvx",
      "args": [
        "finerx-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-finerxfinder-finerx": {
      "command": "uvx",
      "args": [
        "finerx-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add com-finerxfinder-finerx -- uvx finerx-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-finerxfinder-finerx": {
      "type": "local",
      "command": [
        "uvx",
        "finerx-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-finerxfinder-finerx --command uvx --arg finerx-mcp
# ~/.hermes/config.yaml
mcp_servers:
  com-finerxfinder-finerx:
    command: "uvx"
    args: ["finerx-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-finerxfinder-finerx": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "finerx-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add com-finerxfinder-finerx -t stdio -c uvx -a finerx-mcp
// mcp.json
{
  "mcpServers": {
    "com-finerxfinder-finerx": {
      "command": "uvx",
      "args": [
        "finerx-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 19 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Sept 26 +4
    • Stability: unverified → 0.27 functional
  • 15 Sept 26 +15
    • Malware scan: unverified → pass security
  • 14 Sept 26 −15
    • Malware scan: pass → unverified security
  • 9 Sept 26 +29
    • Injection markers: unverified → pass security
    • First check of Judged manipulation: pass security
    • Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
    • Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
    • Tool safety: Tool safety not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet. security
    • Tool coverage: unverified → 100 functional
    • MCP protocol: unverified → pass functional
    • Schema quality: unverified → 100 functional
    • First check of Capabilities: pass functional
    • First check of Tool coverage: 90 functional
    • First check of Schema quality: fail functional
    • First check of Schema quality: good functional
    • First check of Schema quality: fail functional
    • First check of Destructive annotations: pass functional
    • First check of Tool coverage: 0 functional
    • First check of Tool coverage: 88 functional
    • Capabilities: Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet. functional
    • Tool coverage: Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet. functional
    • Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
    • Package version: 1.2.0 → 1.5.0 functional
    • Package version: 1.2.0 → 1.3.0 functional
  • 26 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 21 Aug 26 0
    • Malware scan: unverified → pass security
  • 20 Aug 26 0
    • Malware scan: pass → unverified security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed pypi/finerx-mcp@1.5.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 29 packages
Packages resolved 29
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 10 exposed · ~2,023 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
compare_prices ~179

Compare FineRx prices for one package (an 11-digit NDC + quantity). Use when you know the exact package. Returns the offer matrix — for each pharmacy chain x savings program, the observed price and the date it was observed (observedAt) — plus ``savingsCard`` (the free discount card, its image, and the card price for this package when known). The cheapest offer is flagged isLowest. Get an ``ndc`` from get_drug's packages or the search flow. Do not call a price the lowest unless the offer says isLowest, and always give the observation date. Offer the card whenever you quote a price here.

NameTypeReqDescription
channelstring
localestring
ndcstringyes
quantitynumberyes

Structured output declared, but exposes no named fields.

No examples provided.

email_savings_card ~174

Email the free FineRx discount card to an address the person gave you. Use ONLY after the person has given an email address AND confirmed they want the card sent there — ask for both first, then set ``consent`` to true. The message contains the card and nothing else; FineRx does not store the address. Returns {"sent": true, "to": <masked address>} or {"sent": false, "error": ...}. On an error, say what happened and offer the image or the link instead. Do not call this without an explicit yes, do not guess or reuse an address, do not retry a refusal, and do not read the full address back to the person.

NameTypeReqDescription
consentboolean
emailstringyes
localestring

Structured output declared, but exposes no named fields.

No examples provided.

find_nearby_pharmacies ~107

Find the nearest pharmacy locations to a US ZIP code, per chain. ``zip`` is a 5-digit US ZIP. Optional ``chains`` is a comma-separated list of chain codes (e.g. "walgreens,publix"); default is all chains. ``limit`` caps locations per chain. Coordinates are OpenStreetMap-sourced (ODbL).

NameTypeReqDescription
chains
limitinteger
zipstringyes

Structured output declared, but exposes no named fields.

No examples provided.

find_us_equivalent ~456

Find out what a medicine from another country is in the US, and what it costs. Use when the person names a medicine that is not a US product — a brand from home (No-Spa, Nurofen, Dolo-Neurobion, 999 Ganmaoling), a name in another script (Но-шпа, 泰诺), or an ingredient the US calls something else (paracetamol) — or asks "what is this called in the US?". Optional ``country`` picks between brands of the same name sold in different places; ``locale`` is a language code (leave it out and the host's own locale is used). Returns the reviewed entry: ``usClass`` (``same_inn`` = the same active ingredient is sold here, ``rx_alternative`` = it is not and the closest US options need a prescription, ``no_equivalent`` = nothing here matches), ``guidance`` (ONE vetted sentence, written to be quoted word for word), ``inn``, ``usGeneric``, ``usBrands``, ``rxStatus``, ``notes``, ``components``, ``usDrug`` (slug, lowest observed price and the date it was observed), ``savingsCard`` when there is a US drug to fill, ``pageUrl``, and ``otherMatches`` when the same brand name exists in more than one country. ``found`` is false when nothing matched. Next: quote ``guidance`` as written, then say ``guidanceDisclaimer``. With a ``usDrug``, call compare_prices (or get_drug) for its slug, give the price WITH its observation date, and offer the free card. Do not call the US drug the same product, do not suggest swapping one for the other, and for ``rx_alternative`` or ``no_equivalent`` do not name a substitute at all — send the person to a pharmacist or a doctor. Do not translate or reword ``guidance``; it is reviewed text.

NameTypeReqDescription
brandstringyes
channelstring
country
locale

Structured output declared, but exposes no named fields.

No examples provided.

foreign_brands_for_drug ~202

Find what a US drug is called abroad — the reverse of find_us_equivalent. Use when the person has the US name and wants the home-country one ("what is lisinopril called in Mexico?"), or when naming a foreign brand would let them recognise the medicine you are describing. ``slug`` comes from search_drugs. Returns the reviewed brands that resolve to this drug: ``brand``, ``brandScript`` (the home-country spelling), ``countries``, ``inn`` and ``usClass``. Next: name the brands from the person's own country first. An ``rx_alternative`` entry is a DIFFERENT medicine US clinicians use for the same complaint — say so if you mention it. Brands with no US equivalent never appear here. Do not present any of these as interchangeable with the US drug, and do not tell anyone to buy or import one.

NameTypeReqDescription
slugstringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_dataset_info ~63

Get FineRx dataset coverage, freshness, and the attribution/disclaimer terms. Returns dataset counts (drugs, products, prices, chains, savings programs, pharmacy locations), the latest observation date, and the terms every consumer must honor (attribution + disclaimer).

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

get_drug ~175

Get a FineRx drug's details: coverage stats, variants, and the savings card. Use when you have a slug from search_drugs. Returns overall stats (product/ package/chain/vendor counts, fromPrice, latest observation date), the list of variants (strength x form) each with a fromPrice, and ``savingsCard`` — the free discount card with its codes, image, and (when known) the card price with its observedAt date. ``locale`` is "en" or "es"; ``channel`` tags the links so we can see which assistant sent someone. Do not quote a price without its observation date, and offer the card whenever you quote one.

NameTypeReqDescription
channelstring
localestring
slugstringyes

Structured output declared, but exposes no named fields.

No examples provided.

get_prescription_options ~157

Explain the routes to filling a prescription, including having none yet. Use when the person says they have no prescription, asks how to get one, or says the brand costs too much. Optional ``drug`` is a slug from search_drugs. Returns three sections — havePrescription (steps), noPrescription (named telehealth / clinic options, each with the disclosure to read out when FineRx earns anything), brandCostly (options) — plus a Medicaid note. Read each option WITH its disclosure. Do not recommend a particular clinician, do not say what to take or at what dose, and do not frame any of this as medical advice.

NameTypeReqDescription
drug
localestring

Structured output declared, but exposes no named fields.

No examples provided.

get_savings_card ~347

Get the free FineRx discount card: its codes, how to use it, how to save it. Use when you have just quoted a FineRx price, when someone asks how to pay less for a prescription, or when they ask for the card by name. Optional ``drug`` is a slug from search_drugs and adds that drug's card price when we have one; ``locale`` is a language code (leave it out and the host's own locale is used, else English); ``channel`` tags the links with who sent the person. Returns the card as JSON (the three codes to read at the pharmacy counter, what the card is and is not, the steps to use it, the sentence to say to the pharmacist, the ways to save it — image, print, link, email — an optional observed price with its date, an FAQ, the legal lines, and the UI labels) plus an image of the card. On a host that supports MCP Apps the same data is drawn as an interactive card in the conversation; that is a convenience, not a substitute, so STILL write the three codes in your own answer for the hosts and the people who cannot see it. Offer ONE way to save it: show the image, send the link, or email it. Do not present the card as insurance, do not promise a price, and do not call a price the lowest unless price.isLowest is true — otherwise repeat price.note as written. The card is free and needs no signup.

NameTypeReqDescription
channelstring
drug
locale

No output schema declared.

No examples provided.

search_drugs ~163

Search FineRx for drugs by name or localized alias. Returns candidate drugs with their slug (use it with get_drug), kind (generic/brand), and lowest observed public price (fromPrice). Use this first to resolve a drug name to a slug. ``foreignBrands`` carries any home-country medicine brand that matched the same text (Нурофен, No-Spa, Dolo-Neurobion) with its active ingredient and the US generic it maps to. When ``results`` is empty and ``foreignBrands`` is not, the person named a medicine from another country: call find_us_equivalent for the reviewed answer rather than guessing at one.

NameTypeReqDescription
limitinteger
querystringyes

Structured output declared, but exposes no named fields.

No examples provided.

Common questions

What is the FineRx MCP server?

FineRx is an MCP server listed in the public MCP registry as com.finerxfinder/finerx. US Rx prices by pharmacy + free discount card; also US equivalents of foreign brands, 12 languages. This page covers its PyPI package (finerx-mcp).

Is the FineRx MCP server safe to use?

FineRx scores 68 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the FineRx MCP server expose?

FineRx exposes 10 tools: search_drugs, get_drug, compare_prices, find_nearby_pharmacies, get_dataset_info, and 5 more. Their descriptions and schemas cost roughly 2,023 tokens of context every time the server is loaded.

Is the FineRx MCP server still maintained?

FineRx is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the FineRx MCP server under?

FineRx declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.