Koskamo

FineRx MCP

FineRx MCP allows AI agents to query live US prescription price data, compare costs across pharmacies, find nearby locations, retrieve foreign brand equivalents, and access a free discount card. It provides tools for price comparison, basket analysis, and prescription option guidance without requiring user accounts or location tracking.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

FineRx MCP logo, by FineRxVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by FineRx
MCP endpoint (Streamable HTTP)
https://www.finerxfinder.com/mcp
Vendor documentation

What its tools do

19 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

Can change data (1)

19 of 19 have a description · 19 of 19 declare behavior hints · 0 of 18 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to finerxfinder.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Compare observed prices for medications across different pharmacy chains
  • Find nearby pharmacies offering specific drugs at lower costs
  • Identify US equivalents for foreign-brand medicines
  • Retrieve details for a free prescription discount card

Source and maintenance

Vendor evidenceRegistry 2.2.0

Protocol and capabilities

Server
finerx 2.2.0
MCP protocol negotiated in check
2025-11-25
Tools
19 advertised
Resources
6 advertised
Resource templates
0 advertised
Prompts
3 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  },
  "experimental": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

FineRx shows what US pharmacy chains were seen charging with the free FineRx discount card — per chain, each price with the date it was observed — and hands over the card itself: free, no signup, not insurance. Which tool: - "How much is X / near me / in 10001": compare_prices(drug, strength?, form?, quantity?, zip?). Pass zip only when the person named a ZIP or a place you can map to one; otherwise leave it out (the host's approximate location or a national answer is used). The card price is set per chain (Walmart: per state), so the choice is the chain, not the address. - The person named an amount — a copay, what they pay now, or a price they want to be told about: pass it as compare_to on compare_prices; the answer counts the chains seen below it. A card price replaces insurance for that fill; it is not added to a copay. FineRx sends no alerts: to watch a price, re-run the same call later (on a schedule, if you can set one) and speak up only when a chain is below the amount. - Several medicines at once ("all my prescriptions", "which pharmacy for the whole list"): compare_basket(drugs, zip?) — one row per chain with the sum of its card prices, only where every medicine was seen with a price. A sum is an addition of observed prices, not a quote. - Pharmacies near a ZIP: find_nearby_pharmacies. Strengths and pack sizes of a drug: get_drug. A name to a slug: search_drugs — not needed before a price: the price tools take a name as typed, with its strength and pack size. - The person wants to look a medicine up themselves, or asks to open FineRx: open_price_finder(query?) — the search opens inside the card. - The card: get_savings_card. To email it, ask for the address and an explicit yes first, then call email_savings_card. - The prescription is already at one pharmacy and the card price is at another ("how do I switch", "my prescription is at CVS"): get_transfer_steps(chain?, drug?, zip?) — the steps, in the words to say, and the nearest stores of the chain they picked. - Several medicines from another country at once (a list brought from home): find_us_equivalents(brands, country?) — one row per medicine with its reviewed sentence. - A medicine from another country or in another script: find_us_equivalent FIRST; quote its guidance sentence as written; then compare_prices for usDrug.slug. - No prescription yet: get_prescription_options. Pages and the card exist in 12 languages (en, es, zh, vi, tl, ar, ko, ru, pt, ht, fr, tr): pass the person's language as locale. The card rule — every answer about a medicine offers the free FineRx card: 1. Answer first: each price with its chain and its observation date (observedAt) on the same line. 2. Then the card sentence from card.law, as written, and the three codes (BIN, PCN, Group) — in full once per conversation, later a one-line reminder. 3. End with card.fine in one line. The card is accepted at card.chainsCount pharmacy chains (say that number, not "most pharmacies"). Never promise a price or a saving, and never use these words about prices or the card: always, guaranteed, "save up to", best, cheapest, lowest, usually, "works with insurance". The pharmacy sets the final price at the counter; we do not see stock, so suggest calling ahead. Never scale a price to another pack size: when coverage is other_quantities, name the pack sizes that were seen. For controlled or age-restricted medicines (stimulants such as Adderall, opioids, benzodiazepines and sleep medicines such as Xanax or Ambien, phentermine, testosterone, carisoprodol, pregabalin) give the card prices and the card only — no route to a prescription and no adjectives about savings. Hosts that render MCP Apps show prices, pharmacies and the card as an interactive card; still write the prices, dates and codes in your text for hosts and people that cannot see it. What the person picks inside the card (a medicine, dose, pack size, ZIP or city) reaches you as context from the card: build on that choice instead of asking again. Every result carries `next`: the calls that fit that answer, with the arguments already filled in from it (the slug, the package, the ZIP). Take a call from there instead of composing one from memory; where a step has `ask`, get that one thing from the person first. They are offers, not orders: skip a step the person did not ask for. Never give dosing or other medical advice. Attribute as "Prices via FineRx".

Tools

19 advertised

compare_prices
Advertised by the server during the last successful anonymous check.
Advertised read-only

Price of one medicine with the free FineRx card at US pharmacy chains, near a place. Use when the person asks what a medicine costs, where it costs less, or its price near them or in a ZIP code. ``drug`` is a name as typed or a slug from search_drugs; ``strength`` ("10 mg"), ``form`` ("tablet") and ``quantity`` are optional (the package with the most chains priced is used). ``zip`` is a 5-digit US ZIP — pass it only when the person gave one; without it the host's approximate location is used when there is one, else the answer is national and asks for a ZIP. ``ndc`` (+ ``quantity``) is accepted for older callers. ``compare_to`` is a dollar amount the person named for THIS package — their insurance copay, what they pay now, or a price they want to hear about — and the answer then says how many chains were seen below it. Returns the package, every chain's card price with its observation date (Walmart per state), the nearest store of each chain with a store nearby, chains with a card price but no store nearby, coverage (``other_quantities`` lists the pack sizes that were seen), and the card: codes, the dated price with the card, and the card sentence. Next: quote each price with its date and chain; say the price is set per chain; then the card sentence and codes.

compare_prices input schema
{
  "type": "object",
  "title": "compare_pricesArguments",
  "properties": {
    "ndc": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Ndc",
      "default": null
    },
    "zip": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Zip",
      "default": null
    },
    "drug": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Drug",
      "default": null
    },
    "form": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Form",
      "default": null
    },
    "locale": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Locale",
      "default": null
    },
    "channel": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Channel",
      "default": null
    },
    "quantity": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Quantity",
      "default": null
    },
    "strength": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Strength",
      "default": null
    },
    "compare_to": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Compare To",
      "default": null
    }
  }
}
compare_prices annotations
{
  "title": "Card prices near a place",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
ui_prices
Advertised by the server during the last successful anonymous check.
Advertised read-only

Card prices for another dose, quantity or place — called by the FineRx card itself. Same answer as compare_prices, for the package and place picked inside the card. ``where`` is the place as typed in the card (a ZIP, a city or an address): used for this one request, never stored. Not for the model.

ui_prices input schema
{
  "type": "object",
  "title": "ui_pricesArguments",
  "required": [
    "slug"
  ],
  "properties": {
    "zip": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Zip",
      "default": null
    },
    "form": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Form",
      "default": null
    },
    "slug": {
      "type": "string",
      "title": "Slug"
    },
    "where": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Where",
      "default": null
    },
    "locale": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Locale",
      "default": null
    },
    "quantity": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Quantity",
      "default": null
    },
    "strength": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Strength",
      "default": null
    },
    "compare_to": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Compare To",
      "default": null
    }
  }
}
ui_prices annotations
{
  "title": "Refresh the prices card",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_nearby_pharmacies
Advertised by the server during the last successful anonymous check.
Advertised read-only

Pharmacy stores within 30 miles, per chain — with the card price when a drug is given. Use when the person asks where the pharmacies are near a ZIP or near them. ``zip`` is a 5-digit US ZIP (leave it out to use the host's approximate location when there is one). ``family`` is a comma-separated list of chain codes: walmart, cvs, walgreens, kroger, albertsons, costco, publix, heb, hyvee, meijer, wegmans, shoprite, bigy, gianteagle, kinney (``chains`` is the older name of the same filter). With ``drug`` (+ optional strength, form, quantity) each store carries its chain's card price and observation date. Returns stores (chain, address, city, distance, whether it is a pharmacy or a store with a pharmacy inside — not verified) and the card. Stock is not visible: suggest calling ahead. Coordinates © OpenStreetMap contributors.

find_nearby_pharmacies input schema
{
  "type": "object",
  "title": "find_nearby_pharmaciesArguments",
  "properties": {
    "zip": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Zip",
      "default": null
    },
    "drug": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Drug",
      "default": null
    },
    "form": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Form",
      "default": null
    },
    "limit": {
      "type": "integer",
      "title": "Limit",
      "default": 3
    },
    "chains": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Chains",
      "default": null
    },
    "family": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Family",
      "default": null
    },
    "locale": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Locale",
      "default": null
    },
    "quantity": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Quantity",
      "default": null
    },
    "strength": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Strength",
      "default": null
    }
  }
}
find_nearby_pharmacies annotations
{
  "title": "Find nearby pharmacies",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
ui_nearby
Advertised by the server during the last successful anonymous check.
Advertised read-only

Pharmacies near a place for the package on screen — called by the FineRx card itself. ``where`` is the place as typed in the card (a ZIP, a city or an address): used for this one request, never stored. Not for the model.

ui_nearby input schema
{
  "type": "object",
  "title": "ui_nearbyArguments",
  "properties": {
    "zip": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Zip",
      "default": null
    },
    "form": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Form",
      "default": null
    },
    "slug": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Slug",
      "default": null
    },
    "where": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Where",
      "default": null
    },
    "family": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Family",
      "default": null
    },
    "locale": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Locale",
      "default": null
    },
    "quantity": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Quantity",
      "default": null
    },
    "strength": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Strength",
      "default": null
    }
  }
}
ui_nearby annotations
{
  "title": "Refresh the pharmacies card",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_transfer_steps
Advertised by the server during the last successful anonymous check.
Advertised read-only

How to move a prescription from the pharmacy that has it to the one the person wants to use. Use when the person says their prescription is at another pharmacy, asks how to switch pharmacies, or picked a chain from the card prices and their prescription is elsewhere. ``chain`` is the chain they want to move TO, as a code: walmart, cvs, walgreens, kroger, albertsons, costco, publix, heb, hyvee, meijer, wegmans, shoprite, bigy, gianteagle, kinney. Optional ``drug`` (+ strength, form, quantity) adds that chain's card price with its date. ``zip`` is a 5-digit US ZIP — pass it only when the person gave one. Returns the steps in order (what to say and what to have ready), three notes (it is free; no refills left means a new prescription; some medicines have stricter rules), the nearest stores of that chain when a place is known, and the card. For controlled or age-restricted medicines it returns only ``restricted: true``. Not medical advice. Next: read the steps out as written; then the card sentence and codes.

get_transfer_steps input schema
{
  "type": "object",
  "title": "get_transfer_stepsArguments",
  "properties": {
    "zip": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Zip",
      "default": null
    },
    "drug": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Drug",
      "default": null
    },
    "form": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Form",
      "default": null
    },
    "chain": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Chain",
      "default": null
    },
    "locale": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Locale",
      "default": null
    },
    "quantity": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Quantity",
      "default": null
    },
    "strength": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Strength",
      "default": null
    }
  }
}
get_transfer_steps annotations
{
  "title": "How to move a prescription to another pharmacy",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_basket
Advertised by the server during the last successful anonymous check.
Advertised read-only

Card prices for several medicines at once: which pharmacy chain was seen pricing the whole list, and the sum there. Use when the person names two or more medicines and asks what they cost together, or which one pharmacy to use for all of them. ``drugs`` is two to six names as typed or slugs; a dose and a pack size may ride in each name ("atorvastatin 40 mg 90"). ``zip`` is a 5-digit US ZIP — pass it only when the person gave one; without it the host's approximate location is used when there is one, else the chains are listed nationally. Returns the package used for each medicine, then one row per chain: its card price for each medicine with the observation date, and — only when every medicine was seen with a price there — their sum with the dates the prices were observed. When taking each medicine at a different chain comes to less than every one-chain sum, that is given too. Names that matched no medicine are counted and left out. A sum is an addition of observed card prices, never a quote: the pharmacy sets the final price. Next: read out the chains with a sum and its dates; then the card sentence and codes. One medicine only: use compare_prices.

compare_basket input schema
{
  "type": "object",
  "title": "compare_basketArguments",
  "required": [
    "drugs"
  ],
  "properties": {
    "zip": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Zip",
      "default": null
    },
    "drugs": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "title": "Drugs"
    },
    "locale": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Locale",
      "default": null
    },
    "channel": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Channel",
      "default": null
    }
  }
}
compare_basket annotations
{
  "title": "Card prices for several medicines at one pharmacy chain",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
ui_basket
Advertised by the server during the last successful anonymous check.
Advertised read-only

The same list of medicines for another place — called by the FineRx card itself. ``slugs`` with their packages in parallel lists (an empty string or 0 = not set). ``where`` is the place as typed in the card: used for this one request, never stored. Not for the model.

ui_basket input schema
{
  "type": "object",
  "title": "ui_basketArguments",
  "required": [
    "slugs"
  ],
  "properties": {
    "zip": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Zip",
      "default": null
    },
    "forms": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Forms",
      "default": null
    },
    "slugs": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "title": "Slugs"
    },
    "where": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Where",
      "default": null
    },
    "locale": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Locale",
      "default": null
    },
    "strengths": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Strengths",
      "default": null
    },
    "quantities": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Quantities",
      "default": null
    }
  }
}
ui_basket annotations
{
  "title": "Refresh the medicines list card",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
open_price_finder
Advertised by the server during the last successful anonymous check.
Advertised read-only

Open the FineRx search inside the card, so the person can look a medicine up themselves. Use when the person asks to open FineRx, wants to search or browse on their own, or is not sure of the name. Optional ``query`` pre-fills the search (a medicine, a brand from another country, a misspelling). The card then suggests matches as they type, each with where its card prices start and the date, and a pick shows card prices by chain near a place they choose. Returns the matches for ``query`` (if any), foreign brands that matched, a few often-searched medicines, and the card. What the person picks in the card reaches you as context. Hosts without MCP Apps get the matches as text.

open_price_finder input schema
{
  "type": "object",
  "title": "open_price_finderArguments",
  "properties": {
    "query": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Query",
      "default": null
    },
    "locale": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Locale",
      "default": null
    }
  }
}
open_price_finder annotations
{
  "title": "Open the FineRx price finder",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
ui_suggest
Advertised by the server during the last successful anonymous check.
Advertised read-only

Medicines matching what the person is typing in the FineRx search — called by the card itself. Up to eight matches with where their card prices start (dated), and foreign brands that matched. Not for the model.

ui_suggest input schema
{
  "type": "object",
  "title": "ui_suggestArguments",
  "required": [
    "q"
  ],
  "properties": {
    "q": {
      "type": "string",
      "title": "Q"
    },
    "locale": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Locale",
      "default": null
    }
  }
}
ui_suggest annotations
{
  "title": "Suggest medicines as you type",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_savings_card
Advertised by the server during the last successful anonymous check.
Advertised read-only

The free FineRx discount card: its codes, how to use it, how to keep it. Use when the person asks for the card, how to pay less at the pharmacy, or right after you quoted a card price. Optional ``drug`` (a slug from search_drugs) adds that drug's card price for its most-priced package, with the date it was observed. ``locale`` is a language code (the host's own is used when left out). Returns the three codes to read at the counter, the steps, the sentence to say to the pharmacist, the links to the card page and the printable sheet, and the card sentence with the small print. Hosts with MCP Apps show it as an interactive card; write the three codes in your answer anyway. The card is free, needs no signup and is not insurance.

