Skip to main content
Glama
cliwant

mcp-sam-gov

by cliwant

openfda_drug_approvals

Read-only

Retrieve FDA drug approval records with sponsor, brand, ingredient, and application number filters. Shows product details, submission history, and marketing status.

Instructions

Search openFDA Drugs@FDA DRUG APPROVALS — FDA-approved drug applications (NDA/ANDA/BLA) with the sponsor, application number, each approved product (brand + generic/active-ingredient name, dosage form, route, marketing status), and the submission/approval history (openFDA /drug/drugsfda.json; api.fda.gov). Answers 'what drugs did sponsor X get approved, and which are still marketed' — pharma vendor product/approval intelligence. KEYLESS (an OPTIONAL free OPENFDA_API_KEY only RAISES the rate limit — keyless works at ~1000 requests/day; NEVER throws for a missing key; api_key_status lists every source's key requirement). Input: STRUCTURED filters — sponsorName (→sponsor_name), brandName (→products.brand_name), activeIngredient (→products.active_ingredients.name), applicationNumber (→application_number) — safely escaped into the openFDA search= Lucene string (NO raw passthrough — injection-safe), plus limit (1..100, default 25) and skip (offset ≥0). Returns { applications:[{ applicationNumber, sponsorName, products:[{ brandName, genericIngredients:[{name,strength}], dosageForm, route, marketingStatus }], submissions:[{ submissionType, submissionNumber, submissionStatus, submissionStatusDate, submissionClass }] }] } + honest _meta. HONESTY: totalAvailable is openFDA's EXACT meta.results.total (skip/limit pagination — never results.length); every scalar is null-never-empty-string; a 'Discontinued' marketingStatus is NOT an approval revocation (disclosed in _meta). ★A no-match query returns openFDA HTTP 404 NOT_FOUND ⇒ an HONEST EMPTY (returned:0/total:0), NOT an error; a 400 ⇒ invalid_input surfacing openFDA's message; a 5xx ⇒ THROWS; a 200 non-JSON ⇒ schema_drift. The optional key rides ONLY the &api_key= query param — never logged or echoed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
skipNoRow offset for pagination (default 0). Page with _meta.pagination.nextOffset.
limitNoMax application records to return (default 25, max 100). Offset-paginated via skip.
brandNameNoProduct brand name (→ products.brand_name), e.g. 'lipitor'. Matched as an escaped Lucene phrase.
sponsorNameNoSponsor / applicant company name (→ sponsor_name), e.g. 'pfizer'. Matched as an escaped Lucene phrase.
activeIngredientNoActive ingredient name (→ products.active_ingredients.name), e.g. 'atorvastatin calcium'. Matched as an escaped Lucene phrase.
applicationNumberNoFDA application number (→ application_number), e.g. 'NDA050347'. Matched as an escaped Lucene phrase.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes far beyond annotations (readOnlyHint=true, openWorldHint=true). It discloses key behaviors: how no-match queries return empty, not error; pagination honesty (totalAvailable is meta.results.total); error handling for 400, 5xx, 200 non-JSON; and that 'Discontinued' marketing status is not an approval revocation. This provides rich behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is detailed but verbose, spanning multiple paragraphs. While front-loaded with the main purpose, it includes extensive technical details that could be streamlined. Some sentences are dense but necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description fully specifies the return structure (applications array with nested fields) and includes edge cases (404 handling, honest pagination, error behavior). This makes it complete for an agent to understand behavior and expected output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds value by explaining the mapping from parameter names to openFDA fields (e.g., sponsorName → sponsor_name) and emphasizes injection-safe Lucene escaping. This clarifies meaning beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches openFDA Drugs@FDA DRUG APPROVALS, specifies the verb 'Search' and the resource, and answers specific questions like 'what drugs did sponsor X get approved'. It distinguishes from sibling tools (e.g., openfda_device_clearances, openfda_enforcement) by focusing on drug approvals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use: for pharma vendor product/approval intelligence. It mentions the optional API key and rate limits. However, it does not explicitly list cases when not to use or alternative tools, though siblings are clearly different.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cliwant/mcp-sam-gov'

If you have feedback or need assistance with the MCP directory API, please join our Discord server