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

NameTypeRequiredDescription
querystringyesOpenFDA 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]‘
limitnumbernoNumber of results (1-100, default 10)
skipnumbernoOffset 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

FieldTypeDescription
totalnumberTotal count of matching adverse event reports
skipnumberOffset used in pagination
limitnumberNumber of results returned
resultsarrayArray of adverse event report objects
reaction_requestedstringThe reaction term as the caller supplied it, uppercased
reaction_resolvedstringThe MedDRA preferred term actually used for the filter
reaction_resolutionstringHow 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_notestringPresent when word order was corrected; states the substitution made
reaction_resolution_hintstringPresent 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.

Regenerated from source · build October 30, 2026