ct_search
Pack: clinicaltrials · Connect: https://pipeworx.io/mcp (see Connect below for a single-pack URL)
No MCP client? Call it directly: GET https://gateway.pipeworx.io/v1/tools/ct_search for the schema, then POST the same URL with its arguments for the data.
Search ClinicalTrials.gov for clinical trials — find trials and look up a NAMED trial by keyword, condition, drug/therapy, status (e.g. ‘Recruiting’), or phase (e.g. ‘Phase 2’). Use for “clinical trials for <disease/drug>”, or to locate a specific study like “the FLOW trial”, “semaglutide kidney outcomes trial” (use ct_get_study for its full design/results). Returns NCT IDs, titles, status, enrollment, and sponsor info for the current page, PLUS conditions_summary — a condition-by-condition breakdown across ALL matches (not just this page), so “how many trials and what conditions do they cover” is answerable from one call. To see studies past the first page, call again with the SAME query/status/phase/sponsor and page_token set to the previous response’s next_page_token.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
query | string | yes | The SUBJECT of the search — a condition, drug, or keyword (e.g., “GLP-1 receptor agonist”, “breast cancer immunotherapy”). Prefer the topic alone over a full sentence: put status in status and phase in phase rather than in the text. Conversational framing is stripped automatically, and the term actually searched is echoed back as query_used. |
status | string | no | Filter by overall status: RECRUITING, ACTIVE_NOT_RECRUITING, COMPLETED, TERMINATED, WITHDRAWN, ENROLLING_BY_INVITATION, SUSPENDED, NOT_YET_RECRUITING. Several may be combined as a comma-separated union, e.g. “RECRUITING,NOT_YET_RECRUITING”. |
phase | string | no | Filter by phase: EARLY_PHASE1, PHASE1, PHASE2, PHASE3, PHASE4 (or NA). Roman numerals (“Phase III”) and comma-separated unions (“PHASE2,PHASE3”) are accepted. |
sponsor_match | string | no | |
sponsor | string | no | Filter by the trial’s registered LEAD sponsor (e.g., “Pfizer”, “Novo Nordisk”). Widen to trials the company only partners on with sponsor_match: “lead_or_collaborator”. |
limit | number | no | Number of results (1-100, default 10) |
page_token | string | no | Pass the previous call’s next_page_token here, with the SAME query/status/phase/sponsor arguments, to fetch studies past the first page. Omit it for a fresh search. A “continue listing”/“next page” follow-up means: re-call with this set, not a new query. |
Example call
Arguments
{
"query": "GLP-1 receptor agonist",
"status": "RECRUITING",
"phase": "PHASE2",
"limit": 20
}
curl
curl -X POST https://gateway.pipeworx.io/clinicaltrials/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ct_search","arguments":{"query":"GLP-1 receptor agonist","status":"RECRUITING","phase":"PHASE2","limit":20}}}'
TypeScript (@pipeworx/sdk)
import { Pipeworx } from '@pipeworx/sdk';
const pipeworx = new Pipeworx();
const result = await pipeworx.call('ct_search', {
"query": "GLP-1 receptor agonist",
"status": "RECRUITING",
"phase": "PHASE2",
"limit": 20
});
More examples
{
"query": "breast cancer immunotherapy",
"sponsor": "Pfizer",
"limit": 10
}
Response shape
Always returns: total_count, studies
| Field | Type | Description |
|---|---|---|
total_count | number | Total number of matching trials |
studies | array | List of formatted trial summaries |
Full JSON Schema
{
"type": "object",
"properties": {
"total_count": {
"type": "number",
"description": "Total number of matching trials"
},
"studies": {
"type": "array",
"description": "List of formatted trial summaries",
"items": {
"type": "object",
"properties": {
"nct_id": {
"type": [
"string",
"null"
],
"description": "NCT identifier"
},
"title": {
"type": [
"string",
"null"
],
"description": "Brief trial title"
},
"official_title": {
"type": [
"string",
"null"
],
"description": "Official trial title"
},
"status": {
"type": [
"string",
"null"
],
"description": "Overall trial status"
},
"phase": {
"type": [
"string",
"null"
],
"description": "Trial phase(s) comma-separated"
},
"enrollment": {
"type": [
"number",
"null"
],
"description": "Target enrollment count"
},
"enrollment_type": {
"type": [
"string",
"null"
],
"description": "Enrollment type (e.g., Actual, Anticipated)"
},
"conditions": {
"type": "array",
"description": "List of trial conditions",
"items": {
"type": "string"
}
},
"interventions": {
"type": "array",
"description": "List of interventions",
"items": {
"type": "object",
"properties": {
"type": {
"type": [
"string",
"null"
],
"description": "Intervention type"
},
"name": {
"type": [
"string",
"null"
],
"description": "Intervention name"
},
"description": {
"type": [
"string",
"null"
],
"description": "Intervention description"
}
}
}
},
"sponsor": {
"type": [
"string",
"null"
],
"description": "Lead sponsor name"
},
"sponsor_class": {
"type": [
"string",
"null"
],
"description": "Sponsor class"
},
"collaborators": {
"type": "array",
"description": "List of collaborator names",
"items": {
"type": "string"
}
},
"start_date": {
"type": [
"string",
"null"
],
"description": "Trial start date"
},
"primary_completion_date": {
"type": [
"string",
"null"
],
"description": "Primary completion date"
},
"completion_date": {
"type": [
"string",
"null"
],
"description": "Final completion date"
}
}
}
}
},
"required": [
"total_count",
"studies"
]
}
Connect
Add this to your MCP client config — every tool in the catalog, including this one — or use one-click install buttons:
{
"mcpServers": {
"pipeworx": {
"url": "https://pipeworx.io/mcp"
}
}
}
Connect to just the clinicaltrials pack
{
"mcpServers": {
"clinicaltrials": {
"url": "https://gateway.pipeworx.io/clinicaltrials/mcp"
}
}
}
See Getting Started for client-specific install steps.