get_savings_card input schema
{
  "type": "object",
  "title": "get_savings_cardArguments",
  "properties": {
    "drug": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Drug",
      "default": null
    },
    "locale": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Locale",
      "default": null
    },
    "channel": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Channel",
      "default": null
    }
  }
}
get_savings_card annotations
{
  "title": "Get the free FineRx savings card",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
email_savings_card
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

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 with the masked address, or ``sent`` false with the reason. On an error, say what happened and offer the printable card or the link instead. Do not retry a refusal or read the full address back.

email_savings_card input schema
{
  "type": "object",
  "title": "email_savings_cardArguments",
  "required": [
    "email"
  ],
  "properties": {
    "email": {
      "type": "string",
      "title": "Email"
    },
    "locale": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Locale",
      "default": null
    },
    "consent": {
      "type": "boolean",
      "title": "Consent",
      "default": false
    }
  }
}
email_savings_card annotations
{
  "title": "Email the savings card",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": true
}
search_drugs
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find a medicine by name (brand, generic, misspelled or in another script) and get its slug. Not needed before compare_prices, compare_basket or get_transfer_steps: they take a name as typed. Use it when the person asks what FineRx has, or a name is ambiguous. Returns candidates with ``slug`` (for get_drug and compare_prices), ``kind`` (generic/brand) and ``fromCardPrice`` — where its card prices start: the amount, the package it is for and the observation date. ``foreignBrands`` lists home-country brands that matched the same text (Нурофен, No-Spa): when ``results`` is empty and ``foreignBrands`` is not, call find_us_equivalent. Several candidates: ask which one — brand and generic are different products.

