fda_drug_events
Pack: openfda · Connect: https://pipeworx.io/mcp (see Connect below for a single-pack URL)
No MCP client? Call it directly: GET https://gateway.pipeworx.io/v1/tools/fda_drug_events for the schema, then POST the same URL with its arguments for the data.
Search FAERS adverse event reports by drug name, MedDRA reaction term, or date range. Returns report counts, reaction types, seriousness levels, and dates. Natural multi-word reaction phrasing is retried against MedDRA preferred-term word order before an empty result is reported. FAERS reports do not establish incidence or causality.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
query | string | yes | OpenFDA search query. FAERS stores a drug under FOUR different fields and no single one is complete: patient.drug.openfda.generic_name / .brand_name / .substance_name are enrichment (missing for some newer or compounded drugs, but when present they fold every brand variant under the ingredient), and patient.drug.medicinalproduct is the reporter’s own free-text drug name (always present, but literal — a generic-name filter there misses every report filed under a brand). A query that names exactly ONE of these four fields for a drug is automatically expanded to an OR across all four with the same value, so you get every report regardless of which field openFDA happened to index it under — the response names which fields were searched in drug_name_fields_searched. Write whichever single field is natural; do not hand-write the OR yourself. Examples: ‘patient.drug.medicinalproduct:“OZEMPIC”’, ‘patient.drug.openfda.generic_name:“semaglutide”+AND+serious:1’, ‘receivedate:[20240101+TO+20241231]‘ |
limit | number | no | Number of results (1-100, default 10) |
skip | number | no | Offset for pagination (default 0) |
Example call
Arguments
{
"query": "patient.drug.medicinalproduct:\"OZEMPIC\""
}
curl
curl -X POST https://gateway.pipeworx.io/openfda/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"fda_drug_events","arguments":{"query":"patient.drug.medicinalproduct:\"OZEMPIC\""}}}'
TypeScript (@pipeworx/sdk)
import { Pipeworx } from '@pipeworx/sdk';
const pipeworx = new Pipeworx();
const result = await pipeworx.call('fda_drug_events', {
"query": "patient.drug.medicinalproduct:\"OZEMPIC\""
});
More examples
{
"query": "patient.drug.medicinalproduct:\"semaglutide\"+AND+serious:1",
"limit": 50
}
{
"query": "patient.drug.medicinalproduct:\"semaglutide\"+AND+patient.reaction.reactionmeddrapt.exact:\"OPTIC ISCHAEMIC NEUROPATHY\"",
"limit": 10
}
Response shape
Always returns: total, skip, limit, results
| Field | Type | Description |
|---|---|---|
total | number | Total count of matching adverse event reports |
skip | number | Offset used in pagination |
limit | number | Number of results returned |
results | array | Array of adverse event report objects |
reaction_requested | string | The reaction term as the caller supplied it, uppercased |
reaction_resolved | string | The MedDRA preferred term actually used for the filter |
reaction_resolution | string | How the supplied reaction term mapped onto a MedDRA preferred term. not_a_meddra_preferred_term means the filter matched nothing — counts are zero because the term missed, not because no reports exist |
reaction_resolution_note | string | Present when word order was corrected; states the substitution made |
reaction_resolution_hint | string | Present when the term matched nothing; names a working way to discover the real preferred terms |
Full JSON Schema
{
"type": "object",
"properties": {
"total": {
"type": "number",
"description": "Total count of matching adverse event reports"
},
"skip": {
"type": "number",
"description": "Offset used in pagination"
},
"limit": {
"type": "number",
"description": "Number of results returned"
},
"results": {
"type": "array",
"description": "Array of adverse event report objects",
"items": {
"type": "object"
}
},
"reaction_requested": {
"type": "string",
"description": "The reaction term as the caller supplied it, uppercased"
},
"reaction_resolved": {
"type": "string",
"description": "The MedDRA preferred term actually used for the filter"
},
"reaction_resolution": {
"type": "string",
"enum": [
"exact_match",
"word_order_corrected",
"not_a_meddra_preferred_term"
],
"description": "How the supplied reaction term mapped onto a MedDRA preferred term. not_a_meddra_preferred_term means the filter matched nothing — counts are zero because the term missed, not because no reports exist"
},
"reaction_resolution_note": {
"type": "string",
"description": "Present when word order was corrected; states the substitution made"
},
"reaction_resolution_hint": {
"type": "string",
"description": "Present when the term matched nothing; names a working way to discover the real preferred terms"
}
},
"required": [
"total",
"skip",
"limit",
"results"
]
}
Connect
Add this to your MCP client config — every tool in the catalog, including this one — or use one-click install buttons:
{
"mcpServers": {
"pipeworx": {
"url": "https://pipeworx.io/mcp"
}
}
}
Connect to just the openfda pack
{
"mcpServers": {
"openfda": {
"url": "https://gateway.pipeworx.io/openfda/mcp"
}
}
}
See Getting Started for client-specific install steps.