OpenFDA MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OpenFDA MCP Serversearch for adverse events of aspirin"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OpenFDA MCP Server
An MCP (Model Context Protocol) server that provides access to U.S. FDA public datasets including drugs, medical devices, adverse events, recalls, and more.
Features
10 FDA Tools: Query drug and device databases through a standardized MCP interface
Drug Tools: Adverse events (FAERS), labels, NDC directory, recalls, Drugs@FDA, shortages
Device Tools: 510(k) clearances, classifications, adverse events (MDR), recalls
Individual Record Lookup: Retrieve specific reports by ID (safety report ID, set ID, MDR report number)
Advanced Filtering: Filter drug labels by boxed warnings, request specific label sections
Rate Limit Aware: Supports authenticated requests for higher rate limits (120k/hour vs 1k/hour)
TypeScript: Fully typed with Zod schema validation
Related MCP server: OpenFDA MCP Server
Installation
# Install globally
npm install -g openfda-mcp-server
# Or use with npx
npx openfda-mcp-serverConfiguration
Claude Desktop
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"openfda": {
"command": "npx",
"args": ["-y", "openfda-mcp-server"],
"env": {
"OPENFDA_API_KEY": "your-api-key-optional"
}
}
}
}Environment Variables
Variable | Description | Default |
| FDA API key for higher rate limits | None (uses public limits) |
Get a free API key at: https://open.fda.gov/apis/authentication/
Available Tools
Drug Tools
Tool | Description |
| Search FAERS for drug safety reports. Retrieve specific report by |
| Search drug labeling/prescribing info. Get by |
| Search the National Drug Code directory |
| Search drug recall enforcement reports |
| Search approved drug applications |
| Search current and resolved drug shortages |
Device Tools
Tool | Description |
| Search 510(k) premarket notifications |
| Search device classification database |
| Search MDR adverse event reports. Retrieve specific report by |
| Search device recall enforcement reports |
Tool Parameters
search_drug_labels
Parameter | Type | Description |
| string | Retrieve a specific label by its unique set_id |
| string | Drug brand or generic name |
| string | Medical indication or use case |
| string | Active ingredient/substance name |
| string | Route of administration (e.g., 'oral', 'intravenous') |
| boolean | Filter for drugs with boxed warnings (most serious warnings) |
| string[] | Specific label sections to return (see below) |
| number | Maximum results (1-100) |
| number | Number of results to skip for pagination |
Available sections: indications_and_usage, dosage_and_administration, contraindications, warnings, warnings_and_cautions, adverse_reactions, drug_interactions, clinical_pharmacology, mechanism_of_action, pharmacokinetics, overdosage, description, how_supplied, storage_and_handling, boxed_warning
search_drug_adverse_events
Parameter | Type | Description |
| string | Retrieve a specific FAERS report by its 8-digit ID |
| string | Drug or product name to search |
| string | Adverse reaction (e.g., 'headache', 'nausea') |
| string | Drug manufacturer name |
| boolean | Filter for serious adverse events only |
| string | Start date (YYYY-MM-DD) |
| string | End date (YYYY-MM-DD) |
| number | Maximum results (1-100) |
| number | Number of results to skip for pagination |
search_device_adverse_events
Parameter | Type | Description |
| string | Retrieve a specific MDR report by report number |
| string | Device generic name |
| string | Device brand name |
| string | Device manufacturer name |
| string | Type: 'Injury', 'Malfunction', 'Death', 'Other' |
| string | Start date (YYYY-MM-DD) |
| string | End date (YYYY-MM-DD) |
| number | Maximum results (1-100) |
| number | Number of results to skip for pagination |
Usage Examples
Search for drug adverse events
Find adverse events for aspirin in the last year that were seriousGet a specific adverse event report
Retrieve FAERS report with safety report ID 10003641Search for drugs with boxed warnings
Find all drugs with boxed warnings related to cardiovascular risksGet specific label sections
Get the boxed_warning and contraindications sections for warfarinSearch for drug recalls
Search for Class I drug recalls from PfizerSearch for device clearances
Find 510(k) clearances for cardiac pacemakersGet a specific device adverse event report
Retrieve MDR report number 2649622-2020-08294Search for device adverse events
Search device adverse events for insulin pumps that resulted in injuryCLI Usage
# Start with stdio transport (default)
openfda-mcp-server
# Start with HTTP transport
openfda-mcp-server --transport http --port 3000Docker
Quick Start
# Build and run with docker-compose
docker-compose up -d
# Or build manually
docker build -t openfda-mcp-server .
docker run -p 3000:3000 -e OPENFDA_API_KEY=your-key openfda-mcp-serverDocker Compose
services:
openfda-mcp:
image: openfda-mcp-server:latest
ports:
- "3000:3000"
environment:
- OPENFDA_API_KEY=${OPENFDA_API_KEY:-}Environment Variables
Pass environment variables to the container:
docker run -p 3000:3000 \
-e OPENFDA_API_KEY=your-api-key \
-e DEBUG=openfda-mcp:* \
openfda-mcp-serverDevelopment
# Install dependencies
pnpm install
# Run in development mode
pnpm dev
# Test locally
pnpm serve:test
# Run full validation (format, lint, test, build)
pnpm validate
# Build for production
pnpm buildProgrammatic Usage
import { createOpenFDAServer, handleSearchDrugAdverseEvents, handleSearchDrugLabels } from "openfda-mcp-server/lib"
// Create a custom server
const server = createOpenFDAServer({
name: "my-fda-server",
version: "1.0.0",
})
// Search for adverse events
const adverseEvents = await handleSearchDrugAdverseEvents({
drugName: "aspirin",
serious: true,
limit: 10,
})
// Get a specific adverse event by ID
const specificReport = await handleSearchDrugAdverseEvents({
safetyReportId: "10003641",
})
// Search for drugs with boxed warnings
const boxedWarningDrugs = await handleSearchDrugLabels({
hasBoxedWarning: true,
limit: 10,
})
// Get specific sections of a drug label
const warfarinLabel = await handleSearchDrugLabels({
setId: "0cbce382-9c88-4f58-ae0f-532a841e8f95",
sections: ["boxed_warning", "contraindications", "adverse_reactions"],
})API Rate Limits
Authentication | Per Minute | Per Hour |
Without API Key | 40 | 1,000 |
With API Key | 240 | 120,000 |
License
MIT
Acknowledgments
OpenFDA - FDA open data API
Sponsored by SapientsAI — Building agentic AI for businesses
Available Tools
14 toolssearch_device_510kA
Search FDA 510(k) premarket notification database for medical device clearances. Find device clearances by device name, applicant, product code, clearance type, or decision date. Returns clearance decisions and device classification details.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of results to skip for pagination | |
| limit | No | Maximum results to return (1-100, default 10) | |
| applicant | No | Applicant/company name | |
| deviceName | No | Device name to search | |
| productCode | No | FDA product code | |
| clearanceType | No | Clearance type (e.g., 'Traditional', 'Special') | |
| decisionDateTo | No | Decision date range end (YYYY-MM-DD) | |
| decisionDateFrom | No | Decision date range start (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden of behavioral disclosure. It states the tool returns clearance decisions and classification details, suggesting a read-oriented operation, but does not disclose potential rate limits, authentication requirements, or behavior when no results are found. A score of 3 reflects adequate but not thorough transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no unnecessary words. The first sentence conveys the core purpose and database, and the second lists search fields and output. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters fully described in the schema and no output schema, the description adequately explains the tool's purpose and return type. It could briefly mention pagination (skip/limit) but this is already in the schema. Overall, the context is sufficient for selecting the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description mentions specific search criteria (device name, applicant, product code, etc.) but does not add meaning beyond the schema's parameter descriptions. No additional semantic context is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the FDA 510(k) premarket notification database for medical device clearances, specifying searchable fields (device name, applicant, product code, etc.) and return content (clearance decisions and classification details). This explicitly differentiates it from sibling tools like search_device_adverse_events or search_device_classifications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (searching for 510(k) clearances) but does not provide explicit guidance on when to use alternatives, prerequisites, or when not to use it. No exclusions or alternative recommendations are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_device_adverse_eventsA
Search FDA Medical Device Report (MDR) database for device adverse events. Find adverse events by device name, brand, manufacturer, event type (Injury/Death/Malfunction), and date. Retrieve a specific MDR report by reportNumber. Returns device details, event descriptions, and patient outcomes.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of results to skip for pagination | |
| limit | No | Maximum results to return (1-100, default 10) | |
| dateTo | No | End date (YYYY-MM-DD or YYYYMMDD format) | |
| dateFrom | No | Start date (YYYY-MM-DD or YYYYMMDD format) | |
| brandName | No | Device brand name | |
| eventType | No | Type of adverse event | |
| deviceName | No | Device generic name | |
| reportNumber | No | MDR report number for retrieving a specific device adverse event report | |
| manufacturerName | No | Device manufacturer name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It states the tool returns device details, event descriptions, and patient outcomes, and lists filterable parameters. However, it omits information about data source freshness, rate limits, pagination behavior beyond what schema provides, or any side effects. This is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and key capabilities. Every sentence adds value—no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters, no output schema, and no annotations, the description covers the main purpose and typical use cases. It mentions the key return fields (device details, event descriptions, patient outcomes) and lists major filtering dimensions. Minor omission: does not indicate that event type enum includes 'Other' (though schema covers it). Overall sufficient for an agent to understand scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds minor narrative context by grouping parameters (e.g., 'by device name, brand, manufacturer...'), but does not provide additional semantics beyond the schema's own descriptions. No new parameter constraints or format details are added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it searches the FDA MDR database for device adverse events, listing specific searchable criteria (device name, brand, manufacturer, event type, date) and mentions retrieving a specific report by reportNumber. It distinguishes from sibling tools (e.g., drug adverse events, other device searches) by specifying 'device' and 'adverse events'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for finding device adverse events, but does not provide explicit guidance on when to use this tool versus alternatives like search_device_recalls or search_device_510k. No 'when not to use' or comparison with siblings is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_device_classificationsA
Search FDA medical device classification database. Find devices by name, class (1-3), medical specialty, product code, or regulation number. Class 1 is lowest risk, Class 3 is highest risk (implants, life-sustaining).
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of results to skip for pagination | |
| limit | No | Maximum results to return (1-100, default 10) | |
| deviceName | No | Device name to search | |
| deviceClass | No | Device class (1=lowest risk, 3=highest) | |
| productCode | No | FDA product code | |
| medicalSpecialty | No | Medical specialty code | |
| regulationNumber | No | CFR regulation number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It adds context about class risk levels but does not disclose pagination behavior (skip/limit), result ordering, error handling, or any response format details. The description provides basic functionality but not deeper behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long with no wasted words. The first sentence immediately states the purpose and the second adds helpful risk classification context. It is front-loaded and efficient for an AI agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 optional parameters, no output schema, and no annotations, the description lacks information on how multiple search criteria interact, what the output structure looks like, and pagination behavior. It covers the basic search intent but leaves gaps that could affect agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all 7 parameters with clear descriptions (100% coverage). The description merely lists the fields without adding new meaning, examples, or constraints beyond what the schema provides. The class risk explanation is also present in the schema's deviceClass description, so no additional value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the FDA medical device classification database and lists specific searchable fields (name, class, specialty, product code, regulation number). It explains the risk levels for classes. The name and sibling tools (e.g., search_device_510k) make the distinct purpose obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for classification lookups by specifying the database and fields, but it does not explicitly state when to use this tool over siblings like search_device_recalls or search_device_adverse_events. No exclusion criteria or context-dependent guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_device_recallsB
Search FDA medical device recall and enforcement reports. Find recalls by company, product description, classification (I-III), status, and date. Class I is most serious (may cause death), Class III is least serious.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of results to skip for pagination | |
| limit | No | Maximum results to return (1-100, default 10) | |
| dateTo | No | End date (YYYY-MM-DD or YYYYMMDD format) | |
| status | No | Recall status | |
| dateFrom | No | Start date (YYYY-MM-DD or YYYYMMDD format) | |
| recallingFirm | No | Name of the recalling company | |
| classification | No | Recall classification (I=most serious) | |
| productDescription | No | Product description keywords |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It explains classification severity but does not disclose pagination behavior, output format, sorting, rate limits, or data retrieval limits beyond the schema. The agent lacks critical 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two focused sentences with no redundancy. The first sentence states the core purpose, the second lists key searchable fields. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should explain what the tool returns (e.g., recall reports, counts). It does not mention return structure, pagination, or result format. For a search tool with 8 parameters and no output schema, this is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description only enumerates fields already described in the schema without adding new semantic detail (e.g., date format clarification or pagination behavior). It adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches FDA medical device recall and enforcement reports, listing specific searchable fields (company, product, classification, status, date). This distinguishes it from sibling tools like search_device_510k or search_drug_recalls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by listing searchable fields but does not explicitly state when to use this tool versus alternatives or provide when-not-to-use guidance. No exclusion criteria or sibling differentiation is mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_drug_adverse_eventsA
Search FDA Adverse Event Reporting System (FAERS) for drug safety reports. Find adverse events by drug name, reaction type, manufacturer, date range, and seriousness. Retrieve a specific report by safetyReportId. Returns patient demographics, drug details, and reported reactions.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of results to skip for pagination | |
| limit | No | Maximum results to return (1-100, default 10) | |
| dateTo | No | End date (YYYY-MM-DD or YYYYMMDD format) | |
| serious | No | Filter for serious adverse events only | |
| dateFrom | No | Start date (YYYY-MM-DD or YYYYMMDD format) | |
| drugName | No | Drug or product name to search | |
| reaction | No | Adverse reaction to search (e.g., 'headache', 'nausea') | |
| manufacturer | No | Drug manufacturer name | |
| safetyReportId | No | Unique safety report ID for retrieving a specific adverse event report |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description is the sole source of behavioral information. It discloses return content (patient demographics, drug details, reactions) but omits rate limits, authentication needs, or restrictions. The tool is clearly read-only, but this is not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences efficiently convey purpose, parameters, and return values. No unnecessary words; all sentences add value. Front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description adequately covers return fields. However, it does not mention pagination behavior (skip, limit) or date format specifics, which are in the schema but could be highlighted for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for all 9 parameters. The description adds a summary narrative grouping parameters (e.g., 'by drug name, reaction type, manufacturer') but does not provide additional detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches FAERS for drug safety reports, specifying key parameters (drug name, reaction, manufacturer, date range, seriousness) and the ability to retrieve by safetyReportId. It distinguishes from sibling tools by focusing on drug adverse events, as seen in sibling names like 'search_device_adverse_events'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for drug adverse events but does not explicitly state when to use this tool versus alternatives like 'search_device_adverse_events'. No when-not-to-use or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_drug_labelsA
Search FDA drug labeling (SPL) information including prescribing information, indications, warnings, boxed warnings, dosage, and active ingredients. Retrieve a specific label by setId. Filter for drugs with boxed warnings using hasBoxedWarning. Request specific sections (e.g., indications_and_usage, adverse_reactions, boxed_warning) to limit response.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of results to skip for pagination | |
| limit | No | Maximum results to return (1-100, default 10) | |
| route | No | Route of administration (e.g., 'oral', 'intravenous') | |
| setId | No | Unique label identifier (set_id) for retrieving a specific drug label | |
| drugName | No | Drug brand or generic name | |
| sections | No | Specific label sections to return (e.g., ['indications_and_usage', 'warnings', 'adverse_reactions']) | |
| indication | No | Medical indication or use case | |
| hasBoxedWarning | No | Filter for drugs with boxed warnings (most serious safety warnings) | |
| activeIngredient | No | Active ingredient/substance name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It explains core functionality (search, retrieve, filter) but omits details like whether the operation is read-only, the response structure, pagination behavior beyond the schema, and any rate limiting. The description is adequate but leaves gaps in understanding what the tool does beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with the main purpose, then specific use cases. Every sentence adds value—no redundancy or fluff. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters and no output schema, the description covers the main filtering capabilities and common scenarios. It omits details about result format, error conditions, and pagination beyond schema descriptions. However, most use cases are covered, making it nearly complete for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameters are well-documented in the schema. The description adds marginal value by contextualizing key parameters (e.g., 'hasBoxedWarning' as 'most serious safety warnings'), but largely restates schema descriptions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches FDA drug labeling information, listing specific content types (prescribing info, indications, warnings, dosage, active ingredients) and usage patterns (by setId, filtering with hasBoxedWarning, requesting specific sections). It effectively distinguishes from sibling tools that cover devices, adverse events, NDC, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: retrieving by setId, filtering by hasBoxedWarning, and limiting response via sections. While it doesn't explicitly state when not to use this tool or list alternatives, the context of sibling tools and the description's focus on drug labeling make the intended use clear. Could be improved by noting that adverse events should use search_drug_adverse_events.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_drug_ndcA
Search the National Drug Code (NDC) Directory for drug product identification. Find drugs by NDC, brand name, generic name, labeler, dosage form, or route. Returns product details, active ingredients, and packaging information.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of results to skip for pagination | |
| limit | No | Maximum results to return (1-100, default 10) | |
| route | No | Route of administration | |
| brandName | No | Drug brand name | |
| dosageForm | No | Dosage form (e.g., 'tablet', 'capsule', 'injection') | |
| productNdc | No | National Drug Code (NDC) | |
| genericName | No | Drug generic name | |
| labelerName | No | Drug labeler/manufacturer name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool returns 'product details, active ingredients, and packaging information,' which is adequate for a read-only search. However, it omits details on pagination behavior, rate limits, or empty result handling, though skip/limit parameters are in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently state the core purpose and searchable fields, with no redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's main inputs and outputs, but given the lack of an output schema and the presence of many sibling tools, it could benefit from clarifying the specific use case (e.g., 'Use this for NDC-specific identification') or mentioning pagination. However, it is still reasonably complete for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the searchable fields but does not add new semantic meaning beyond what the parameter descriptions already convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the tool's action ('Search the National Drug Code (NDC) Directory'), the resource ('drug product identification'), and the searchable fields (NDC, brand name, etc.), distinguishing it from sibling tools that target other FDA datasets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists searchable fields, implying use when identifying drugs by those attributes, but does not explicitly state when to avoid this tool or compare to siblings like search_drug_labels or search_drug_adverse_events.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_drug_recallsB
Search FDA drug recall and enforcement reports. Find recalls by company, classification (I-III), status, state, and date range. Class I is most serious (may cause death), Class III is least serious.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of results to skip for pagination | |
| limit | No | Maximum results to return (1-100, default 10) | |
| state | No | US state code (e.g., 'CA', 'NY') | |
| dateTo | No | End date (YYYY-MM-DD or YYYYMMDD format) | |
| status | No | Recall status | |
| dateFrom | No | Start date (YYYY-MM-DD or YYYYMMDD format) | |
| recallingFirm | No | Name of the recalling company | |
| classification | No | Recall classification (I=most serious, III=least) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should disclose behaviors like rate limits, authentication, or return format. It explains classification levels but omits pagination behavior, data source freshness, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences. First sentence states purpose and lists filterable fields. Second sentence clarifies classification severity. No superfluous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the searchable fields and classification meaning, but lacks information on the output format, pagination behavior, and any restrictions. Without annotations or an output schema, more context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter described. The description adds meaning by explaining Class I severity, but this largely duplicates the schema's enum description. Overall minimal added value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches drug recall and enforcement reports and lists the available filter fields (company, classification, status, state, date range). This distinguishes it from sibling tools focused on devices or adverse events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like search_drug_adverse_events. The description does not specify prerequisites, exclusions, or optimal use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_drugs_at_fdaA
Search the Drugs@FDA database for approved drug applications. Find approved drugs by sponsor, application number, brand name, or marketing status. Returns application details, products, and submission history.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of results to skip for pagination | |
| limit | No | Maximum results to return (1-100, default 10) | |
| brandName | No | Drug brand name | |
| sponsorName | No | Drug sponsor/company name | |
| marketingStatus | No | Marketing status (e.g., 'Prescription', 'OTC') | |
| applicationNumber | No | FDA application number (e.g., 'NDA012345') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the tool returns application details, products, and submission history, but does not describe pagination behavior (skip/limit), rate limits, authentication needs, or what happens with no results. Basic transparency is present but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences (28 words), highly concise, front-loaded with the primary action, and includes specific search and return details. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters (none required) and no output schema, the description adequately covers purpose, search criteria, and return types. It does not detail default pagination but schema covers that. Overall, it is sufficiently complete for a search tool with well-documented parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all parameters described. The description adds context by listing searchable fields, but does not add significant new meaning beyond the schema. Baseline 3 is appropriate as schema already documents each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the Drugs@FDA database for approved drug applications, and lists specific search criteria (sponsor, application number, brand name, marketing status). It distinguishes itself from sibling tools like search_device_* or search_drug_adverse_events by focusing on approved drug applications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for searching approved drug applications by various criteria, but lacks explicit guidance on when to use this tool versus alternatives (e.g., for adverse events use search_drug_adverse_events). No 'when not to use' or prerequisite information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_drug_shortagesA
Search the FDA Drug Shortage Database for current and resolved drug shortages. Find shortages by generic drug name or status (Current/Resolved). Returns shortage details, posting dates, and resolution information.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of results to skip for pagination | |
| limit | No | Maximum results to return (1-100, default 10) | |
| status | No | Shortage status | |
| genericName | No | Generic drug name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions that results include shortage details, posting dates, and resolution information, but does not elaborate on pagination, rate limiting, or error handling. The description is functional but could be more transparent about behavior beyond basic output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long with no wasted words. It front-loads the main action and immediately specifies the resource and search criteria. Highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (4 parameters, none required, one enum) and complete schema descriptions, the description is mostly complete. It covers the main functionality and return types. Minor gap: the limit parameter's default (10) is in the schema but not in the description, but overall sufficient for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description mentions searching by generic name or status, which aligns with parameters, but does not add new meaning beyond what the schema provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that it searches the FDA Drug Shortage Database for current and resolved shortages by generic drug name or status. It specifies the resource (database) and the verb (search), and distinguishes from sibling tools which are for other FDA data types (devices, labels, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to search by generic drug name or status, providing clear use cases. However, it does not explicitly state when not to use this tool or name specific alternatives, though the sibling tools context implies different databases. This is adequate but not exemplary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_fda_drug_patent_expiryA
Unified patent expiry and exclusivity view across FDA Orange Book and optionally Purple Book. Search by drug name or application number. Returns patents sorted by earliest expiry date with associated exclusivity data. Set includePurpleBook=true to also include biologics data.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of results to skip for pagination | |
| limit | No | Maximum results to return (1-100, default 10) | |
| applNo | No | FDA application number | |
| drugName | No | Drug trade name or ingredient to search | |
| includePurpleBook | No | Include Purple Book biologics data (default: false) | |
| includeExclusivity | No | Include exclusivity data (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions sorting and default inclusion of exclusivity data, but does not disclose pagination behavior (skip/limit), what happens if both drugName and applNo are provided, or that it is a read operation. These gaps limit transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, front-loaded with core purpose, then usage details. No unnecessary words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description only vaguely says 'returns patents... with associated exclusivity data'. Lacks details on return fields or structure. Given complexity (unified view, optional parameter), more specifics on output would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all parameters have descriptions), so baseline is 3. Description mentions drugName, applNo, and includePurpleBook but not skip, limit, or includeExclusivity. It adds minimal extra meaning beyond what schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states unified patent expiry and exclusivity view across Orange Book and optionally Purple Book, distinguishing it from sibling tools that cover only one book. It specifies search by drug name or application number, and mentions sorting by earliest expiry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides explicit guidance on when to use the optional parameter includePurpleBook. However, it does not explicitly state when not to use this tool (e.g., for single-book queries) or mention alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_fda_orange_bookA
Search FDA Orange Book for approved drug products with therapeutic equivalence evaluations. Find drugs by trade name, ingredient, applicant, application number, or TE code. Returns product details, patent counts, and exclusivity counts. Data is downloaded from FDA bulk files and cached for 24 hours.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of results to skip for pagination | |
| limit | No | Maximum results to return (1-100, default 10) | |
| applNo | No | FDA application number | |
| teCode | No | Therapeutic equivalence code (e.g., 'AB', 'BX') | |
| drugName | No | Drug trade name or ingredient to search | |
| applicant | No | Applicant/company name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full transparency burden. It discloses that data is downloaded from FDA bulk files and cached for 24 hours, indicating data freshness. It does not mention destructive actions, authentication, or rate limits, but overall it gives a good behavioral overview. No contradiction with annotations (none exist).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no wasted words. It front-loads the core purpose, lists searchable parameters, mentions return values, and notes data caching. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters, no required ones, and no output schema, the description covers usage, return content, and data source. It could include pagination behavior or error handling hints, but for a search tool it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 6 parameters with descriptions, so schema_description_coverage is 100%. The description reiterates the main searchable fields but adds no additional detail beyond what the schema provides. Baseline 3 is appropriate because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the FDA Orange Book for approved drug products with therapeutic equivalence evaluations. It lists specific searchable fields (trade name, ingredient, applicant, application number, TE code) and mentions the return type (product details, patent counts, exclusivity counts). This distinguishes it from sibling tools like search_fda_purple_book (biological products) and others.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for finding drugs by various identifiers but does not explicitly state when not to use it or provide alternatives among the many sibling drug search tools. It lacks exclusion criteria, though the context is clear for Orange Book data. The description could guide agents away from using this for adverse events or recalls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_fda_orange_book_patentsA
Search FDA Orange Book patent data for drug products. Find patents by drug name, application number, or patent number. Returns patent details including expiry dates, substance/product/use flags, and associated exclusivities.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of results to skip for pagination | |
| limit | No | Maximum results to return (1-100, default 10) | |
| applNo | No | FDA application number | |
| drugName | No | Drug trade name or ingredient to search | |
| patentNo | No | Patent number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool returns patent details but does not disclose behavioral traits such as rate limits, pagination behavior (beyond parameters), or whether the action is read-only. The absence of any behavioral context beyond 'returns' is a gap but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action and resource. Every sentence adds value: first states what it does, second details search parameters and returns. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 5 optional parameters and no output schema, the description covers key inputs and typical outputs. It lacks mention of default limit or pagination behavior, but the schema partially compensates. Given sibling complexity (multiple FDA search tools), it sufficiently differentiates via patent-specific details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 5 parameters. The description only summarizes three of them (drugName, applNo, patentNo) without adding new meaning beyond the schema. For skip and limit, no additional context is provided. Baseline of 3 applies because schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search', the resource 'FDA Orange Book patent data', and the specific search fields (drug name, application number, patent number). It also lists return details (expiry dates, flags, exclusivities), making it distinct from sibling tools like search_fda_orange_book (general) and search_fda_drug_patent_expiry (focused on expiry).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for searching Orange Book patents via various criteria, but does not explicitly guide when to choose this tool over alternatives like search_fda_orange_book or search_fda_drug_patent_expiry. The 'Find patents by...' phrasing suggests capability but lacks exclusionary context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_fda_purple_bookA
Search FDA Purple Book for licensed biological products. Find biologics by product name, applicant, BLA number, license type (351(a)/351(k)), biosimilar status, or interchangeability. Returns product details, licensing status, and reference product information.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Number of results to skip for pagination | |
| limit | No | Maximum results to return (1-100, default 10) | |
| applicant | No | Applicant/company name | |
| blaNumber | No | Biologics License Application (BLA) number | |
| biosimilar | No | Filter for biosimilar products | |
| licenseType | No | License type: 351(a) for originator, 351(k) for biosimilar | |
| productName | No | Product proprietary or proper name to search | |
| interchangeable | No | Filter for interchangeable products |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It states the tool returns product details, licensing status, and reference product information, implying a read-only operation. No destructive behavior is mentioned, which is appropriate for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and every word adds value. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters and no output schema, the description adequately explains the tool's function and return content. It omits details about pagination or output structure, but these are covered by the schema. Slightly more context on what the return data looks like would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description summarizes searchable fields but does not add new meaning beyond the schema descriptions. It groups parameters (e.g., 'license type (351(a)/351(k))') but does not provide additional context for skip, limit, or applicant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the FDA Purple Book for licensed biological products, listing specific searchable fields (product name, applicant, BLA number, license type, biosimilar status, interchangeability). It distinguishes itself from siblings that search device or drug databases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for biologics, which differentiates it from drug and device sibling tools. However, it does not explicitly state when not to use or mention alternatives, such as using Orange Book for small molecules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
14 tool updates
v1.2.0- First observed
search_device_510k - First observed
search_device_adverse_events - First observed
search_device_classifications - First observed
search_device_recalls - First observed
search_drug_adverse_events - First observed
search_drug_labels - First observed
search_drug_ndc - First observed
search_drug_recalls - First observed
search_drug_shortages - First observed
search_drugs_at_fda - First observed
search_fda_drug_patent_expiry - First observed
search_fda_orange_book - First observed
search_fda_orange_book_patents - First observed
search_fda_purple_book
TDQS
Each tool targets a distinct domain and sub-domain (e.g., device vs. drug, 510k vs. recall), with clear prefixes that prevent confusion. Even similar tools like adverse events for devices and drugs are easily distinguishable.
All tools follow a consistent 'search_<domain>_<specific>' pattern, with underscores separating categories. No mixing of styles or vague verbs.
With 14 tools covering both medical devices and pharmaceuticals, the count is well-scoped for the breadth of data. Each tool addresses a specific query type without unnecessary duplication.
The set covers major FDA databases for devices (510k, recalls, classifications, adverse events) and drugs (labels, NDC, recalls, shortages, approved drugs), plus specialized resources like Orange Book and Purple Book. There are no obvious gaps for the stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
FDA MCP — US Food and Drug Administration public API (free, no auth)
NIH clinical trials and FDA adverse event reports. 4 MCP tools for health research.
OpenFDA MCP — wraps the openFDA API (free, no auth required)
MCP server for nonprofit financials via ProPublica — IRS Form 990 data for 1.8M+ nonprofits.
Related MCP Servers
- AlicenseBqualityFmaintenanceAn MCP server that provides comprehensive medical information by querying multiple authoritative medical APIs including FDA, WHO, PubMed, Google Scholar, and RxNorm.351171111MIT
- FlicenseBqualityCmaintenanceA comprehensive MCP server that provides access to U.S. FDA public datasets via the openFDA API, enabling querying of drug adverse events, labeling, recalls, approvals, shortages, NDC directory, and medical device regulatory data.1021-
- AlicenseNot gradedqualityDmaintenanceMCP server for clinical and pharmaceutical data, enabling search of ClinicalTrials.gov, PubMed, FDA, and ICH guidelines without API keys.45MIT
- AlicenseAqualityBmaintenanceAn MCP server that enables AI assistants to query U.S. FDA public datasets, including drug adverse events, labeling, recalls, approvals, shortages, NDC directory, and medical device regulatory information.10MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/sapientsai/openfda-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server