Skip to content

Latest commit

 

History

History
32 lines (22 loc) · 4.49 KB

File metadata and controls

32 lines (22 loc) · 4.49 KB
summary search_studies fields description hardened against Sponsor/*List hallucinations; three tool descriptions anchor on "clinical trial"; framework bumped to 0.8.14 with skill sync.
breaking false

2.4.6 — 2026-05-04

Polish release. Two LLM-discoverability fixes against the tool surface, plus a routine framework bump and skill resync.

clinicaltrials_search_studies fields description gets a refined example set — LeadSponsorName restored inline (the canonical leaf was missing, and lowercase "sponsor" as the discovery-query example was being lifted as a field name in 4-session bursts), BriefSummary and Phase added, the discovery-query example switched to multi-word concepts ("adverse events", "eligibility") that can't be mistaken for PascalCase pieces. Validated against the live ClinicalTrials.gov /studies/metadata tree (454 piece names) — every example resolves, every previously-hallucinated form (Sponsor, ConditionList, InterventionList, LocationList) returns 400/500 upstream as the issue documented.

clinicaltrials_get_study_record, clinicaltrials_get_study_results, and clinicaltrials_get_study_count now anchor on "clinical trial" + "ClinicalTrials.gov" in their first-line description. Tool-search registries indexing by keyword no longer skip these three on a generic "clinical trial" query.

Changed

  • clinicaltrials_search_studies fields description — example set now NCTId, BriefTitle, BriefSummary, OverallStatus, Phase, LeadSponsorName, Condition (was NCTId, BriefTitle, OverallStatus, Condition, BriefSummary); LeadSponsorName and Phase added inline so the canonical leaves for the two most-hallucinated concepts are visible without a discovery call. Discovery-query example switched from "enrollment", "sponsor" to "adverse events", "eligibility" — multi-word, can't be mistaken for PascalCase field names. Resolves #36.
  • clinicaltrials_get_study_record descriptionFetch a single clinical study by NCT IDFetch a single clinical trial study by NCT ID from ClinicalTrials.gov. Resolves #43.
  • clinicaltrials_get_study_results descriptionFetch trial results data for completed studiesFetch clinical trial results data from ClinicalTrials.gov for completed studies. Resolves #43.
  • clinicaltrials_get_study_count descriptionGet total study count matching a queryGet total clinical trial study count from ClinicalTrials.gov matching a query. Resolves #43.
  • @cyanheads/mcp-ts-core 0.8.13 → 0.8.14disabledTool/DisabledMetadata now re-exported from the package root, new tool-defs-analysis audit skill, polished example definitions, Worker-runtime test harness via @cloudflare/vitest-pool-workers. See @cyanheads/mcp-ts-core 0.8.14 release notes.
  • @cloudflare/workers-types 4.20260503.1 → 4.20260505.1 (devDep).
  • Skills syncedtool-defs-analysis (new, v1.0), add-tool 2.6 → 2.7, api-errors 1.4 → 1.5, api-workers 1.2 → 1.3.
  • Agent protocolCLAUDE.md/AGENTS.md Errors section gained the "Declare contracts inline on each tool" guidance from upstream; tool-defs-analysis referenced in the What's Next list and skills table.

Added

  • scripts/split-changelog.ts — one-shot CHANGELOG migration helper synced from upstream framework scripts. Dormant in this project (changelog already migrated to per-version files).

Fixed

  • DEFAULT_MAX_RETRIES lowered from 6 to 3 in ClinicalTrialsService. With 1s base exponential backoff, 6 retries totalled ~63s of wall-clock burn on hard failures — too long for an LLM-driven tool call. The original 60s-burn case (invalid fields → upstream HTTP 500) is now caught in <100ms by pre-flight validateFields (added in 2.4.3), so the retry budget should serve transient failures only. New default: 1+2+4 = ~7s total. Production behavior change; tests using fastOptions already capped at 3 so test wall-clock is unaffected.
  • server.json phantom env var — removed CT_MAX_ELIGIBLE_CANDIDATES from both stdio and HTTP package descriptors. The variable was documented with a default of 100 but never read by any code in src/.