search_by_sponsor
Find clinical trials by sponsor or organization to identify research studies funded by specific companies, institutions, or government agencies.
Instructions
Search clinical trials by sponsor or organization
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sponsor | Yes | Sponsor name or organization (e.g., "Pfizer", "National Cancer Institute") | |
| sponsorType | No | Type of sponsor | |
| pageSize | No | Number of results to return (default 10, max 100) |
Implementation Reference
- src/index.ts:1250-1315 (handler)The `handleSearchBySponsor` method implements the logic for the `search_by_sponsor` tool. It takes `sponsor` and `sponsorType` as arguments and queries the ClinicalTrials.gov API.
private async handleSearchBySponsor(args: any) { if (!args?.sponsor) { throw new McpError( ErrorCode.InvalidParams, "Sponsor parameter is required" ); } const params: any = { format: "json", pageSize: args?.pageSize || 10, "query.spons": args.sponsor, }; if (args?.sponsorType) { params["filter.leadSponsorClass"] = args.sponsorType; } try { const response: AxiosResponse<StudySearchResponse> = await this.axiosInstance.get("/studies", { params }); const studies = response.data.studies || []; const results = studies.map((study) => ({ ...this.formatStudySummary(study), sponsorDetails: study.protocolSection.sponsorCollaboratorsModule?.leadSponsor, })); return { content: [ { type: "text", text: JSON.stringify( { searchCriteria: { sponsor: args.sponsor, sponsorType: args.sponsorType, }, totalCount: response.data.totalCount || 0, resultsShown: results.length, studies: results, }, null, 2 ), }, ], }; } catch (error) { if (axios.isAxiosError(error)) { return { content: [ { type: "text", text: `Clinical Trials API error: ${ error.response?.data?.message || error.message }`, }, ], isError: true, }; } throw error; } } - src/index.ts:300-326 (registration)The tool `search_by_sponsor` is registered within the `ListToolsRequestSchema` handler in `src/index.ts`. It takes a `sponsor` string and optional `sponsorType` and `pageSize` arguments.
name: "search_by_sponsor", description: "Search clinical trials by sponsor or organization", inputSchema: { type: "object", properties: { sponsor: { type: "string", description: 'Sponsor name or organization (e.g., "Pfizer", "National Cancer Institute")', minLength: 2, }, sponsorType: { type: "string", description: "Type of sponsor", enum: ["INDUSTRY", "NIH", "FED", "OTHER"], }, pageSize: { type: "number", description: "Number of results to return (default 10, max 100)", minimum: 1, maximum: 100, }, }, required: ["sponsor"], }, },