clinicaltrials_search_studies
ActiveTool of clinicaltrialsgov-mcp-server
Search for clinical trial studies from ClinicalTrials.gov. Supports full-text and field-specific queries, status/phase/geographic filters, pagination, sorting, and field selection. Returns a compact per-study index by default; pass the fields parameter to get specific leaves at full fidelity — full study records are ~70KB each.
Parameters schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"type": "string",
"description": "Sort order. Format: FieldName:asc or FieldName:desc. E.g., \"LastUpdatePostDate:desc\", \"EnrollmentCount:desc\". Max 2 fields comma-separated. For \"largest trials\" queries, pair EnrollmentCount:desc with advancedFilter \"AREA[StudyType]INTERVENTIONAL\" — the top enrollment counts are observational registry/claims studies enrolling tens of millions. Enrollment counts are sponsor-reported and not validated upstream beyond the unknown-enrollment sentinel exclusion. Use clinicaltrials_get_field_definitions to find sortable field names."
},
"query": {
"type": "string",
"description": "General free-text search across all fields. Plain words plus AND, OR, NOT. `[ ]` are reserved (advancedFilter AREA[] only); `( )` group sub-expressions and work when matched; `,` acts as AND. For field-scoped searches, use the dedicated *Query parameters (conditionQuery, interventionQuery, etc.) or advancedFilter with AREA[FieldName]value."
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "PascalCase leaf names to return; strongly recommended since full records are ~70KB. Common leaves: NCTId, BriefTitle, BriefSummary, OverallStatus, Phase, LeadSponsorName, Condition. Call clinicaltrials_get_field_definitions with a concept query (e.g., \"adverse events\", \"eligibility\") to find the exact leaf for any concept."
},
"nctIds": {
"anyOf": [
{
"type": "string",
"pattern": "^NCT\\d{8}$",
"description": "A single NCT ID."
},
{
"type": "array",
"items": {
"type": "string",
"pattern": "^NCT\\d{8}$"
},
"description": "Multiple NCT IDs (OR)."
}
],
"description": "Filter to specific NCT IDs for batch lookups."
},
"pageSize": {
"type": "integer",
"default": 10,
"maximum": 200,
"minimum": 1,
"description": "Results per page, 1–200."
},
"geoFilter": {
"type": "string",
"description": "Geographic proximity filter. Format: distance(lat,lon,radius). E.g., \"distance(47.6062,-122.3321,50mi)\" for studies within 50 miles of Seattle. When set, each study's locations are re-sorted by proximity to the center so the nearest matched site leads, annotated with its distance in miles; the full location list is preserved."
},
"pageToken": {
"type": "string",
"description": "Pagination cursor from a previous response."
},
"countTotal": {
"type": "boolean",
"default": true,
"description": "Include total study count in response. Only computed on the first page."
},
"titleQuery": {
"type": "string",
"description": "Search within study titles and acronyms only. Plain words plus AND/OR/NOT. `[ ]` are reserved; `( )` group sub-expressions when matched; `,` acts as AND."
},
"phaseFilter": {
"anyOf": [
{
"type": "string",
"description": "A single phase value."
},
{
"type": "array",
"items": {
"type": "string"
},
"description": "Multiple phase values (OR)."
}
],
"description": "Filter by trial phase. Values: EARLY_PHASE1, PHASE1, PHASE2, PHASE3, PHASE4, NA."
},
"outcomeQuery": {
"type": "string",
"description": "Search within outcome measure fields. Plain words plus AND/OR/NOT. `[ ]` are reserved; `( )` group sub-expressions when matched; `,` acts as AND."
},
"sponsorQuery": {
"type": "string",
"description": "Sponsor/collaborator name search. Plain words plus AND/OR/NOT. `[ ]` are reserved; `( )` group sub-expressions when matched; `,` acts as AND."
},
"statusFilter": {
"anyOf": [
{
"type": "string",
"description": "A single status value."
},
{
"type": "array",
"items": {
"type": "string"
},
"description": "Multiple status values (OR)."
}
],
"description": "Filter by study status. Values: RECRUITING, COMPLETED, ACTIVE_NOT_RECRUITING, NOT_YET_RECRUITING, ENROLLING_BY_INVITATION, SUSPENDED, TERMINATED, WITHDRAWN, UNKNOWN, WITHHELD, NO_LONGER_AVAILABLE, AVAILABLE, APPROVED_FOR_MARKETING, TEMPORARILY_NOT_AVAILABLE."
},
"locationQuery": {
"type": "string",
"description": "Location search — city, state, country, or facility name. Plain words plus AND/OR/NOT. `[ ]` are reserved; `( )` group sub-expressions when matched; `,` acts as AND."
},
"advancedFilter": {
"type": "string",
"description": "Advanced filter using AREA[FieldName]value syntax. Examples: \"AREA[StudyType]INTERVENTIONAL\", \"AREA[EnrollmentCount]RANGE[100, 1000]\", \"AREA[Phase]PHASE2 AND AREA[StudyType]INTERVENTIONAL\", \"(AREA[Phase]PHASE3 OR AREA[Phase]PHASE4) AND AREA[StudyType]INTERVENTIONAL\". AND/OR/NOT join complete AREA[FieldName]value expressions; parentheses group them. Call clinicaltrials_get_field_definitions to find AREA[]-compatible field names."
},
"conditionQuery": {
"type": "string",
"description": "Condition/disease-specific search. E.g., \"Type 2 Diabetes\", \"non-small cell lung cancer\". Plain words plus AND/OR/NOT. `[ ]` are reserved; `( )` group sub-expressions when matched; `,` acts as AND."
},
"interventionQuery": {
"type": "string",
"description": "Intervention/treatment search. E.g., \"pembrolizumab\", \"cognitive behavioral therapy\". Plain words plus AND/OR/NOT. `[ ]` are reserved; `( )` group sub-expressions when matched; `,` acts as AND."
},
"includeUnknownEnrollment": {
"type": "boolean",
"default": false,
"description": "Include studies whose EnrollmentCount is the upstream \"unknown\" sentinel (99999999). Excluded by default — the sentinel pollutes RANGE[N, MAX] queries and EnrollmentCount:desc sorts. Set true for data-quality audits or when targeting unknown-enrollment studies specifically."
}
}
}Parent server
clinicaltrialsgov-mcp-server
https://github.com/cyanheads/clinicaltrialsgov-mcp-server
3/7 registries