Skip to content

Latest commit

 

History

History
29 lines (20 loc) · 3.5 KB

File metadata and controls

29 lines (20 loc) · 3.5 KB
summary typed enum_invalid contract on search/count tools, always-on searchCriteria echo, get_study_count query parity, topEvents in summary mode, channel parity for results and record
breaking true
security false

2.6.0 — 2026-06-02

Added

  • enum_invalid error contract declared on search_studies and get_study_count (#57). The service already carried data.reason: 'enum_invalid' on the wire when statusFilter / phaseFilter received an invalid value; the contract declaration surfaces this to callers and enables TypeScript-level conformance. find_eligible is intentionally excluded — it hardcodes its status filter and exposes no status/phase param, so the path is unreachable from tool input.
  • sentinelFilterActive field in search_studies searchCriteria enrichment — set to true when includeUnknownEnrollment=false (the default) is in effect, so callers can tell why large-enrollment studies may be missing (#58).
  • locationQuery, titleQuery, outcomeQuery added to get_study_count input schema, matching the search_studies query surface (#59). No service change — buildSearchQuery already handled these params; they were only absent from the count tool definition.
  • topEvents in get_study_results summary mode (#61). The most frequent adverse events ranked by numAffected, aggregated across arms, capped at 20. Each row: term, organSystem, kind (serious | other), numAffected, numAtRisk. Answers "which AEs and how common" in ~5KB instead of the full ~450KB structure.

Changed

  • search_studies searchCriteria now echoes on every response, not only when results are empty (#58). Previously the enrichment was conditional on result.studies.length === 0; it is now unconditional.
  • get_study_results full mode — row caps removed from format() (#63). The previous events.slice(0, 20) and measures.slice(0, 15) truncations in renderEvents / formatBaseline are gone; format() now renders all rows handed to it, matching structuredContent. Use summary=true to reduce payload size.

Fixed

  • Channel parity for get_study_results and get_study_record (#63). content[] and structuredContent now carry the same data.
    • get_study_results: format() no longer truncates adverse-event or baseline rows (see Changed above).
    • get_study_record: structuredContent no longer embeds the full resultsSection — it was absent from content[], making the two channels diverge. A compact resultsSummary (outcome / adverse-event / baseline / participant-flow counts) replaces it; fetch full results via clinicaltrials_get_study_results or the clinicaltrials://{nctId} resource.

Breaking

  • get_study_record structuredContent no longer includes study.resultsSection. Callers that read structuredContent.study.resultsSection directly must switch to clinicaltrials_get_study_results or clinicaltrials://{nctId}. A resultsSummary counts object is available in the record for quick triage without fetching full results.