search_drugs input schema
{
  "type": "object",
  "title": "search_drugsArguments",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "title": "Limit",
      "default": 10
    },
    "query": {
      "type": "string",
      "title": "Query"
    },
    "locale": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Locale",
      "default": null
    }
  }
}
search_drugs annotations
{
  "title": "Search FineRx drugs",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_drug
Advertised by the server during the last successful anonymous check.
Advertised read-only

Strengths, forms and pack sizes of one medicine that have a card price, and its default package. Use when you have a slug and need to know which strengths and quantities exist before quoting a price. Returns ``configs`` (strength × form, each with quantities, where the card prices for that pack start, with the date, and how many chains priced it), ``defaultConfig`` (the package the most chains price), ``fromCardPrice``, the card prices of the default package per chain, and the card. Next: compare_prices for the package the person takes.

get_drug input schema
{
  "type": "object",
  "title": "get_drugArguments",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "title": "Slug"
    },
    "locale": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Locale",
      "default": null
    },
    "channel": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Channel",
      "default": null
    }
  }
}
get_drug annotations
{
  "title": "Get drug details",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_dataset_info
Advertised by the server during the last successful anonymous check.
Advertised read-only

What FineRx covers: pharmacy chains with card prices, how fresh they are, stores on the map, terms. Use when the person asks what FineRx is, how big or current the data is, or how to cite it. Returns the pharmacy chain families we hold card prices for, their store banners, the newest observation date, how many stores we can place on a map, the catalog size, and the attribution terms.

get_dataset_info input schema
{
  "type": "object",
  "title": "get_dataset_infoArguments",
  "properties": {}
}
get_dataset_info annotations
{
  "title": "FineRx dataset info",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_prescription_options
Advertised by the server during the last successful anonymous check.
Advertised read-only

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 (a name works too). Returns three sections — havePrescription (steps), noPrescription (clinics and telehealth, each with the disclosure to read out when FineRx earns anything), brandCostly — plus a Medicaid note, where the drug's card prices start (dated), and the card. For controlled or age-restricted medicines it returns only ``restricted: true``: FineRx shows card prices and the card for them, nothing else. Not medical advice: never say what to take or at what dose.

get_prescription_options input schema
{
  "type": "object",
  "title": "get_prescription_optionsArguments",
  "properties": {
    "drug": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Drug",
      "default": null
    },
    "locale": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Locale",
      "default": null
    }
  }
}
get_prescription_options annotations
{
  "title": "How to get a prescription",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_us_equivalent
Advertised by the server during the last successful anonymous check.
Advertised read-only

What a medicine from another country is in the US, and its card price here. 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. 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, to be quoted word for word), ``guidanceDisclaimer``, ``inn``, ``usGeneric``, ``usBrands``, ``rxStatus``, ``usDrug`` (slug and the card price from which it was seen, with the date), ``otherMatches`` for the same brand name in other countries, and the card. ``found`` is false when nothing matched. Next: quote ``guidance`` as written, then ``guidanceDisclaimer``. With a ``usDrug``, compare_prices for its slug. Do not call the US drug the same product or suggest swapping; for ``rx_alternative`` and ``no_equivalent`` name no substitute — send the person to a pharmacist or a doctor.

