Meridian Trace — Medical Device Registrations
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Medical device registrations across 25 markets: coverage gaps, 510(k) predicates, classification
| Author | com.meridiantrace |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2743 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Meridian Trace — Medical Device Registrations": {
"url": "https://meridiantrace.com/v1/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (14)
search_manufacturerResolve a company name to a Meridian manufacturer entity — the entry point for every other tool. Names are unified across spelling variants and scripts, so "Medtronic", "Медтроник" and "美敦力" reach the same entity, and subsidiaries resolve to the parent that owns them. Returns up to 5 candidates with a confidence rating and their market footprint. A plain web search cannot do this: a manufacturer's Asian registrations are filed under local-script names that never appear alongside the English one.
Parameters:
name(required) — string — Company name to search forcountry— string — Optional ISO2 or full country name to narrow results (e.g. "SG" or "Singapore")
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_registrationsEvery individual registration held by a manufacturer — product name, registration number, status, dates, risk class and source registry — filterable by market and status. Each row also carries an `enrichment` block Meridian derived: device class as a RANK on that market's own scale ("3 of 4") rather than a label that means different things in different markets, the resolved device type, the clinical area with the number of signals that agreed on it, the FDA product code, country of origin, brand and intended use. Each row carries a `provenance` block naming any field Meridian derived (inferred, classified, translated) with a confidence band where one applies; every field NOT listed there is the registry's own value, unmodified. Use that to lean on verbatim fields and hedge on derived ones. Use get_market_coverage instead when the question is which markets a company is in.
Parameters:
manufacturer_id(required) — stringpage— number — Page number (default 1)limit— number — Results per page (default 50, max 200)market— string — Filter to a single market — ISO2 code (e.g. "SG") or full name (e.g. "Singapore")status— string — Filter by lifecycle state: "active", "expired", "cancelled" or "pending". These are applied as RULES, not string matching — a market that publishes no status (Israel, Mexico, China) is resolved from its expiry date, and registry wording ("Cleared", "Approved", "Registered") is normalised. Any other value falls back to a literal match on the registry's own status string.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_registrationOne registration, complete. Everything get_registrations returns for that row, plus the registry's own market-specific fields under `registryFields` — Korea's renewal window, Australia's intended purpose, Saudi's authorisation pathway, the EUDAMED device attributes (implantable, sterile, reusable, measuring, latex, tissue origin, legislation), and the manufacturer address — none of which fit a list row. `sourceUrl` links the authority's own record so you can check us. Reading one device exhaustively costs the same as seeing it in a list, and re-reading it is free.
Parameters:
registration_id(required) — string — Registration id from get_registrations, find_similar_devices or get_recent_registrations.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_license_holdersThe local entities that actually hold a foreign manufacturer's registrations — the importers, distributors and regulatory consultants named on the licence in each market. In Malaysia, Indonesia and Thailand the registry names this local party rather than the OEM, so this is the only way to see who controls market access for a product, who a competitor is partnered with, and whether a manufacturer uses one partner or many.
Parameters:
manufacturer_id(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
find_distributorsRUNS WITHOUT AN API KEY (anonymous callers see the top 3 per market and are told how many more matched). WHO COULD SELL A DEVICE IN A MARKET — the question a company entering a market actually has. Give it a market and, optionally, a device type or clinical area; it returns the local distributors and importers who hold registrations there, what clinical areas they cover, how many markets they operate in, and a sample of the lines they already carry. Strongest across Asia, where the registry names the local partner rather than the manufacturer and this relationship is not published anywhere else: Singapore, Malaysia, Thailand, Indonesia, Vietnam, the Philippines, Japan, Korea, Taiwan, India and Hong Kong. This is the INVERSE of get_license_holders, which starts from a manufacturer you can already name. Regulatory consultants and authorised representatives are excluded — they hold licences as a service and do not sell — as are manufacturers' own in-country subsidiaries, Japanese captive importers and companies whose own registrations show they make what they register. TWO COUNTS, NEVER ONE: `matching` is the distributors that hold registrations in the market; `matchingLicenceOrTenderOnly` is the ones known only from a licence list or a tender award, with no registrations of their own in our data. Those are still potential distributors (often sub-distributors) and are returned too, each row marked `basis: "licence_or_tender_only"`; they rank after registered holders, so pass holder_basis "licence_or_tender_only" to list them. Read the `caveats` in the response before quoting any number from it.
Parameters:
market(required) — string — ISO2 code or market name, e.g. "TH" or "Thailand". One market per call.limit— number — 1-25 (default 10). Capped to 3 without a paid key.device_type— string — Optional clinical area or device category in plain words, e.g. "orthopaedic implants", "in vitro diagnostics", "cardiology". Partial matches count. Omit it to see the whole channel in that market.holder_basis— string — Which distributors to LIST (counts always report both): "all" (default; registered holders rank first), "registrations" (hold registrations here), or "licence_or_tender_only" (known from a licence list or tender award, no registrations of their own in our data).
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_market_coverageTHE cross-market question, answered in one call: every market where this manufacturer IS registered and every market where they are NOT. Returns per-market registration and active-registration counts and the source registries, plus the markets absent from their footprint — which is the gap a market-access team is usually looking for ("registered in Indonesia and Thailand, missing in the Philippines"). Prefer this over get_registrations when the question is about market presence rather than individual products. A `marketAccess` block may also appear. It is NOT a registration and is excluded from marketCount and every count in this response: it reports market access held on another basis — currently PMDA foreign manufacturer accreditation, which licenses a manufacturing SITE to make devices for Japan, precedes product approval and outlives individual products. When it is present alongside Japan in `absent`, both are true and the distinction matters: the company can supply the market but has no Japanese product approval visible to us. Do not describe that as being registered in Japan, and do not add it to a market count.
Parameters:
name— string — Company name, as an alternative to manufacturer_id. Resolves the same way search_manufacturer does and uses the best match.ticker— string — Listed ticker (e.g. "MDT"), as an alternative to manufacturer_id or name. Covers US-listed registrants; many large device makers are private or listed only outside the US and cannot be reached this way.manufacturer_id— string — The Meridian Trace manufacturer _id, from search_manufacturer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_registration_timelineNew registrations per year for a manufacturer, split by market — the pace at which a company is entering markets and launching products, years before it appears in reported revenue. Built from each registry's own approval date, so it reaches back as far as the registry publishes (56 years for the US). Every market carries a historyQuality flag: complete_archive and retains_lapsed series are safe to trend, current_state_only markets publish only today's position and undercount anything since withdrawn. Use for entry velocity, launch cadence, and comparing two competitors' expansion over time.
Parameters:
name— string — Company name, as an alternative to manufacturer_idmarket— string — Restrict to one market (ISO2 or full name)ticker— string — Listed ticker, e.g. "SYK" (US-listed coverage)to_year— number — Last year to include (default: current year)from_year— number — First year to include (default: 10 years ago)manufacturer_id— string — From search_manufacturer
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
find_predicatesUS 510(k) predicate lineage, from the predicates actually cited in each clearance's own summary document — not a similarity guess. 64,567 clearances, 1992-2026. By k_number: what that device cited, AND which later devices cited IT as a predicate — the reverse direction shows whose clearances rest on your device and how contested a space is. By product_code: the predicates that code leans on most, ranked by how often they are cited, plus recent clearances. Use when choosing a predicate, assessing substantial equivalence, or mapping who is clearing devices in a classification.
Parameters:
limit— number — Max rows per list (default 20, max 50)k_number— string — A 510(k) number, e.g. "K191275"product_code— string — An FDA product code, e.g. "LIT"
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
classify_deviceRUNS WITHOUT AN API KEY (anonymous callers see the top 3 FDA product codes and the full per-market risk table — a free key unlocks the rest). Classification view of a device type: the GMDN hierarchy it sits in, the FDA product codes it maps to with how many devices carry each, and — the part not published anywhere — how the SAME device type is actually risk-classed market by market, with the sample size behind each. Risk class is not portable: a device type can be modal High in Canada and modal Medium in the EU and Singapore, which changes submission route, evidence burden and timeline. Observed practice, not a regulatory determination. Takes a plain device name ("bone screw", "hip implant"), a GMDN code, or an FDA product code. A name is resolved by how many real devices carry each GMDN term rather than by string matching, and `resolution` reports which term was chosen, how many others matched and what they were — call again with `gmdn_code` to classify one of those instead.
Parameters:
gmdn_code— string — GMDN code, e.g. "44727"device_type— string — A device name in plain words ("insulin pump", "orthopaedic plate") or a GMDN term. US and British spellings both resolve. Name the device, not the brand or the use — "infusion pump", not "PumpMaster 3000" or "for giving fluids". Where the name fits several device types, the reply says so in `resolution`.fda_product_code— string — FDA product code, e.g. "DZE"
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
find_similar_devicesCompeting and comparable devices for a registration, matched on resolved device type (GMDN) rather than product-name text, and spread across markets so the answer is not all one country. Excludes the same manufacturer, so what comes back is the competitive set. Each result carries a match band. Use for competitive landscape, classification precedent in other markets, and finding how the same device type is described elsewhere. Get a registration_id from get_registrations.
Parameters:
limit— number — Max results (default 15)market— string — With device_name, restrict the reference lookup to one market (ISO2)device_name— string — A product name, as an alternative to registration_id — the closest registration is used as the reference deviceregistration_id— string — The _id of a registration, from get_registrations
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_recent_registrationsRegistrations newly added to Meridian in the last N days, optionally filtered by market, risk class or device type — the competitor-monitoring feed. Ordered by when we first saw the record, so it surfaces market entries as they appear rather than by approval date. US PMA supplements are excluded: they are labeling and site changes against an existing approval, not new registrations. Filtering by market is much faster — unfiltered across all markets can take up to 15 seconds, a market or two returns in about a second.
Parameters:
days— number — Look-back window, 1-180 (default 30)limit— number — Max results (default 50, max 100)markets— array — ISO2 codes, e.g. ["TH","ID"]risk_level— string — Low | Medium | Highdevice_type— string — Resolved GMDN device type
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_coverageRUNS WITHOUT AN API KEY — call it right now to check us before signing up for anything. What Meridian Trace actually holds: every source registry, the market it covers, how many registrations are on file from it, and when it was last updated. Call this to verify coverage and freshness for yourself before relying on other tools, or to answer "do you cover market X, and how current is it?". No arguments.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
report_data_issueTell Meridian that a record you got from this server looks WRONG — a registration, a manufacturer or a licence holder whose field disagrees with the official registry or the company's own documents. Name the record (registration_id from get_registration / get_registrations, or manufacturer_id, or registry_key such as "TH_FDA:64-2-1-2-0001234"), the field, what we show, what it should be, and where the right value is (source_url, and source_quote copied word for word). Meridian checks every report by hand; nothing changes until we have. Returns a reference like MT-1042 — pass it to check_issue later. Needs an API key. At most 50 reports per key per day. Use it for wrong data, not for questions about what a field means.
Parameters:
field(required) — string — Which field is wrong, as this server named it (e.g. expiryDate, manufacturerName, deviceClass)note— string — Anything else that helps — one or two sentencesshown— string — What this server returned for that fieldexpected— string — What it should besource_url— string — Where the right value is published (http/https)registry_key— string — When you have no id: the source registry and its own numbersource_quote— string — The words on that page that show it, verbatimmanufacturer_id— string — The manufacturer's id as this server returned itregistration_id— string — The registration's id as this server returned itlicense_holder_id— string — The licence holder's id as this server returned it
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
check_issueWhere a report you filed with report_data_issue stands — Received, Looking into it, Fixed, Not changing or Already reported (with the reference it repeats) — and Meridian's reply, if any. Only the API key that filed a report (or another key on the same account) can read it. Needs an API key.
Parameters:
ref(required) — string — The reference report_data_issue returned, e.g. MT-1042
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.