---
summary: "Batch get_study_results via /studies?filter.ids (single request); lift 5-NCT-ID cap; fix field name references"
breaking: false
---

# 2.0.2 — 2026-03-28

### Changed

- **`clinicaltrials_get_study_results`** — Replaced N individual `/studies/{nctId}` requests with a single `GET /studies?filter.ids=...` batch request. All NCT IDs are fetched in one API call regardless of batch size, eliminating the serial-request bottleneck and rate-limit accumulation. Missing IDs are detected by cross-referencing the response against the requested IDs and reported in `fetchErrors`.
- **`clinicaltrials_get_study_results`** — Lifted the 5-NCT-ID cap. Input description updated to recommend `summary=true` for large batches to avoid large payloads. README updated accordingly.
- **`ClinicalTrialsService`** — Added `getStudiesBatch(nctIds, ctx)` method using `filter.ids` + `fields=NCTId|BriefTitle|HasResults|ResultsSection`.

### Fixed

- **`clinicaltrials_get_study_results`** — Corrected field name references in `summarizeParticipantFlow` (`flowGroups`→`groups`, `flowPeriods`→`periods`) and `summarizeBaseline` (`baselineGroups`→`groups`, `baselineMeasures`→`measures`) to match the actual ClinicalTrials.gov API response shape.
- **`clinicaltrials_get_study_results`** — Removed `frequencyModule` indirection in `summarizeAdverseEvents` and the format function; `timeFrame` is now read directly from `ae.timeFrame`.
- **`clinicaltrials_get_study_results`** — Extended format fallback chains for participant flow and baseline group/period counts (`numFlowGroups`, `numFlowPeriods`, `numBaselineGroups`) to improve resilience against API field shape variations.
