openfda_recall_getter
Retrieve comprehensive FDA drug recall details, including product description, reason, distribution pattern, quantity, firm actions, and event timeline, using a specific recall number.
Instructions
Get detailed FDA drug recall information for a specific recall.
Returns complete recall details including:
- Full product description and code information
- Complete reason for recall
- Distribution pattern and locations
- Quantity of product recalled
- Firm information and actions taken
- Timeline of recall events
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Optional OpenFDA API key (overrides OPENFDA_API_KEY env var) | |
| recall_number | Yes | FDA recall number |
Implementation Reference
- src/biomcp/individual_tools.py:1704-1731 (handler)MCP tool definition including handler function, input schema via Pydantic Annotated Fields, and @mcp_app.tool() registration decorator. Delegates to openfda.get_drug_recall for core logic.@mcp_app.tool() @track_performance("biomcp.openfda_recall_getter") async def openfda_recall_getter( recall_number: Annotated[ str, Field(description="FDA recall number"), ], api_key: Annotated[ str | None, Field( description="Optional OpenFDA API key (overrides OPENFDA_API_KEY env var)" ), ] = None, ) -> str: """Get detailed FDA drug recall information for a specific recall. Returns complete recall details including: - Full product description and code information - Complete reason for recall - Distribution pattern and locations - Quantity of product recalled - Firm information and actions taken - Timeline of recall events """ from biomcp.openfda import get_drug_recall return await get_drug_recall(recall_number, api_key=api_key)
- Core helper function that performs the OpenFDA API request for a specific drug recall number, processes the response, and formats the detailed output using helper formatting functions.async def get_drug_recall( recall_number: str, api_key: str | None = None, ) -> str: """ Get detailed drug recall information for a specific recall. Args: recall_number: FDA recall number api_key: Optional OpenFDA API key (overrides OPENFDA_API_KEY env var) Returns: Formatted string with detailed recall information """ # Search for the specific recall search_params = {"search": f'recall_number:"{recall_number}"', "limit": 1} response, error = await make_openfda_request( OPENFDA_DRUG_ENFORCEMENT_URL, search_params, "openfda_recalls", api_key ) if error: return f"⚠️ Error retrieving drug recall: {error}" if not response or not response.get("results"): return f"No recall record found for {recall_number}" recall = response["results"][0] # Format detailed recall information output = [f"## Drug Recall Details: {recall_number}\n"] # Basic information output.extend(_format_recall_header(recall)) # Reason and details output.extend(_format_recall_details(recall)) # Distribution information output.extend(_format_distribution_info(recall)) # OpenFDA metadata if openfda := recall.get("openfda"): output.extend(_format_recall_openfda(openfda)) output.append(f"\n{OPENFDA_DISCLAIMER}") return "\n".join(output)
- src/biomcp/individual_tools.py:1704-1705 (registration)The @mcp_app.tool() decorator registers this function as an MCP tool named 'openfda_recall_getter'.@mcp_app.tool() @track_performance("biomcp.openfda_recall_getter")
- Pydantic-based input schema definition using Annotated with Field descriptions for tool parameters.recall_number: Annotated[ str, Field(description="FDA recall number"), ], api_key: Annotated[ str | None, Field( description="Optional OpenFDA API key (overrides OPENFDA_API_KEY env var)" ), ] = None,