JSON-RPC 2.0 over HTTP (Streamable HTTP transport) at https://www.trial0.com/api/mcp. Stateless — no session to resume, so a dropped connection is a non-event. Implements initialize, tools/list, tools/call and ping.
{
"mcpServers": {
"trial0": {
"type": "http",
"url": "https://www.trial0.com/api/mcp",
"headers": {
"Authorization": "Bearer tr0_test_sandbox"
}
}
}
}
match_frontier_options
The /match endpoint as a tool: patient profile in, ranked frontier options with per-criterion match states out.
get_site_availability
Site-level availability for one NCT id — registry status for everyone, the verified overlay on Pro keys.
list_launch_conditions
The launch disease areas and intake vocabulary. Call it when unsure what `condition` accepts.
Every tool returns a readable text summary plus the full payload as structuredContent. The text keeps the match-state caveats attached, so a model relaying results to a human carries the “verify with the site” framing with it.
curl -s https://www.trial0.com/api/mcp \
-H 'authorization: Bearer tr0_test_sandbox' \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
curl -s https://www.trial0.com/api/mcp \
-H 'authorization: Bearer tr0_test_sandbox' \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "match_frontier_options",
"arguments": {
"condition": "pancreatic-cancer",
"stage": "Metastatic",
"biomarkers": ["KRAS G12C"],
"limit": 5
}
}
}'
Protocol errors follow JSON-RPC: -32601 for an unknown method, -32602 for bad params — and a -32602 carries the same known_keys the REST API would return.