search_application_numbers
Find FDA drug application numbers (NDA, ANDA) by specific parameters like marketing category or set ID with paginated results for efficient searching.
Instructions
Search for FDA application numbers (NDA, ANDA, etc.) using various parameters with pagination support
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| application_number | No | Specific drug application number (e.g., NDA022527) | |
| marketing_category_code | No | Marketing category code for a drug | |
| setid | No | Set ID of a drug label | |
| page | No | Page number for pagination (1-based, default: 1) | |
| pageSize | No | Number of results per page (default: 100, max: 100) |
Implementation Reference
- The core logic for searching application numbers, interacting with the DailyMed API.
async searchApplicationNumbersAdvanced(params: ApplicationNumberSearchParams = {}): Promise<PaginatedApplicationNumberResponse> { const { page = 1, pageSize = 100, ...searchParams } = params; validatePaginationParams(page, pageSize, 100); try { const queryParams: any = { page, pagesize: Math.min(pageSize, 100), // API max is 100 }; // Add search filters if (searchParams.application_number) queryParams.application_number = searchParams.application_number; if (searchParams.marketing_category_code) queryParams.marketing_category_code = searchParams.marketing_category_code; if (searchParams.setid) queryParams.setid = searchParams.setid; const response = await this.client.get("/applicationnumbers.json", { params: queryParams, }); if ( response.data && response.data.data && Array.isArray(response.data.data) ) { const applicationNumbers = response.data.data.map((item: any) => ({ applicationNumber: item.application_number || item.applicationNumber, applicationNumberType: item.application_number_type || item.applicationNumberType, marketingCategoryCode: item.marketing_category_code || item.marketingCategoryCode, setId: item.setid, })); // Extract pagination metadata from API response const totalResults = response.data.metadata?.total_elements || applicationNumbers.length; const totalPages = Math.ceil(totalResults / pageSize); return { data: applicationNumbers, pagination: { page, pageSize, totalResults, totalPages, hasNextPage: page < totalPages, hasPreviousPage: page > 1, }, }; } else { throw new Error("Unexpected response structure for application number search"); } } catch (error) { throw new Error( `Failed to search application numbers: ${error instanceof Error ? error.message : "Unknown error"}`, ); } } - src/tools.ts:422-445 (registration)Tool definition and schema registration for search_application_numbers.
name: "search_application_numbers", description: "Search for FDA application numbers (NDA, ANDA, etc.) using various parameters with pagination support", inputSchema: { type: "object", properties: { application_number: { type: "string", description: "Specific drug application number (e.g., NDA022527)", }, marketing_category_code: { type: "string", description: "Marketing category code for a drug", }, setid: { type: "string", description: "Set ID of a drug label", }, page: { type: "number", description: "Page number for pagination (1-based, default: 1)", minimum: 1, }, pageSize: { type: "number", - src/index.ts:278-292 (handler)The request handler in the main server loop that maps the MCP tool call to the client implementation.
case "search_application_numbers": const appNumParams: any = {}; if (args.application_number) appNumParams.application_number = args.application_number as string; if (args.marketing_category_code) appNumParams.marketing_category_code = args.marketing_category_code as string; if (args.setid) appNumParams.setid = args.setid as string; // Add pagination parameters if (args.page) appNumParams.page = args.page as number; if (args.pageSize) appNumParams.pageSize = args.pageSize as number; const appNumResults = await this.client.searchApplicationNumbersAdvanced(appNumParams);