Skip to main content
Glama

Openfda Drug Profile

openfda_drug_profile
Read-only

Resolve one drug name to its FDA identity, then fan out in parallel across the bounded per-drug openFDA endpoints and merge into one profile: identity, label highlights, adverse-event summary, recall history, Drugs@FDA approval, and shortage status. Replaces chaining openfda_get_drug_label, openfda_search_adverse_events, openfda_search_recalls, openfda_search_drug_approvals, and openfda_search_drug_shortages — and reconciles the identifier drift between endpoints that makes that chaining error-prone. Each section is best-effort: a miss returns null rather than failing the call. For deep dives into any one area, use the dedicated tool.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
drugYesDrug name to profile — brand or generic (e.g. "metformin", "Humira", "Glucophage"). Resolved once to canonical FDA identifiers, which then key every sub-query.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
metaNoRequest metadata.
errorNoPresent when the call failed. Absent on success.
labelNoLabel highlights from drug/label, or null when no label matched.
noticeNoGuidance when the drug could not be resolved or upstream errors degraded the profile. Absent on a fully populated profile.
recallsNoRecent drug/enforcement recall actions (may be empty).
approvalNoDrugs@FDA approval summary, or null when no application matched.
degradedNoSub-queries that failed upstream, empty when every section resolved. A section listed here is unknown, not absent — a null section with no entry here genuinely has no FDA record.
identityNoIdentity resolved once and reused across every sub-query to avoid identifier drift.
shortageNoCurrent or most-recent drug shortage status, or null when none on record.
sectionsFoundNoHow many profile sections (label, adverse_events, recalls, approval, shortage) returned data.
adverse_eventsNoAdverse-event summary aggregated over drug/event, or null when unavailable.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedOutput schema / properties / adverse_events / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "seriousCount": {
      -        "description": "Reports flagged serious (serious=1).",
      -        "type": "number"
      -      },
      -      "topReactions": {
      -        "description": "Most-frequent reported reactions, descending.",
      -        "items": {
      -          "additionalProperties": false,
      -          "description": "A reaction term paired with its report count.",
      -          "properties": {
      -            "count": {
      -              "description": "Reports citing this reaction.",
      -              "type": "number"
      -            },
      -            "term": {
      -              "description": "MedDRA reaction term.",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "term",
      -            "count"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "total": {
      -        "description": "Approximate total adverse-event reports naming this drug.",
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "total",
      -      "seriousCount",
      -      "topReactions"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "seriousCount": {
      +        "description": "Reports flagged serious (serious=1). total − seriousCount covers both non-serious reports and those with no seriousness recorded.",
      +        "type": "number"
      +      },
      +      "topReactions": {
      +        "description": "Most-frequent reported reactions, descending.",
      +        "items": {
      +          "additionalProperties": false,
      +          "description": "A reaction term paired with its report count.",
      +          "properties": {
      +            "count": {
      +              "description": "Reports citing this reaction.",
      +              "type": "number"
      +            },
      +            "term": {
      +              "description": "MedDRA reaction term.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "term",
      +            "count"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "total": {
      +        "description": "Adverse-event reports naming this drug — every matching report, including those with no seriousness recorded; equals openfda_search_adverse_events meta.total for the same medicinalproduct search.",
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "total",
      +      "seriousCount",
      +      "topReactions"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / meta / properties / fanOutKey / description
      Previous value: -"Canonical key the structured sub-queries (recall/enforcement, Drugs@FDA approval, shortage) ran against — the resolved generic name, falling back to a brand name, then the input term. The adverse-event sub-query instead keys off the raw input term to match heterogeneous reporter-entered values."New value: +"Canonical key the structured sub-queries (recall/enforcement, Drugs@FDA approval, shortage) ran against — the resolved generic name, falling back to a brand name, then the input term. The adverse-event sub-queries instead key off the raw input term to match heterogeneous reporter-entered values."
    • changedOutput schema / properties / shortage / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "availability": {
      -        "description": "Availability note (truncated).",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "status": {
      -        "description": "Shortage status (Current/Resolved).",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "status",
      -      "availability"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "availability": {
      +        "description": "Availability note (truncated).",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "status": {
      +        "description": "Shortage status (Current, To Be Discontinued, or Resolved).",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "availability"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed19 schema fields changed
    • changedOutput schema / properties / approval / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "applicationNumber": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "NDA/ANDA application number."
      -      },
      -      "marketingStatus": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Derived marketing/approval status."
      -      },
      -      "sponsor": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Sponsor/applicant name."
      -      }
      -    },
      -    "required": [
      -      "applicationNumber",
      -      "sponsor",
      -      "marketingStatus"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "applicationNumber": {
      +        "description": "NDA/ANDA application number.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "marketingStatus": {
      +        "description": "Derived marketing/approval status.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "sponsor": {
      +        "description": "Sponsor/applicant name.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "applicationNumber",
      +      "sponsor",
      +      "marketingStatus"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / identity / properties / generic_name / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / identity / properties / generic_name / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / identity / properties / product_ndc / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / identity / properties / product_ndc / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / identity / properties / rxcui / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / identity / properties / rxcui / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / identity / properties / spl_set_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / identity / properties / spl_set_id / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / label / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "dosage": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Dosage and administration (truncated)."
      -      },
      -      "indications": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Indications and usage (truncated)."
      -      },
      -      "warnings": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Warnings (truncated) — boxed warning or warnings_and_cautions for Rx labels, falling back to the OTC-monograph warnings section."
      -      }
      -    },
      -    "required": [
      -      "indications",
      -      "warnings",
      -      "dosage"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "dosage": {
      +        "description": "Dosage and administration (truncated).",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "indications": {
      +        "description": "Indications and usage (truncated).",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "warnings": {
      +        "description": "Warnings (truncated) — boxed warning or warnings_and_cautions for Rx labels, falling back to the OTC-monograph warnings section.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "indications",
      +      "warnings",
      +      "dosage"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / recalls / items / properties / classification / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / recalls / items / properties / classification / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / recalls / items / properties / date / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / recalls / items / properties / date / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / recalls / items / properties / reason / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / recalls / items / properties / reason / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / recalls / items / properties / recalling_firm / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / recalls / items / properties / recalling_firm / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / shortage / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "availability": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Availability note (truncated)."
      -      },
      -      "status": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Shortage status (Current/Resolved)."
      -      }
      -    },
      -    "required": [
      -      "status",
      -      "availability"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "availability": {
      +        "description": "Availability note (truncated).",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "status": {
      +        "description": "Shortage status (Current/Resolved).",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "availability"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  3. Changed6 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "meta",
      +      "identity",
      +      "label",
      +      "adverse_events",
      +      "recalls",
      +      "approval",
      +      "shortage",
      +      "degraded",
      +      "sectionsFound"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present when the call failed. Absent on success.",
      +  "properties": {
      +    "code": {
      +      "description": "JSON-RPC error code for this failure.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "data": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "reason": {
      +          "description": "Machine-readable failure mode. Declared by this tool: `blank_drug_name`: The drug name carries no searchable character — only quotes, backslashes, or whitespace. Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "blank_drug_name"
      +          ],
      +          "type": "string"
      +        },
      +        "recovery": {
      +          "additionalProperties": {},
      +          "description": "Actionable next step for the caller.",
      +          "properties": {
      +            "hint": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "hint"
      +          ],
      +          "type": "object"
      +        },
      +        "retryable": {
      +          "description": "Whether retrying may succeed.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable description of what went wrong.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "meta",
      -  "identity",
      -  "label",
      -  "adverse_events",
      -  "recalls",
      -  "approval",
      -  "shortage",
      -  "degraded",
      -  "sectionsFound"
      -]
  4. Changed3 schema fields changed
    • addedInput schema / properties / drug / pattern
      Added value: +"\\S"
    • addedOutput schema / properties / degraded
      Added value: +{
      +  "description": "Sub-queries that failed upstream, empty when every section resolved. A section listed here is unknown, not absent — a null section with no entry here genuinely has no FDA record.",
      +  "items": {
      +    "additionalProperties": false,
      +    "description": "One failed sub-query and why it failed.",
      +    "properties": {
      +      "message": {
      +        "description": "Upstream failure message for this section, truncated.",
      +        "type": "string"
      +      },
      +      "reason": {
      +        "description": "Machine-readable failure reason (e.g. rate_limited, upstream_error, query_error).",
      +        "type": "string"
      +      },
      +      "section": {
      +        "description": "Profile section whose sub-query failed.",
      +        "enum": [
      +          "identity",
      +          "label",
      +          "adverse_events",
      +          "recalls",
      +          "approval",
      +          "shortage"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "section",
      +      "reason",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "meta",
      -  "identity",
      -  "label",
      -  "adverse_events",
      -  "recalls",
      -  "approval",
      -  "shortage",
      -  "sectionsFound"
      -]New value: +[
      +  "meta",
      +  "identity",
      +  "label",
      +  "adverse_events",
      +  "recalls",
      +  "approval",
      +  "shortage",
      +  "degraded",
      +  "sectionsFound"
      +]
  5. Changed1 schema field changed
    • changedOutput schema / properties / label / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "dosage": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Dosage and administration (truncated)."
      -      },
      -      "indications": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Indications and usage (truncated)."
      -      },
      -      "warnings": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Warnings (truncated)."
      -      }
      -    },
      -    "required": [
      -      "indications",
      -      "warnings",
      -      "dosage"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "dosage": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Dosage and administration (truncated)."
      +      },
      +      "indications": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Indications and usage (truncated)."
      +      },
      +      "warnings": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Warnings (truncated) — boxed warning or warnings_and_cautions for Rx labels, falling back to the OTC-monograph warnings section."
      +      }
      +    },
      +    "required": [
      +      "indications",
      +      "warnings",
      +      "dosage"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  6. Changed3 schema fields changed
    • changedOutput schema / properties / identity / properties / generic_name / description
      Previous value: -"Canonical generic name (openfda.generic_name) — the key used for fan-out."New value: +"Canonical generic name (openfda.generic_name) — the primary source for meta.fanOutKey."
    • addedOutput schema / properties / meta / properties / fanOutKey
      Added value: +{
      +  "description": "Canonical key the structured sub-queries (recall/enforcement, Drugs@FDA approval, shortage) ran against — the resolved generic name, falling back to a brand name, then the input term. The adverse-event sub-query instead keys off the raw input term to match heterogeneous reporter-entered values.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / meta / required
      Previous value: -[
      -  "drug",
      -  "resolvedVia"
      -]New value: +[
      +  "drug",
      +  "resolvedVia",
      +  "fanOutKey"
      +]
  7. Added

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.