When to use this skill
When the user asks about medical device adverse events — injury reports, malfunction reports, MDR filings, or safety problems with a specific device. This is the FDA's open adverse event dataset: decades of filings by manufacturers, hospitals, and healthcare providers. For regulatory clearances (510(k), PMA), use the 510(k) endpoint instead. For recalls, use the recall endpoint instead.
Your best first call
curl "https://api.fda.gov/device/event.json?search=device.generic_name:defibrillator&limit=5"
No auth. No key. The search parameter uses Lucene syntax. device.generic_name narrows by device category, device.brand_name targets a trade name, and event_type:Death or event_type:Injury filter by severity. Combine with +AND+ for boolean queries (URL-encode + as %2B).
Key response fields inside results[]:
- event_type — "Injury", "Malfunction", "Death", or "Other"
- report_number — unique MDR filing identifier
- device[].brand_name, device[].generic_name — device identification
- device[].manufacturer_d_name — manufacturer
- patient[].sequence_number_outcome — outcome ("Hospitalization", "Life-threatening")
- date_of_event — YYYYMMDD format, not ISO 8601
- openfda.device_class — regulatory class; may be absent
Fallbacks (when the best call isn't enough)
- Need clearance history →
/device/510k.json with search=device_name:<term>. Different question — "was this cleared" vs "what went wrong".
- Need recall history →
/device/recall.json with search=product_description:<term>. Adverse events and recalls are separate datasets.
- Need classification only →
/device/classification.json with search=device_name:<term> for regulatory class without event data.
Pitfalls
- Lucene syntax is not plain keyword search.
device.generic_name:defibrillator works for single terms. For phrases: device.generic_name:"infusion pump". Boolean AND: device.generic_name:defibrillator+AND+event_type:Death. URL-encode + as %2B.
- Dates are YYYYMMDD, not ISO 8601.
date_of_event:20080206 is February 6, 2008. Other FDA device endpoints use YYYY-MM-DD — do not assume consistency across endpoints.
- Missing values are empty strings, not null. The API returns
"" for absent data. Test for truthiness, not just non-null.
- The
openfda enrichment object may be absent. Derived fields like device_class inside openfda are not guaranteed for every device report. Treat it as optional enrichment.
One-line summary for the user
I can search FDA medical device adverse event reports by device name, brand, or event type — no authentication required, but queries use Lucene syntax and dates are in YYYYMMDD format.
SKILL.md source (frontmatter + body)
---
name: search-event.json
description: When the user asks about medical device adverse events, MDR filings, injury or malfunction reports, or device safety problems — search the FDA Device API event database by device name, brand, or event type.
---
## When to use this skill
When the user asks about medical device adverse events — injury reports, malfunction reports, MDR filings, or safety problems with a specific device. This is the FDA's open adverse event dataset: decades of filings by manufacturers, hospitals, and healthcare providers. For regulatory clearances (510(k), PMA), use the 510(k) endpoint instead. For recalls, use the recall endpoint instead.
## Your best first call
```bash
curl "https://api.fda.gov/device/event.json?search=device.generic_name:defibrillator&limit=5"
```
No auth. No key. The `search` parameter uses Lucene syntax. `device.generic_name` narrows by device category, `device.brand_name` targets a trade name, and `event_type:Death` or `event_type:Injury` filter by severity. Combine with `+AND+` for boolean queries (URL-encode `+` as `%2B`).
Key response fields inside `results[]`:
- `event_type` — "Injury", "Malfunction", "Death", or "Other"
- `report_number` — unique MDR filing identifier
- `device[].brand_name`, `device[].generic_name` — device identification
- `device[].manufacturer_d_name` — manufacturer
- `patient[].sequence_number_outcome` — outcome ("Hospitalization", "Life-threatening")
- `date_of_event` — YYYYMMDD format, not ISO 8601
- `openfda.device_class` — regulatory class; may be absent
## Fallbacks (when the best call isn't enough)
- **Need clearance history** → `/device/510k.json` with `search=device_name:<term>`. Different question — "was this cleared" vs "what went wrong".
- **Need recall history** → `/device/recall.json` with `search=product_description:<term>`. Adverse events and recalls are separate datasets.
- **Need classification only** → `/device/classification.json` with `search=device_name:<term>` for regulatory class without event data.
## Pitfalls
- **Lucene syntax is not plain keyword search.** `device.generic_name:defibrillator` works for single terms. For phrases: `device.generic_name:"infusion pump"`. Boolean AND: `device.generic_name:defibrillator+AND+event_type:Death`. URL-encode `+` as `%2B`.
- **Dates are YYYYMMDD, not ISO 8601.** `date_of_event:20080206` is February 6, 2008. Other FDA device endpoints use `YYYY-MM-DD` — do not assume consistency across endpoints.
- **Missing values are empty strings, not null.** The API returns `""` for absent data. Test for truthiness, not just non-null.
- **The `openfda` enrichment object may be absent.** Derived fields like `device_class` inside `openfda` are not guaranteed for every device report. Treat it as optional enrichment.
## One-line summary for the user
I can search FDA medical device adverse event reports by device name, brand, or event type — no authentication required, but queries use Lucene syntax and dates are in YYYYMMDD format.