# FDA Data MCP (remote · www.regdatalab.com)

Clean FDA regulatory data: company resolution, facilities, recalls, inspections, approvals.

- Trust score: 68/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `www.regdatalab.com`: 68/100 (this document), [markdown](https://verifymcp.io/servers/medley-fda-data/www.md), [page](https://verifymcp.io/servers/medley-fda-data/www)

## Channel facts

- Endpoint: `https://www.regdatalab.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 46 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 73/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 9359 tokens (~191/item across 49 items; 48 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http medley-fda-data https://www.regdatalab.com/mcp
```

### Codex

```toml
[mcp_servers.medley-fda-data]
url = "https://www.regdatalab.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "medley-fda-data": {
      "type": "remote",
      "url": "https://www.regdatalab.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add medley-fda-data --url https://www.regdatalab.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  medley-fda-data:
    url: "https://www.regdatalab.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "medley-fda-data": {
      "type": "http",
      "url": "https://www.regdatalab.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 68, +43)

- [security improvement] Transport: fail → pass
- [security] Authorization: Authorisation not fully verified: no authorisation is required to call this server, and 46 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
- [functional improvement] Endpoint reachability: not serving MCP → reachable
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Stability: unverified → 0.23
- [functional improvement] Schema quality: unverified → 100
- [functional improvement] Tool coverage: unverified → 100

### 2026-07-31 (score 25, +9)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 16, −10)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 26, +10)

- [security improvement] Transport: fail → pass

### 2026-07-28 (score 16, −48)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Transport: pass → fail
- [security] Authorization: Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the tool list to see what that exposes.
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Schema quality: 100 → unverified

### 2026-07-27 (score 64, +38)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 26)

First indexed and scored.

## MCP tools (48)

### `fda_lookup_company` (~172 tokens)

Company Lookup

Quick company lookup: facilities (with addresses and operations) and enforcement actions (recalls) for a single company and its known aliases. Costs 1 credit. Excludes: 510(k) clearances, PMA approvals, drug applications, inspection history, and subsidiary data. Related: fda_company_full (adds clearances/approvals/drugs for 5 credits), fda_suggest_subsidiaries (discover related entities), fda_get_facility (per-facility products and operations by FEI).

Input parameters:

- `company` (string, required): Company name to look up
- `enforcement_limit` (integer): Enforcement result limit
- `enforcement_offset` (integer): Enforcement result offset
- `facilities_limit` (integer): Facilities result limit
- `facilities_offset` (integer): Facilities result offset

### `fda_search_facilities` (~250 tokens)

Search Facilities

Search FDA-registered facilities by name, city, state, or country. Searches drug (DECRS) and device registration databases. Returns FEI number, name, address, and source. Use the operations parameter to filter by manufacturing type (e.g., 'Contract Manufacture', 'API', 'Repack'). Use country filter (ISO code: US, DE, IN, CN, IE) to map a company's global manufacturing footprint. Excludes: products at facility, inspection history, enforcement actions. Related: fda_get_facility (full facility detail by FEI including products and operations type), fda_inspections (inspection data by FEI), fda_citations (CFR violations by FEI).

Input parameters:

- `city` (string): City name
- `company` (string): Facility or company name (fuzzy search)
- `country` (string): ISO country code (e.g. US, DE)
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `operations` (string): DECRS operations keyword
- `state` (string): State code (e.g. CA, NY)

### `fda_search_family_facilities` (~157 tokens)

Search Family Facilities

Search FDA-registered facilities across a parent company and any explicitly linked subsidiaries. Use this when you know the parent company but the FDA records may sit under child entities like Actavis, Watson, or Cephalon. Supports optional city, state, country, and operations filters.

Input parameters:

- `city` (string): City name
- `company` (string, required): Parent company name
- `country` (string): ISO country code (e.g. US, DE)
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `operations` (string): DECRS operations keyword
- `state` (string): State code (e.g. CA, NY)

### `fda_get_facility` (~232 tokens)

Facility Detail

Detailed facility profile by FEI number. Returns: facility name, full address, operations type (Manufacture, API, Repack, Contract Manufacture, etc.), establishment types (Manufacturer, Distributor, Specification Developer, etc.), registrant and owner/operator info, DUNS number, registration expiry, enforcement history (recalls), device products with classification, and a facility_risk_summary (inspection counts by classification, warning letters, last inspection date). Requires: FEI number — get it from fda_search_facilities or fda_company_full. Excludes: full inspection details and citations. Related: fda_inspections (inspection history by FEI), fda_citations (CFR violations by FEI), fda_compliance_actions (warning letters/seizures by FEI), fda_import_refusals (import refusal history by FEI), fda_facility_products (paginate large product lists).

Input parameters:

- `fei` (string, required): FDA Establishment Identifier (FEI number)
- `products_limit` (integer): Products result limit
- `products_offset` (integer): Products result offset

### `fda_facility_dossier` (~108 tokens)

Facility Compliance Dossier

Compliance-first facility dossier by FEI number. Returns the facility profile plus recent inspections, citations, warning letters, import refusal history, import-alert mentions, recall context, freshness, and recommended next tools. Use this when you want the fastest FEI-level manufacturing risk view instead of the broader product-focused facility profile.

Input parameters:

- `evidence_limit` (integer): Number of recent evidence rows to return per evidence section
- `fei` (string, required): FDA Establishment Identifier (FEI number)

### `fda_facility_products` (~137 tokens)

Facility Products

List device products registered at a facility by FEI number with pagination. Returns product code, proprietary name, listing number, and classification details (device name, class, medical specialty). Note: fda_get_facility already includes products — use this only when paginating through large product lists. Drug products are not linked by FEI; use fda_search_ndc with company name instead. Requires: FEI number.

Input parameters:

- `fei` (string, required): FDA Establishment Identifier (FEI number)
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination

### `fda_search_enforcement` (~221 tokens)

Search Recalls

Search FDA enforcement actions (recalls) for drugs, devices, and food across all companies. Filter by company name (fuzzy match), recall classification (Class I=most serious/Class II/Class III), date range, or status (Ongoing/Terminated). Returns recall details including product description, reason, and distribution pattern. Related: fda_recall_facility_trace (trace a recall to its manufacturing facility by recall_number), fda_ires_enforcement (iRES recall data with cross-references), fda_device_recalls (device-specific recall data).

Input parameters:

- `classification` (string): Recall classification severity
- `company` (string): Company or firm name (fuzzy search)
- `from_date` (string): Start date for report_date range (YYYY-MM-DD)
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `status` (string): Recall status
- `to_date` (string): End date for report_date range (YYYY-MM-DD)

### `fda_search_recall_text` (~240 tokens)

Full-Text Search Recalls

Full-text search across recall reasons and product descriptions using PostgreSQL text search. Finds recalls mentioning specific terms (e.g. 'salmonella contamination', 'mislabeled', 'sterility'). Supports multi-word queries ranked by relevance. Filter by classification, product_type, or date range. Related: fda_search_enforcement (search by company name, classification, status), fda_recall_facility_trace (trace a recall to its manufacturing facility).

Input parameters:

- `classification` (string): Filter by recall classification severity
- `date_from` (string): Start date for report_date range (YYYY-MM-DD)
- `date_to` (string): End date for report_date range (YYYY-MM-DD)
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `product_type` (string): Filter by product type
- `query` (string, required): Search terms (e.g. 'salmonella contamination', 'mislabeled dosage')
- `search_field` (string): Which field to search: reason_for_recall, product_description, or both (default: both)

### `fda_resolve_company` (~90 tokens)

Resolve Company Name

Resolve a company name to its canonical company_id and list all known aliases. Returns the canonical slug, match confidence, and alias names. Read-only lookup — does not discover new aliases. Related: fda_suggest_subsidiaries (discover potential subsidiaries not yet aliased), fda_company_full (full profile using the resolved name).

Input parameters:

- `company` (string, required): Company name to resolve

### `fda_save_aliases` (~118 tokens)

Save Company Aliases

Save normalized alias names for a parent company, updating confidence and tracking collisions. Use this for true name variants of the same company record. If a collision says the alias already belongs to another company_id, use fda_link_subsidiaries instead of forcing the alias. Typical workflow: call fda_suggest_subsidiaries first, review results, then call this tool with confirmed same-entity alias names.

Input parameters:

- `aliases` (array, required): Alias entries to save
- `parent_company` (string, required): Canonical parent company name

### `fda_link_subsidiaries` (~103 tokens)

Link Subsidiaries

Explicitly link existing company records under a parent company for family-level rollups. Use this when names like Actavis or Cephalon already belong to their own company_id and should roll up under a parent like Teva. This preserves alias collision safety while making manufacturing and facility summaries family-aware.

Input parameters:

- `parent_company` (string, required): Parent company that should own the family rollup
- `subsidiaries` (array, required): Subsidiary company records to link

### `fda_suggest_subsidiaries` (~295 tokens)

Discover Subsidiaries

Discover subsidiary and related company names using FDA datasets first, then supplement with external corporate hierarchy sources (SEC EDGAR Exhibit 21 and GLEIF) when available. Costs 2 credits. Returns FDA name candidates, evidence-backed company-record suggestions, EDGAR subsidiaries, GLEIF subsidiaries, existing aliases, and facility coverage stats. The coverage.unlinked_feis count indicates how many facilities may be missing from the current alias set. The workflow is conservative and explainable: it validates candidates against FDA company records instead of auto-linking them. Note: EDGAR and GLEIF may lag recent acquisitions or divestitures, so missing external results do not rule out FDA-visible subsidiaries. Recommended workflow: 1. fda_suggest_subsidiaries, 2. fda_link_subsidiaries for distinct child companies or fda_save_aliases for true same-company variants, 3. fda_manufacturing_risk_summary or fda_search_family_facilities. Related: fda_link_subsidiaries (persist explicit family links), fda_save_aliases (persist same-entity names), fda_manufacturing_risk_summary (family-aware company rollup), fda_search_family_facilities (family-aware FEI search).

Input parameters:

- `cik` (string): SEC CIK (optional, auto-resolved if omitted)
- `company` (string, required): Company name to analyze

### `fda_manufacturing_risk_summary` (~147 tokens)

Manufacturing Risk Summary

Build a manufacturing and compliance summary for one company using FDA facilities, inspections, warning letters, OII records, import-risk signals, debarments, and recalls. Use this when you want the company-level picture first, then follow the linked granular tools for deeper inspection.

Input parameters:

- `company` (string, required): Company name to summarize
- `evidence_limit` (integer): Max recent records to return per evidence section
- `facility_limit` (integer): Max facilities to return
- `verbose` (boolean): When false (default), suppress the inline alias dump and collapse per-dataset data_freshness to a single top-level as_of. Set true for the full block.

### `fda_company_compliance_timeline` (~126 tokens)

Company Compliance Timeline

Build a reverse-chronological compliance timeline for one company and any linked subsidiaries. Combines inspections, warning letters, import alerts, import refusals, debarments, and recall/enforcement events into one dated feed.

Input parameters:

- `company` (string, required): Company name to build the timeline for
- `limit` (integer): Maximum number of combined timeline events to return
- `verbose` (boolean): When false (default), suppress the inline alias dump and collapse per-dataset data_freshness to a single top-level as_of. Set true for the full block.

### `fda_search_aphis` (~156 tokens)

Search APHIS Vet Biologics

Search APHIS veterinary biologics establishments (animal health facilities) by company, state, or establishment type. Returns license number, company name, full address, establishment type (Licensee/Permittee), divisions, and subsidiaries. Covers vaccine manufacturers, diagnostic kit producers, and other veterinary biological product facilities. Related: fda_vet_events (veterinary adverse events by species/drug).

Input parameters:

- `company` (string): Company name (fuzzy search)
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `state` (string): State code (e.g., CA, NY)
- `type` (string): Establishment type

### `fda_search_510k` (~252 tokens)

Search 510(k) Clearances

Search FDA 510(k) clearances across all companies. Filter by company name (fuzzy match), product code, decision code (e.g., SESE=substantially equivalent), clearance type (Traditional, Special, Abbreviated), and date range. Returns clearance number (K-number), applicant, device name, decision date, and product code. Related: fda_device_class (product code details and classification), fda_product_code_lookup (cross-reference a product code across 510(k) and PMA), fda_search_pma (PMA approvals for higher-risk devices).

Input parameters:

- `clearance_type` (string): Clearance type (e.g., Traditional, Special)
- `company` (string): Company name (fuzzy search)
- `decision_code` (string): Decision code (e.g., SESE, SESD)
- `from_date` (string): Start date for decision_date range (YYYY-MM-DD)
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `product_code` (string): Device product code
- `to_date` (string): End date for decision_date range (YYYY-MM-DD)

### `fda_search_pma` (~198 tokens)

Search PMA Approvals

Search FDA Pre-Market Approval (PMA) records across all companies. PMA is required for high-risk (Class III) devices. Filter by company name (fuzzy match), product code, and date range. Returns PMA number, applicant, trade name, decision date, and product code. Related: fda_device_class (product code details), fda_search_510k (510(k) clearances for lower-risk devices), fda_product_code_lookup (cross-reference a product code).

Input parameters:

- `company` (string): Company name (fuzzy search)
- `from_date` (string): Start date for decision_date range (YYYY-MM-DD)
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `product_code` (string): Device product code
- `to_date` (string): End date for decision_date range (YYYY-MM-DD)

### `fda_device_class` (~126 tokens)

Device Classification Lookup

Lookup FDA device classification details by product code. Returns device name, device class (I/II/III), medical specialty, regulation number, review panel, submission type, and definition. Requires: product code (3-letter code from 510(k), PMA, or device product listings). Related: fda_product_code_lookup (cross-reference across 510(k) and PMA), fda_search_510k (clearances for this product code), fda_search_pma (PMA approvals for this product code).

Input parameters:

- `product_code` (string, required): Device product code

### `fda_product_code_lookup` (~139 tokens)

Product Code Cross-Reference

Cross-reference a device product code across classification details, 510(k) clearances, and PMA approvals. Returns classification info plus paginated lists of all clearances and approvals for that product code. Use to understand the regulatory landscape for a specific device type. Requires: product code.

Input parameters:

- `approvals_limit` (integer): PMA approvals result limit
- `approvals_offset` (integer): PMA approvals result offset
- `clearances_limit` (integer): 510(k) clearances result limit
- `clearances_offset` (integer): 510(k) clearances result offset
- `product_code` (string, required): Device product code

### `fda_search_drugs` (~204 tokens)

Search Drug Applications

Search Drugs@FDA applications across all companies. Filter by sponsor name (fuzzy match), application number, brand name, or submission status. Returns application details including products (brand names, dosage forms, active ingredients) and submissions (approval dates, status). Related: fda_search_ndc (NDC-level product details including labeler and packaging), fda_drug_labels (structured product labeling/package inserts), fda_clinical_result_letters (Complete Response Letters — FDA refusal-to-approve decisions), fda_drug_shortages (active drug shortage data).

Input parameters:

- `application_number` (string): Application number
- `brand_name` (string): Brand name (searches products JSONB)
- `company` (string): Company name (fuzzy search)
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `status` (string): Submission status (searches submissions JSONB)

### `fda_search_ndc` (~196 tokens)

Search NDC Directory

Search the National Drug Code (NDC) directory by labeler company, brand name, product NDC, or application number. Returns labeler name, brand name, generic name, dosage form, route, active ingredients, DEA schedule, listing type, and packaging details. Drug products are not linked by FEI; use this tool with company name to find drugs at a company. Related: fda_search_drugs (application-level data with submissions), fda_drug_labels (full product labeling), fda_search_nsde (NSDE cross-reference).

Input parameters:

- `application_number` (string): Application number
- `brand_name` (string): Brand name
- `company` (string): Labeler company name (fuzzy search)
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `product_ndc` (string): Product NDC

### `fda_search_by_product` (~124 tokens)

Search by Product Name

Search across FDA device and drug datasets by product name (device name, trade name, generic name, or brand name). Searches device classifications, 510(k) clearances, PMA approvals, and NDC records simultaneously. Use when you know a product name but not which dataset it's in. Returns matches from each dataset with product codes and company names.

Input parameters:

- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `product_name` (string, required): Product or brand name (fuzzy search)

### `fda_recall_facility_trace` (~204 tokens)

Recall-to-Facility Trace

Trace a recall to its candidate manufacturing facility with explicit confidence levels. Matches by firm name, NDC lookup, and facility registration data. Returns the recall details, matched facility candidates with FEI numbers and confidence scores, and match methodology. Provide either recall_number (from fda_search_enforcement or fda_ires_enforcement) OR firm (+ optional product) to resolve the best-matching recall automatically. Related: fda_get_facility (full detail for matched FEI), fda_inspections (inspection history for matched FEI), fda_compliance_actions (warning letters for matched FEI).

Input parameters:

- `firm` (string): Recalling firm name (fuzzy). Convenience path: resolves the best-matching recall when recall_number is omitted.
- `product` (string): Optional product keyword to narrow firm-based resolution (matches product_description).
- `recall_number` (string): Recall number (preferred). If omitted, provide firm to auto-resolve.

### `fda_company_full` (~384 tokens)

Full Company Profile

Comprehensive company profile: facilities (with addresses and operations), enforcement actions (recalls), 510(k) clearances, PMA approvals, and drug applications for a single company and its known aliases. Costs 5 credits. Excludes: inspection history, citations, compliance actions (warning letters), facility-level product lists, import refusals, and family rollups across separate child company records. For family rollups: call fda_suggest_subsidiaries first, then use fda_save_aliases for true same-company names or fda_link_subsidiaries for distinct child companies. Related: fda_suggest_subsidiaries (discover subsidiaries), fda_link_subsidiaries (create explicit family links), fda_get_facility (per-facility products, operations type, risk summary by FEI), fda_inspections (inspection history by FEI or company), fda_citations (CFR violations by FEI), fda_compliance_actions (warning letters/seizures by FEI or company), fda_search_aphis (animal health facilities for vet companies), fda_drug_shortages (active drug shortages).

Input parameters:

- `approvals_limit` (integer): PMA approvals result limit
- `approvals_offset` (integer): PMA approvals result offset
- `clearances_limit` (integer): 510(k) clearances result limit
- `clearances_offset` (integer): 510(k) clearances result offset
- `company` (string, required): Company name to look up
- `drugs_limit` (integer): Drug applications result limit
- `drugs_offset` (integer): Drug applications result offset
- `enforcement_limit` (integer): Enforcement result limit
- `enforcement_offset` (integer): Enforcement result offset
- `facilities_limit` (integer): Facilities result limit
- `facilities_offset` (integer): Facilities result offset

### `fda_inspections` (~267 tokens)

Search Inspections

Search FDA inspection history from the Compliance Dashboard (not available in openFDA API). Filter by company name (fuzzy match), FEI number, classification (NAI=No Action Indicated, VAI=Voluntary Action Indicated, OAI=Official Action Indicated — most serious), state, country, city, or date range. Date filters apply to inspection_end_date. OAI inspections typically lead to warning letters. Related: fda_citations (specific CFR violations from inspections by FEI), fda_compliance_actions (warning letters following OAI inspections by FEI).

Input parameters:

- `city` (string): City name (exact match)
- `classification_code` (string): Inspection classification code
- `company_name` (string): Company name (fuzzy match)
- `country` (string): Country code (e.g., US, DE)
- `date_from` (string): Start date for inspection_end_date range (YYYY-MM-DD)
- `date_to` (string): End date for inspection_end_date range (YYYY-MM-DD)
- `fei_number` (string): FDA Establishment Identifier (FEI number)
- `limit` (integer): Max results to return (1-500)
- `state` (string): State code (e.g., CA, NY)

### `fda_citations` (~482 tokens)

Search Inspection Citations

Search specific CFR violation citations from FDA inspections (Compliance Dashboard data, not available in openFDA API). Filter by company name, FEI number, CFR number, keyword, program area, fiscal year, inspection date range, or the parent inspection's classification (NAI/VAI/OAI). CFR matching is hierarchical and section-anchored: pass '21 CFR 211.68' or '211.68' and it matches '21 CFR 211.68', '21 CFR 211.68(a)', '21 CFR 211.68(b)' but NOT '21 CFR 211.680' or '21 CFR 211.6'. Each row carries the parent inspection's classification (inspection_classification / inspection_classification_code) joined by inspection_id, plus inspection_id and a best-effort source_url deep link. Returns the cited regulation, short and long descriptions of the finding, and inspection dates. Related: fda_inspections (inspection classification and dates by FEI), fda_search_warning_letters (official warning letters for the same FEI), fda_compliance_actions (warning letters that may reference these citations).

Input parameters:

- `act_cfr_number` (string): CFR section, section-anchored prefix match (e.g. '21 CFR 211.68' or '211.68' matches 211.68, 211.68(a), 211.68(b) but not 211.680 or 211.6)
- `classification` (string): Parent inspection classification (NAI=No Action Indicated, VAI=Voluntary Action Indicated, OAI=Official Action Indicated)
- `company_name` (string): Company name (fuzzy match)
- `date_from` (string): Start date for inspection_end_date range (YYYY-MM-DD)
- `date_to` (string): End date for inspection_end_date range (YYYY-MM-DD)
- `fei_number` (string): FDA Establishment Identifier (FEI number)
- `fiscal_year` (integer): Fiscal year of the inspection
- `keyword` (string): Keyword to search in citation descriptions
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `program_area` (string): Program area (partial match, e.g. Drugs, Devices, Foods)

### `fda_compliance_actions` (~202 tokens)

Search Compliance Actions

Search FDA compliance enforcement actions (Compliance Dashboard data, not available in openFDA API): Warning Letters, Seizures, and Injunctions. These are the most serious regulatory outcomes, typically following OAI inspections. Filter by company name, FEI number, action type (Warning Letter/Seizure/Injunction), or date range. Related: fda_inspections (underlying inspection data by FEI), fda_citations (CFR violations cited in these actions).

Input parameters:

- `action_type` (string): Compliance action type
- `company_name` (string): Company name (fuzzy match)
- `date_from` (string): Start date for action_taken_date range (YYYY-MM-DD)
- `date_to` (string): End date for action_taken_date range (YYYY-MM-DD)
- `fei_number` (string): FDA Establishment Identifier (FEI number)
- `limit` (integer): Max results to return (1-500)

### `fda_search_warning_letters` (~525 tokens)

Search Warning Letters

Search official FDA warning letters with full-text content from the FDA website. Use keyword search for the actual letter body, or filter by company name, issuing office, subject, MARCS-CMS number, product type, or letter issue date. Adds prospecting filters: status (open|responded|closed, derived from response/closeout dates), letter_category (CGMP-manufacturing | BIMO | listing | OPDP/promotion | 503B/compounding | import — heuristic, derived from issuing_office/subject/product_type), and violation_theme (cgmp_subsystem | data_integrity | validation | bimo | listing | promotion — keyword/FTS-derived over subject+body). Set dedupe=true to collapse near-identical letters sharing a MARCS-CMS case number to one canonical row. Each row exposes derived status and letter_category, plus fei_number for one-hop navigation to fda_citations and fda_inspections. This adds narrative context beyond fda_compliance_actions, which only contains dashboard metadata. NOTE: violation_theme and letter_category are best-effort heuristics over free-text fields; keyword cannot be scoped to a parsed cited-violations sub-section because the corpus only stores subject + full letter body.

Input parameters:

- `company_name` (string): Company name (fuzzy match)
- `date_from` (string): Start date for letter_issue_date range (YYYY-MM-DD)
- `date_to` (string): End date for letter_issue_date range (YYYY-MM-DD)
- `dedupe` (boolean): Collapse letters sharing a MARCS-CMS case number to one canonical row (recommended for prospecting)
- `issuing_office` (string): Issuing office or center name (partial match)
- `keyword` (string): Full-text query for the warning letter body and subject
- `letter_category` (string): Heuristic category derived from issuing_office/subject/product_type
- `limit` (integer): Max results to return (1-500)
- `marcs_cms_number` (string): MARCS-CMS case number shown on the letter page
- `offset` (integer): Result offset for pagination
- `product_type` (string): Product type from the letter page (e.g. Drugs, Devices, Food)
- `status` (string): Derived status: closed (has closeout date), responded (has response date), or open
- `subject` (string): Subject line text (partial match)
- `violation_theme` (string): Heuristic violation theme derived from subject and letter body text

### `fda_search_opdp_untitled_letters` (~186 tokens)

Search OPDP Untitled Letters

Search official FDA OPDP untitled letters for pharmaceutical promotion and advertising issues. Filter by company, product, issue date, close-out availability, or keyword in the extracted untitled-letter text when available.

Input parameters:

- `company_name` (string): Company name (fuzzy match)
- `date_from` (string): Start date for issued_date range (YYYY-MM-DD)
- `date_to` (string): End date for issued_date range (YYYY-MM-DD)
- `has_close_out` (boolean): Whether the record has a linked close-out letter
- `keyword` (string): Keyword to search in the extracted untitled-letter text
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `product_issue` (string): Product or issue text from the OPDP table (partial match)

### `fda_search_oii_records` (~243 tokens)

Search OII Reading Room Records

Search recent FDA Office of Inspections and Investigations reading-room records by company, FEI, record type, country, establishment type, or publish date. This is official FDA document-index metadata with direct links to the posted records, plus incremental extracted document text when available, useful for finding recent 483-style inspection evidence by account.

Input parameters:

- `company_name` (string): Company name (fuzzy match)
- `country` (string): Country name
- `date_from` (string): Start date for publish_date range (YYYY-MM-DD)
- `date_to` (string): End date for publish_date range (YYYY-MM-DD)
- `establishment_type` (string): Establishment type, for example Sterile Drug Manufacturer
- `fei_number` (string): FDA Establishment Identifier (FEI number)
- `keyword` (string): Keyword to search in the FDA-provided excerpt and extracted document text
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `record_type` (string): Record type, for example 483
- `state` (string): State name

### `fda_search_debarments` (~159 tokens)

Search FDA Debarments

Search current FDA debarment lists across drug applications, drug imports, and food imports. These are rare but very high-severity compliance signals for people or firms barred from certain FDA-regulated activities.

Input parameters:

- `date_from` (string): Start date for effective_date range (YYYY-MM-DD)
- `date_to` (string): End date for effective_date range (YYYY-MM-DD)
- `limit` (integer): Max results to return (1-500)
- `list_type` (string): Debarment list type
- `name` (string): Person or firm name (fuzzy match)
- `offset` (integer): Result offset for pagination
- `subject_type` (string): Whether the record is a person or a firm

### `fda_search_import_alerts` (~211 tokens)

Search FDA Import Alerts

Search FDA Import Alerts by firm, alert number, red-list versus green-list status, country, keyword, or date. This is a stronger manufacturing and supplier-risk signal than one-off import refusals because it captures standing alert status and the specific firms currently listed under each alert.

Input parameters:

- `alert_number` (string): Import alert number, for example 66-40
- `country` (string): Country name
- `date_from` (string): Start date for publish-date range (YYYY-MM-DD)
- `date_to` (string): End date for publish-date range (YYYY-MM-DD)
- `firm_name` (string): Firm name (fuzzy match)
- `keyword` (string): Keyword to search in the alert title, reason, charge, or product notes
- `limit` (integer): Max results to return (1-500)
- `list_status` (string): Whether the firm is on the red list or green list
- `offset` (integer): Result offset for pagination

### `fda_bpdr_summary` (~166 tokens)

Search BPDR Annual Summary

Search FDA's Biological Product Deviation Report annual summary counts. This is summary-level biotech and blood/HCT/P manufacturing signal from official FDA annual reports, not per-event case detail.

Input parameters:

- `establishment_type` (string): Establishment type, for example Vaccine or 351 HCT/P
- `fiscal_year` (integer): Metric fiscal year, for example 2024
- `group_name` (string): Group name, for example Licensed Non-Blood Manufacturers
- `keyword` (string): Keyword to search in group_name or establishment_type
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `row_type` (string): Whether the row is a normal establishment line, subtotal, or total

### `fda_device_supply_status` (~199 tokens)

Search Device Shortages And Discontinuances

Search FDA's current medical device shortage list and discontinuance list. This is an official FDA supply-chain signal for medtech selling, covering shortage categories and permanent discontinuances that may affect customer operations or product availability.

Input parameters:

- `category` (string): Device category
- `date_from` (string): Start date for latest_date range (YYYY-MM-DD)
- `date_to` (string): End date for latest_date range (YYYY-MM-DD)
- `keyword` (string): Keyword to search descriptions, device names, notes, or reasons
- `limit` (integer): Max results to return (1-500)
- `list_type` (string): Whether to search the shortage list or discontinuance list
- `manufacturer_name` (string): Manufacturer name (fuzzy match, discontinuance list only)
- `offset` (integer): Result offset for pagination
- `product_code` (string): FDA product code, for example DSQ or MKJ

### `fda_inspection_observation_summary` (~184 tokens)

Search Inspection Observation Summary

Search FDA's official annual inspection-observation summary spreadsheets. This is aggregate Form 483 trend data by product area and citation frequency, not a full company-level 483 corpus. Use it to see which observation areas appear most often in Drugs, Devices, Foods, and other FDA program areas.

Input parameters:

- `cite_id` (string): FDA citation identifier from the spreadsheet
- `fiscal_year` (integer): Fiscal year of the spreadsheet
- `keyword` (string): Full-text query across short and long citation descriptions
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `product_area` (string): Product or program area (e.g. Drugs, Devices, Foods)
- `reference_number` (string): Regulatory citation reference number (e.g. 21 CFR 211.192)

### `fda_import_refusals` (~204 tokens)

Search Import Refusals

Search FDA import refusals (Compliance Dashboard data, not available in openFDA API). Import refusals indicate products detained at the US border. Filter by company name, FEI number, country code (e.g., CN, IN for major API source countries), or date range. Critical for evaluating international manufacturing sites and supply chain risk. Related: fda_get_facility (facility details by FEI), fda_inspections (inspection history by FEI).

Input parameters:

- `company_name` (string): Company name (fuzzy match)
- `country_code` (string): ISO country code (e.g. CN, IN)
- `date_from` (string): Start date for refusal_date range (YYYY-MM-DD)
- `date_to` (string): End date for refusal_date range (YYYY-MM-DD)
- `fei_number` (string): FDA Establishment Identifier (FEI number)
- `limit` (integer): Max results to return (1-500)

### `fda_ires_enforcement` (~199 tokens)

Search iRES Enforcement

Search iRES enforcement recalls with cross-references to openFDA enforcement data. Filter by company name (fuzzy match), recall number, product type (e.g., Drugs, Devices), or date range. Returns detailed recall info including event classification, product codes, and quantities. Related: fda_search_enforcement (openFDA recall data), fda_recall_facility_trace (trace recall to manufacturing facility).

Input parameters:

- `company_name` (string): Company name (fuzzy match)
- `date_from` (string): Start date for enforcement_report_date range (YYYY-MM-DD)
- `date_to` (string): End date for enforcement_report_date range (YYYY-MM-DD)
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `product_type` (string): Product type (e.g. Drugs, Devices)
- `recall_number` (string): Recall number

### `fda_drug_shortages` (~142 tokens)

Search Drug Shortages

Search FDA drug shortages by generic name, company, status, or availability. Drug shortages signal manufacturing capacity strain, quality issues, or supply chain disruption. Useful for identifying companies with operational challenges. Related: fda_search_drugs (drug application data by company), fda_search_ndc (NDC-level product details).

Input parameters:

- `company_name` (string): Company name (fuzzy match)
- `generic_name` (string): Generic drug name (fuzzy match)
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `status` (string): Shortage status filter

### `fda_device_recalls` (~200 tokens)

Search Device Recalls

Search FDA device recalls by recalling firm (fuzzy match), product code, recall status, or date range. Returns device-specific recall details including root cause, event type, and product codes. Complements fda_search_enforcement which covers all product types. Related: fda_search_enforcement (all recalls including drugs), fda_recall_facility_trace (trace to manufacturing facility), fda_device_class (product code details).

Input parameters:

- `date_from` (string): Start date for event_date_initiated (YYYY-MM-DD)
- `date_to` (string): End date for event_date_initiated (YYYY-MM-DD)
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `product_code` (string): Product code
- `recall_status` (string): Recall status
- `recalling_firm` (string): Recalling firm name (fuzzy match)

### `fda_consumer_events` (~137 tokens)

Search Consumer Adverse Events

Search consumer adverse events for food and cosmetic products by product area, reaction keyword, or date range (YYYYMMDD format). Returns reports including outcomes, reactions, and product details.

Input parameters:

- `date_from` (string): Start date for date_created (YYYYMMDD)
- `date_to` (string): End date for date_created (YYYYMMDD)
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `product_area` (string): Filter by product area: food or cosmetic
- `reaction` (string): Reaction keyword (searches reactions array)

### `fda_vet_events` (~172 tokens)

Search Veterinary Adverse Events

Search veterinary adverse events (animal drug safety reports) by species, drug name, reaction, serious flag, or date range (YYYYMMDD format). Returns event reports including animal details, drug information, and adverse reactions. Related: fda_search_aphis (veterinary biologics facilities and establishments).

Input parameters:

- `date_from` (string): Start receive_date (YYYYMMDD)
- `date_to` (string): End receive_date (YYYYMMDD)
- `drug_name` (string): Drug name (searches drug JSONB)
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `serious` (string): Filter by serious adverse event
- `species` (string): Animal species (searches animal JSONB)

### `fda_tobacco_problems` (~132 tokens)

Search Tobacco Problem Reports

Search tobacco problem reports by product type or health problem keyword. Date range in YYYYMMDD format. Returns reports including tobacco product details and reported health problems.

Input parameters:

- `date_from` (string): Start date_submitted (YYYYMMDD)
- `date_to` (string): End date_submitted (YYYYMMDD)
- `health_problem` (string): Reported health problem keyword
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `product_type` (string): Tobacco product type (searches tobacco_products array)

### `fda_substance_lookup` (~110 tokens)

Substance Lookup

Look up FDA substance data by UNII code (exact match) or substance name (fuzzy match). Returns substance name, UNII, substance class, molecular formula, and related details. Use to identify active pharmaceutical ingredients.

Input parameters:

- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `substance_name` (string): Substance name (fuzzy match)
- `unii` (string): UNII code (exact match)

### `fda_search_nsde` (~149 tokens)

Search NSDE

Search the National Standard Drug Element (NSDE) database by brand/proprietary name, application number, or package NDC. Returns proprietary name, active ingredients, dosage form, route, and marketing information. Related: fda_search_ndc (NDC directory), fda_search_drugs (Drugs@FDA application data).

Input parameters:

- `application_number` (string): Application number (exact match)
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination
- `package_ndc` (string): Package NDC (exact match)
- `proprietary_name` (string): Brand/proprietary name (fuzzy match)

### `fda_clinical_result_letters` (~170 tokens)

Search Complete Response Letters

Search FDA Complete Response Letters (CRLs) — formal refusal-to-approve decisions on drug and biologics applications. Filter by company name (fuzzy match), application number (e.g., 'NDA 204017'), or letter type. CRLs are significant regulatory events indicating application deficiencies. Related: fda_search_drugs (drug application data including approval status).

Input parameters:

- `application_number` (string): Application number (searches array, e.g. 'NDA 204017')
- `company_name` (string): Company name (fuzzy match)
- `letter_type` (string): Letter type filter (e.g. 'COMPLETE RESPONSE')
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination

### `fda_drug_labels` (~177 tokens)

Search Drug Labels

Search FDA Structured Product Labeling (SPL) data — full drug package inserts. Filter by drug name, manufacturer, application number, or specific label section (e.g., indications_and_usage, warnings, adverse_reactions, boxed_warning). Returns complete label text for matching sections. Related: fda_search_drugs (application-level data), fda_search_ndc (NDC product details).

Input parameters:

- `application_number` (string): NDA or ANDA application number
- `drug_name` (string): Brand or generic drug name (fuzzy match)
- `limit` (integer): Result limit
- `manufacturer` (string): Manufacturer name (fuzzy match)
- `offset` (integer): Result offset
- `section` (string): Specific label section to return (e.g. indications_and_usage, warnings, adverse_reactions)

### `fda_device_udi` (~177 tokens)

Search Device UDI

Search the FDA Unique Device Identification (UDI) database by brand name, company/manufacturer name, product code, or DI number. Returns device identification data including brand name, company, device description, product codes, GMDN terms, sterilization info, and premarket submissions. Related: fda_device_class (classification details by product code), fda_search_510k (clearances by product code).

Input parameters:

- `brand_name` (string): Device brand name (fuzzy match)
- `company_name` (string): Company/manufacturer name (fuzzy match)
- `di_number` (string): Device Identifier (DI) number
- `limit` (integer): Result limit
- `offset` (integer): Result offset
- `product_code` (string): FDA product code (3-letter code, e.g. OVE)

### `fda_device_udi_lookup` (~154 tokens)

Device UDI Lookup

Search the FDA's Global Unique Device Identification Database (GUDID) by device identifier (DI/barcode), device name, company name, or brand name. Returns device details including UDI, descriptions, and company information. Costs 1 credit.

Input parameters:

- `brand_name` (string): Brand name (fuzzy search)
- `company_name` (string): Company/manufacturer name (fuzzy search)
- `device_id` (string): Device Identifier (DI) — exact barcode/GTIN lookup
- `device_name` (string): Device/brand name (fuzzy search)
- `limit` (integer): Max results to return (1-500)
- `offset` (integer): Result offset for pagination

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/medley-fda-data/www#diagnostics

## Score history

- 2026-08-03: 68
- 2026-08-02: 25
- 2026-08-01: 25
- 2026-07-31: 25
- 2026-07-30: 16
- 2026-07-29: 26
- 2026-07-28: 16
- 2026-07-27: 64
- 2026-07-26: 26

## Links

- Remote endpoint: https://www.regdatalab.com/mcp
- Repository: https://github.com/medley/fda-data
- Changelog RSS feed: https://verifymcp.io/servers/medley-fda-data/www/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/medley-fda-data/www/changelog.json
- HTML version of this page: https://verifymcp.io/servers/medley-fda-data/www
