get_recruiting_studies
Find currently recruiting clinical trials with contact details by filtering medical condition, location, and age group eligibility.
Instructions
Get currently recruiting clinical trials with contact information
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "get_recruiting_studies"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| condition | No | Medical condition to filter by | |
| location | No | Geographic location (city, state, country) | |
| ageGroup | No | Age group eligibility | |
| pageSize | No | Number of results to return (default 10, max 50) |
Implementation Reference
- src/index.ts:1385-1467 (handler)The handleGetRecruitingStudies method implements the logic for the "get_recruiting_studies" tool, querying the ClinicalTrials.gov API for studies with "RECRUITING" status.
private async handleGetRecruitingStudies(args: any) { const params: any = { format: "json", pageSize: args?.pageSize || 10, "filter.overallStatus": "RECRUITING", }; if (args?.condition) { params["query.cond"] = args.condition; } if (args?.location) { params["query.locn"] = args.location; } if (args?.ageGroup) { params["filter.stdAge"] = args.ageGroup; } try { const response: AxiosResponse<StudySearchResponse> = await this.axiosInstance.get("/studies", { params }); const studies = response.data.studies || []; const results = studies.map((study) => ({ ...this.formatStudySummary(study), eligibility: { sex: study.protocolSection.eligibilityModule?.sex || "Unknown", minimumAge: study.protocolSection.eligibilityModule?.minimumAge || "Not specified", maximumAge: study.protocolSection.eligibilityModule?.maximumAge || "Not specified", healthyVolunteers: study.protocolSection.eligibilityModule?.healthyVolunteers || false, }, locations: study.protocolSection.contactsLocationsModule?.locations?.slice( 0, 2 ) || [], })); return { content: [ { type: "text", text: JSON.stringify( { searchCriteria: { recruitmentStatus: "RECRUITING", condition: args?.condition, location: args?.location, ageGroup: args?.ageGroup, }, 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:368-395 (registration)Registration of the "get_recruiting_studies" tool with its input schema definition.
name: "get_recruiting_studies", description: "Get currently recruiting clinical trials with contact information", inputSchema: { type: "object", properties: { condition: { type: "string", description: "Medical condition to filter by", }, location: { type: "string", description: "Geographic location (city, state, country)", }, ageGroup: { type: "string", description: "Age group eligibility", enum: ["CHILD", "ADULT", "OLDER_ADULT"], }, pageSize: { type: "number", description: "Number of results to return (default 10, max 50)", minimum: 1, maximum: 50, }, }, }, },