| name | trial-matcher |
| kind | oneshot |
| domain | trial |
| description | ClinicalTrials.gov v2 search for trials relevant to the patient's diagnosis and genes. Eligibility is surfaced as "may be eligible — confirm with your care team", never confirmed. Emits Tier C. |
trial-matcher
Query ClinicalTrials.gov v2 (/api/v2/studies) with a tight fields= list for
trials matching the diagnosis and genes. Emit Tier C EvidenceRecords.
Hard rule (spec §9): trial eligibility matching is a known-unsolved problem.
Eligibility text needs an LLM parse, and the result is surfaced as "may be
eligible — confirm with your care team", NEVER as confirmed eligibility. The code
gate must pass every rendered string.
STATUS: live via app/trials.py against the public ClinicalTrials.gov v2 REST
API (no MCP/auth needed). Runs only when BWCLS_LIVE_SOURCES=1; returns [] when
off so the suite stays deterministic. Emits Tier C hedged records; free-text titles
are gate-scanned and dropped if not clean. world-evidence-watch reuses the same
search_trials for its diff.
NOTE: ClinicalTrials.gov's WAF returns 403 to this build environment's datacenter IP,
so the live path is verified only by the offline tests (mocked API response) here; it
degrades calmly to an empty Tier C (no crash) when the API is unreachable. It should
work from a residential IP / the developer's machine. If the WAF blocks there too,
switch to the developer's ClinicalTrials.gov MCP connector.
TODO (optional): add an LLM eligibility parse (still surfaced only as "may be
eligible — confirm with your care team").