ClinicalTrials.gov API client and analysis toolkit. Search, filter, and download trial records. Analyze trial designs, endpoints, enrollment, sponsors, and results. Automate systematic trial discovery.
SkillScore95Maintained
Automatic
◆Clinical / Healthcare pack
Last verified 8/21/2026
What it changes
Passed 21 of 22 test cases with the skill, and 18 of 22 without it.
Without skill82%
With skill95%
Checks it passed that the model alone missed
The response sets the sort parameter to LastUpdateDate.
The response specifies pageSize as the parameter name for limiting results.
The response queries https://clinicaltrials.gov/api/v2/studies to search for matching studies.
3 fixed18 passed either way1 still failing0 broke
Pass-rate lift
+14 pp
Tokens
-11%
Agent turns
0%
Response time
-36%
Model gemini-3.6-flashMeasured 8/21/2026v121 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 3 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 3
Prompt
To get trial records sorted by their last update date, what parameter key and value does the API v2 search accept?
What was checked, without and with the skill
Checked
Without skill
With skill
The response sets the sort parameter to LastUpdateDate.
Missed
Passed
case-12 · gemini-3.6-flash · 8/21/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md49 linessingle file
Overview
Search, filter, and download clinical trial records from ClinicalTrials.gov. Analyze trial designs, endpoints, enrollment, sponsors, and results. Automate systematic trial discovery.
Installation
uv pip install requests
Search Trials
import requests
params = {
"query.term": "diabetes AND metformin AND phase 3",
"pageSize": 25,
"format": "json",
"sort": "LastUpdateDate",
}
resp = requests.get("https://clinicaltrials.gov/api/v2/studies", params=params)
data = resp.json()
for study in data.get("studies", []):
p = study["protocolSection"]
nct = p["identificationModule"]["nctId"]
title = p["identificationModule"]["briefTitle"]
status = p["statusModule"].get("overallStatus", "Unknown")
print(f"{nct}: {title[:60]} [{status}]")