FDA Medical Device Recalls (Searchable and Countable)
openfda/device-recalls
Searches the FDA's medical device recall database and returns matching recalled devices, or counts them by a field. Each record gives the recall number, status (open or terminated), product code, the recalling firm and its location, the product description, the reason for the recall and its root cause, the firm's corrective action, distribution pattern, quantity, lot and serial information, 510(k) and PMA numbers, the device name, class and medical specialty, and the recall start, posting and termination dates. Set count to get the most frequent values of a field instead, such as the firms with the most recalls or the commonest root causes. The reply also carries the FDA's own notice that the data is unvalidated and not for medical decisions. Taken directly from the FDA's openFDA device recall API.
Price
$0.00273 per call
You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $5.
Data source
U.S. Food and Drug Administration (openFDA)
Data provided by the U.S. Food and Drug Administration (https://open.fda.gov); public domain under CC0 per open.fda.gov/terms.
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
Connect once and your AI can find and run this tool, and any other it needs.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "openfda/device-recalls" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "openfda/device-recalls" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "openfda/device-recalls", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "openfda/device-recalls", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.00273 |
- Updated
- Oct 18, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"limit"
],
"properties": {
"skip": {
"type": "integer",
"maximum": 25000,
"minimum": 0,
"description": "How many matching recalls to skip, for paging; the FDA allows up to 25000. Not allowed with count."
},
"sort": {
"enum": [
"event_date_posted:desc",
"event_date_posted:asc",
"event_date_initiated:desc"
],
"type": "string",
"description": "Order of the recalls by the date the FDA posted the recall, or newest recall start first. Leave out for the FDA's own order, which is not by date. Has no effect with count."
},
"count": {
"enum": [
"root_cause_description.exact",
"recalling_firm.exact",
"recall_status",
"product_code",
"state",
"country",
"openfda.device_class",
"openfda.medical_specialty_description.exact"
],
"type": "string",
"description": "Return the most frequent values of this field among the matching recalls, each with its recall count, instead of the recalls themselves. Leave out to get recalls. Cannot be combined with skip."
},
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "How many recalls to return, 1 to 25; with count, how many of the most frequent values."
},
"search": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "An openFDA search expression, field:value, with AND / OR between terms. Fields include recall_status (\"Open, Classified\", \"Terminated\", \"Completed\"), recalling_firm, product_description, reason_for_recall, root_cause_description, product_code, openfda.device_name, openfda.device_class (1, 2, 3), openfda.medical_specialty_description, state, country, distribution_pattern, product_res_number (the recall number, such as Z-0153-2027), res_event_number, k_numbers, pma_numbers, and the dates event_date_initiated, event_date_posted and event_date_terminated (YYYY-MM-DD, ranges as [2026-01-01 TO 2026-12-31]). Examples: recalling_firm:\"Medtronic\", recall_status:\"Open, Classified\" AND openfda.device_class:3, product_description:\"insulin pump\" AND event_date_posted:[2026-01-01 TO 2026-12-31]. Leave out to match every recall. A search that matches nothing returns a validation error."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"required": [
"meta",
"results"
],
"properties": {
"meta": {
"type": "object",
"required": [
"disclaimer"
],
"properties": {
"terms": {
"type": "string",
"description": "Link to the openFDA terms of service."
},
"license": {
"type": "string",
"description": "Link to the openFDA data licence."
},
"results": {
"type": "object",
"required": [
"total"
],
"properties": {
"skip": {
"type": "integer",
"description": "Recalls skipped."
},
"limit": {
"type": "integer",
"description": "Recalls requested."
},
"total": {
"type": "integer",
"description": "Total recalls matching the search."
}
},
"description": "Paging totals; absent when count was set.",
"additionalProperties": true
},
"disclaimer": {
"type": "string",
"description": "The FDA's disclaimer, passed through verbatim."
},
"last_updated": {
"type": "string",
"description": "When the FDA last refreshed this dataset, YYYY-MM-DD."
}
},
"description": "The FDA's own notice and, for a recall search, paging totals. The disclaimer says to treat all results as unvalidated and not to use them for medical decisions.",
"additionalProperties": true
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"term": {
"type": "string",
"description": "With count: the field value."
},
"count": {
"type": "integer",
"description": "With count: how many matching recalls carry the value."
},
"state": {
"type": "string"
},
"action": {
"type": "string",
"description": "What the firm did or told customers to do."
},
"country": {
"type": "string"
},
"openfda": {
"type": "object",
"description": "Matched device identifiers (device name, class, medical specialty, regulation number, K and PMA numbers) when the FDA could link the product; sometimes empty.",
"additionalProperties": true
},
"code_info": {
"type": "string",
"description": "Lot numbers, serial numbers and other identifying codes; can be very long on a few older records."
},
"k_numbers": {
"type": "array",
"items": {
"type": "string"
},
"description": "510(k) premarket notification numbers."
},
"pma_numbers": {
"type": "array",
"items": {
"type": "string"
},
"description": "Premarket approval numbers."
},
"product_code": {
"type": "string",
"description": "The FDA's three-letter product code."
},
"recall_status": {
"type": "string",
"description": "Open, Classified, Terminated or Completed."
},
"recalling_firm": {
"type": "string",
"description": "The company that recalled the device."
},
"product_quantity": {
"type": "string",
"description": "How much product was recalled, as written."
},
"res_event_number": {
"type": "string",
"description": "The FDA event the recall belongs to; several products can share one."
},
"event_date_posted": {
"type": "string",
"description": "When the FDA posted it, YYYY-MM-DD."
},
"reason_for_recall": {
"type": "string",
"description": "Why the device was recalled."
},
"product_res_number": {
"type": "string",
"description": "The FDA recall number, such as Z-0153-2027."
},
"product_description": {
"type": "string",
"description": "The recalled product, as written in the report."
},
"distribution_pattern": {
"type": "string",
"description": "Where the device was distributed."
},
"event_date_initiated": {
"type": "string",
"description": "When the recall began, YYYY-MM-DD."
},
"event_date_terminated": {
"type": "string",
"description": "When the recall was terminated, YYYY-MM-DD; absent while open."
},
"root_cause_description": {
"type": "string",
"description": "The FDA's root cause category, such as Device Design."
}
},
"additionalProperties": true
},
"description": "One entry per recalled device product, or, when count was set, one { term, count } entry per value."
}
},
"description": "The FDA's response: a meta block and either the matching device recalls or, when count was set, the counted values.",
"additionalProperties": true
}