Fixed
- #18 get_study_record: format() now renders every populated field
(detailedDescription, otherOutcomes, collaborators, keywords,
secondary IDs, design info, submission/update dates, oversight,
IPD sharing, references). RawStudyShape expanded to match.
- #19 format-helpers: dropped the 3-item per-array cap in collectLeaves
that silently hid object-array data from content[]. Outer maxLines
budget continues to bound total output.
- #20 ClinicalTrialsService: retry hardened (3→6 retries, 8s→30s cap,
±25% proportional jitter). 429 exhaustion now throws distinct
McpError(RateLimited) instead of being lumped with 5xx
ServiceUnavailable. New ClinicalTrialsServiceOptions ctor arg for
test-friendly overrides.
- #21 get_study_count: format() iterates result.noMatchHints instead
of hardcoding the fallback string.
- #22 NCT ID regex: consolidated six inline sites into a shared
nctIdSchema (src/mcp-server/tools/utils/_schemas.ts). Two
previously-unmessaged sites now return the canonical error string.
- #23 get_study_results: wrapped getStudiesBatch in try/catch; batch-
wide failures map to per-ID fetchErrors entries. Removed the
companion all-failed throw so partial and total failure paths
return the same structured shape.
- #24 Framework bump: @cyanheads/mcp-ts-core ^0.4.1 → ^0.5.0;
adopted parseEnvConfig helper in src/config/server-config.ts.
Synced maintenance skill 1.2 → 1.3.
- #25 FieldValueStats: topValues and uniqueValuesCount marked
optional (API omits them for BOOLEAN fields); added trueCount/
falseCount to the interface. Empty topValues now renders an
explicit fallback line in content[].
Added
- src/mcp-server/tools/utils/_schemas.ts — shared Zod schemas
(starting with nctIdSchema)
- ClinicalTrialsServiceOptions — exported retry-config interface
- tests/mcp-server/tools/utils/format-helpers.test.ts
See CHANGELOG.md for the full entry and PR #26 for review history.