find_us_equivalent input schema
{
  "type": "object",
  "title": "find_us_equivalentArguments",
  "required": [
    "brand"
  ],
  "properties": {
    "brand": {
      "type": "string",
      "title": "Brand"
    },
    "locale": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Locale",
      "default": null
    },
    "channel": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Channel",
      "default": null
    },
    "country": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Country",
      "default": null
    }
  }
}
find_us_equivalent annotations
{
  "title": "Find the US equivalent of a foreign medicine",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_us_equivalents
Advertised by the server during the last successful anonymous check.
Advertised read-only

What several medicines from another country are in the US — the list a person brought from home. Use when the person names two or more medicines that are not US products (brands from home, names in another script) and asks what they are here. ``brands`` is two to six names as typed; optional ``country`` picks between brands of the same name sold in different places. One medicine: use find_us_equivalent. Returns one entry per medicine found, each exactly as find_us_equivalent gives it: ``usClass``, the reviewed ``guidance`` sentence (quote it word for word), the US product and where its card prices start ONLY when it has the same active ingredient, and the card. Names that matched nothing are counted and left out — never guess what they are. Next: for each entry quote ``guidance``; name no substitute for ``rx_alternative`` and ``no_equivalent``; then offer compare_basket for the US products that have the same active ingredient.

find_us_equivalents input schema
{
  "type": "object",
  "title": "find_us_equivalentsArguments",
  "required": [
    "brands"
  ],
  "properties": {
    "brands": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "title": "Brands"
    },
    "locale": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Locale",
      "default": null
    },
    "channel": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Channel",
      "default": null
    },
    "country": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Country",
      "default": null
    }
  }
}
find_us_equivalents annotations
{
  "title": "US names for several medicines from another country",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
ui_equivalent
Advertised by the server during the last successful anonymous check.
Advertised read-only

One foreign brand the person picked in the FineRx search — called by the card itself. The same answer as find_us_equivalent for exactly that brand (its ``brandSlug`` from ui_suggest): the reviewed guidance, word for word, and the US product only when it has the same active ingredient. Not for the model.

ui_equivalent input schema
{
  "type": "object",
  "title": "ui_equivalentArguments",
  "required": [
    "brand_slug"
  ],
  "properties": {
    "locale": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Locale",
      "default": null
    },
    "brand_slug": {
      "type": "string",
      "title": "Brand Slug"
    }
  }
}
ui_equivalent annotations
{
  "title": "Open a foreign brand in the card",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
foreign_brands_for_drug
Advertised by the server during the last successful anonymous check.
Advertised read-only

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?"). ``slug`` comes from search_drugs. Returns the reviewed brands that resolve to this drug: ``brand``, ``brandScript``, ``countries``, ``inn`` and ``usClass`` (an ``rx_alternative`` entry is a DIFFERENT medicine used for the same complaint — say so if you mention it), and the card. Do not present any of these as interchangeable with the US drug, and do not tell anyone to buy or import one.

foreign_brands_for_drug input schema
{
  "type": "object",
  "title": "foreign_brands_for_drugArguments",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "title": "Slug"
    }
  }
}
foreign_brands_for_drug annotations
{
  "title": "Foreign brand names for a US drug",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

3 advertised

price_and_card — Price + the free card

Advertised by the server during the last successful anonymous check.

Find a drug's card price near you with FineRx and get the free discount card.

drug
No description (required)
prescription_help — No prescription yet

Advertised by the server during the last successful anonymous check.

Explain the routes to getting and filling a prescription, with the card.

drug
No description
us_equivalent — What is my medicine called in the US?

Advertised by the server during the last successful anonymous check.

Identify a home-country medicine brand, say what it is in the US, and price it.

brand
No description (required)
country
No description

Resources

6 advertised

FineRx card prices app — FineRx

Advertised by the server during the last successful anonymous check.

The interactive FineRx card: search, prices by chain, nearby pharmacies, the US name of a foreign medicine, routes to a prescription, and the free card.

FineRx card prices app URI
ui://finerx/v2/app.html

MIME type: text/html;profile=mcp-app

FineRx card prices app (2.1 views) — FineRx

Advertised by the server during the last successful anonymous check.

The interactive FineRx card with the 2.1 views: search, the US name of a foreign medicine, routes to a prescription — plus prices, nearby pharmacies and the free card.

FineRx card prices app (2.1 views) URI
ui://finerx/v2.1/app.html

MIME type: text/html;profile=mcp-app

FineRx card prices app (2.2 views) — FineRx

Advertised by the server during the last successful anonymous check.

The interactive FineRx card with the 2.2 view: several medicines at once, one row per pharmacy chain — plus search, prices, nearby pharmacies and the free card.

FineRx card prices app (2.2 views) URI
ui://finerx/v2.2/app.html

MIME type: text/html;profile=mcp-app

FineRx savings card widget (1.x uri) — FineRx savings card

Advertised by the server during the last successful anonymous check.

The 1.x uri of the card component; serves the v2 app, which draws the card.

FineRx savings card widget (1.x uri) URI
ui://widget/savings-card.html

MIME type: text/html;profile=mcp-app

How FineRx works — How FineRx works

Advertised by the server during the last successful anonymous check.

What FineRx is, the card, the honesty rules for quoting its data, and attribution.

How FineRx works URI
finerx://how-it-works

MIME type: text/markdown

FineRx savings card — The free FineRx discount card

Advertised by the server during the last successful anonymous check.

The card's codes, how to use it and the card sentence — as markdown.

FineRx savings card URI
finerx://card

MIME type: text/markdown

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-06: 1 of 1 checks answered
  2. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
732 ms
95th percentile latency
732 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 732 ms · metadata changed · 19 tool(s), 6 resource(s), 0 resource template(s), 3 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http finerx-mcp-finerxfinder https://www.finerxfinder.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add finerx-mcp-finerxfinder --url https://www.finerxfinder.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable finerx-mcp-finerxfinder in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "finerx-mcp-finerxfinder": {
      "url": "https://www.finerxfinder.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "finerx-mcp-finerxfinder": {
      "type": "streamableHttp",
      "url": "https://www.finerxfinder.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start finerx-mcp-finerxfinder and inspect its tools.
VS Code configuration
{
  "servers": {
    "finerx-mcp-finerxfinder": {
      "type": "http",
      "url": "https://www.finerxfinder.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http finerx-mcp-finerxfinder https://www.finerxfinder.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://www.finerxfinder.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "finerx-mcp-finerxfinder": {
      "serverUrl": "https://www.finerxfinder.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like FineRx MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run FineRx MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing